summaryrefslogtreecommitdiff
path: root/Source/Core
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
parent1b0f6a7d2e31ec5cd44be0376643941589a85f7b (diff)
parent8ead5be9f25131917a962e6090761e0d11587578 (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.cpp3
-rw-r--r--Source/Core/DolphinQt2/MainWindow.cpp24
-rw-r--r--Source/Core/DolphinQt2/MainWindow.h2
-rw-r--r--Source/Core/DolphinQt2/RenderWidget.cpp6
-rw-r--r--Source/Core/DolphinQt2/RenderWidget.h1
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();