diff options
| author | Anthony <Helios747@users.noreply.github.com> | 2018-03-21 16:44:54 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-03-21 16:44:54 -0700 |
| commit | 30ccaa3fd5f768362c042fe2476e02beb43d8b3d (patch) | |
| tree | 498ccdd9bd79ee481046dc16a6e9f31190268979 /Source/Core | |
| parent | 1b0f6a7d2e31ec5cd44be0376643941589a85f7b (diff) | |
| parent | 8ead5be9f25131917a962e6090761e0d11587578 (diff) | |
Merge pull request #6481 from spycrab/qt_fix_fs
Qt: Fix fullscreen
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/DolphinQt2/Debugger/CodeWidget.cpp | 3 | ||||
| -rw-r--r-- | Source/Core/DolphinQt2/MainWindow.cpp | 24 | ||||
| -rw-r--r-- | Source/Core/DolphinQt2/MainWindow.h | 2 | ||||
| -rw-r--r-- | Source/Core/DolphinQt2/RenderWidget.cpp | 6 | ||||
| -rw-r--r-- | Source/Core/DolphinQt2/RenderWidget.h | 1 |
5 files changed, 25 insertions, 11 deletions
diff --git a/Source/Core/DolphinQt2/Debugger/CodeWidget.cpp b/Source/Core/DolphinQt2/Debugger/CodeWidget.cpp index 60cc600ea1..8c78d507cd 100644 --- a/Source/Core/DolphinQt2/Debugger/CodeWidget.cpp +++ b/Source/Core/DolphinQt2/Debugger/CodeWidget.cpp @@ -247,6 +247,9 @@ void CodeWidget::Update() void CodeWidget::UpdateCallstack() { + if (Core::GetState() == Core::State::Starting) + return; + m_callstack_list->clear(); std::vector<Dolphin_Debugger::CallstackEntry> stack; diff --git a/Source/Core/DolphinQt2/MainWindow.cpp b/Source/Core/DolphinQt2/MainWindow.cpp index b8b5e716a6..b7779dc159 100644 --- a/Source/Core/DolphinQt2/MainWindow.cpp +++ b/Source/Core/DolphinQt2/MainWindow.cpp @@ -566,7 +566,7 @@ void MainWindow::FullScreen() // settings. If it's set to be fullscreen then it just remakes the window, // which probably isn't ideal. bool was_fullscreen = m_render_widget->isFullScreen(); - HideRenderWidget(); + HideRenderWidget(false); if (was_fullscreen) ShowRenderWidget(); else @@ -630,7 +630,7 @@ void MainWindow::ShowRenderWidget() { // Otherwise, just show it. m_rendering_to_main = false; - if (SConfig::GetInstance().bFullscreen) + if (SConfig::GetInstance().bFullscreen && !m_render_widget->isFullScreen()) { m_render_widget->showFullScreen(); } @@ -642,7 +642,7 @@ void MainWindow::ShowRenderWidget() } } -void MainWindow::HideRenderWidget() +void MainWindow::HideRenderWidget(bool reinit) { if (m_rendering_to_main) { @@ -655,19 +655,23 @@ void MainWindow::HideRenderWidget() setWindowTitle(QString::fromStdString(Common::scm_rev_str)); } + m_render_widget->hide(); + // The following code works around a driver bug that would lead to Dolphin crashing when changing // graphics backends (e.g. OpenGL to Vulkan). To avoid this the render widget is (safely) // recreated - disconnect(m_render_widget, &RenderWidget::Closed, this, &MainWindow::ForceStop); + if (reinit) + { + disconnect(m_render_widget, &RenderWidget::Closed, this, &MainWindow::ForceStop); - m_render_widget->hide(); - m_render_widget->removeEventFilter(this); - m_render_widget->deleteLater(); + m_render_widget->removeEventFilter(this); + m_render_widget->deleteLater(); - m_render_widget = new RenderWidget; + m_render_widget = new RenderWidget; - m_render_widget->installEventFilter(this); - connect(m_render_widget, &RenderWidget::Closed, this, &MainWindow::ForceStop); + m_render_widget->installEventFilter(this); + connect(m_render_widget, &RenderWidget::Closed, this, &MainWindow::ForceStop); + } } void MainWindow::ShowControllersWindow() diff --git a/Source/Core/DolphinQt2/MainWindow.h b/Source/Core/DolphinQt2/MainWindow.h index 47fa09f287..e324185385 100644 --- a/Source/Core/DolphinQt2/MainWindow.h +++ b/Source/Core/DolphinQt2/MainWindow.h @@ -100,7 +100,7 @@ private: void StartGame(const std::string& path, const std::optional<std::string>& savestate_path = {}); void StartGame(std::unique_ptr<BootParameters>&& parameters); void ShowRenderWidget(); - void HideRenderWidget(); + void HideRenderWidget(bool reinit = true); void ShowSettingsWindow(); void ShowGeneralWindow(); diff --git a/Source/Core/DolphinQt2/RenderWidget.cpp b/Source/Core/DolphinQt2/RenderWidget.cpp index 019cae9975..879f318ecf 100644 --- a/Source/Core/DolphinQt2/RenderWidget.cpp +++ b/Source/Core/DolphinQt2/RenderWidget.cpp @@ -49,6 +49,12 @@ void RenderWidget::HandleCursorTimer() setCursor(Qt::BlankCursor); } +void RenderWidget::showFullScreen() +{ + QWidget::showFullScreen(); + emit SizeChanged(width(), height()); +} + bool RenderWidget::event(QEvent* event) { switch (event->type()) diff --git a/Source/Core/DolphinQt2/RenderWidget.h b/Source/Core/DolphinQt2/RenderWidget.h index 4a01c0ac1f..565fdb9243 100644 --- a/Source/Core/DolphinQt2/RenderWidget.h +++ b/Source/Core/DolphinQt2/RenderWidget.h @@ -17,6 +17,7 @@ public: explicit RenderWidget(QWidget* parent = nullptr); bool event(QEvent* event) override; + void showFullScreen(); signals: void EscapePressed(); |
