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/DolphinQt2/MainWindow.cpp | |
| parent | 1b0f6a7d2e31ec5cd44be0376643941589a85f7b (diff) | |
| parent | 8ead5be9f25131917a962e6090761e0d11587578 (diff) | |
Merge pull request #6481 from spycrab/qt_fix_fs
Qt: Fix fullscreen
Diffstat (limited to 'Source/Core/DolphinQt2/MainWindow.cpp')
| -rw-r--r-- | Source/Core/DolphinQt2/MainWindow.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
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() |
