summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt2/MainWindow.cpp
diff options
context:
space:
mode:
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()