Просмотр исходного кода

Don't show render window until a game is started

archshift 11 лет назад
Родитель
Сommit
afd06675fa
2 измененных файлов с 13 добавлено и 4 удалено
  1. 11 4
      src/citra_qt/main.cpp
  2. 2 0
      src/citra_qt/main.h

+ 11 - 4
src/citra_qt/main.cpp

@@ -266,6 +266,7 @@ void GMainWindow::BootGame(const std::string& filename) {
     callstackWidget->OnDebugModeEntered();
     callstackWidget->OnDebugModeEntered();
     render_window->show();
     render_window->show();
 
 
+    emulation_running = true;
     OnStartGame();
     OnStartGame();
 }
 }
 
 
@@ -294,6 +295,8 @@ void GMainWindow::ShutdownGame() {
     ui.action_Pause->setEnabled(false);
     ui.action_Pause->setEnabled(false);
     ui.action_Stop->setEnabled(false);
     ui.action_Stop->setEnabled(false);
     render_window->hide();
     render_window->hide();
+
+    emulation_running = false;
 }
 }
 
 
 void GMainWindow::StoreRecentFile(const QString& filename)
 void GMainWindow::StoreRecentFile(const QString& filename)
@@ -423,17 +426,21 @@ void GMainWindow::ToggleWindowMode() {
         // Render in the main window...
         // Render in the main window...
         render_window->BackupGeometry();
         render_window->BackupGeometry();
         ui.horizontalLayout->addWidget(render_window);
         ui.horizontalLayout->addWidget(render_window);
-        render_window->setVisible(true);
         render_window->setFocusPolicy(Qt::ClickFocus);
         render_window->setFocusPolicy(Qt::ClickFocus);
-        render_window->setFocus();
+        if (emulation_running) {
+            render_window->setVisible(true);
+            render_window->setFocus();
+        }
 
 
     } else {
     } else {
         // Render in a separate window...
         // Render in a separate window...
         ui.horizontalLayout->removeWidget(render_window);
         ui.horizontalLayout->removeWidget(render_window);
         render_window->setParent(nullptr);
         render_window->setParent(nullptr);
-        render_window->setVisible(true);
-        render_window->RestoreGeometry();
         render_window->setFocusPolicy(Qt::NoFocus);
         render_window->setFocusPolicy(Qt::NoFocus);
+        if (emulation_running) {
+            render_window->setVisible(true);
+            render_window->RestoreGeometry();
+        }
     }
     }
 }
 }
 
 

+ 2 - 0
src/citra_qt/main.h

@@ -102,6 +102,8 @@ private:
 
 
     GRenderWindow* render_window;
     GRenderWindow* render_window;
 
 
+    // Whether emulation is currently running in Citra.
+    bool emulation_running = false;
     std::unique_ptr<EmuThread> emu_thread;
     std::unique_ptr<EmuThread> emu_thread;
 
 
     ProfilerWidget* profilerWidget;
     ProfilerWidget* profilerWidget;