summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt2/MainWindow.cpp
diff options
context:
space:
mode:
authorAnthony <Helios747@users.noreply.github.com>2018-03-21 16:44:54 -0700
committerGitHub <noreply@github.com>2018-03-21 16:44:54 -0700
commit30ccaa3fd5f768362c042fe2476e02beb43d8b3d (patch)
tree498ccdd9bd79ee481046dc16a6e9f31190268979 /Source/Core/DolphinQt2/MainWindow.cpp
parent1b0f6a7d2e31ec5cd44be0376643941589a85f7b (diff)
parent8ead5be9f25131917a962e6090761e0d11587578 (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.cpp24
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()