summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/citra_qt/bootmanager.cpp5
-rw-r--r--src/citra_qt/bootmanager.h6
-rw-r--r--src/citra_qt/main.cpp4
3 files changed, 15 insertions, 0 deletions
diff --git a/src/citra_qt/bootmanager.cpp b/src/citra_qt/bootmanager.cpp
index 610707411..7a1360d34 100644
--- a/src/citra_qt/bootmanager.cpp
+++ b/src/citra_qt/bootmanager.cpp
@@ -219,6 +219,11 @@ QByteArray GRenderWindow::saveGeometry()
219 return geometry; 219 return geometry;
220} 220}
221 221
222void GRenderWindow::closeEvent(QCloseEvent* event) {
223 emit Closed();
224 QWidget::closeEvent(event);
225}
226
222void GRenderWindow::keyPressEvent(QKeyEvent* event) 227void GRenderWindow::keyPressEvent(QKeyEvent* event)
223{ 228{
224 this->KeyPressed({event->key(), keyboard_id}); 229 this->KeyPressed({event->key(), keyboard_id});
diff --git a/src/citra_qt/bootmanager.h b/src/citra_qt/bootmanager.h
index 5b52a0a58..dc422358e 100644
--- a/src/citra_qt/bootmanager.h
+++ b/src/citra_qt/bootmanager.h
@@ -110,6 +110,8 @@ public:
110 void restoreGeometry(const QByteArray& geometry); // overridden 110 void restoreGeometry(const QByteArray& geometry); // overridden
111 QByteArray saveGeometry(); // overridden 111 QByteArray saveGeometry(); // overridden
112 112
113 void closeEvent(QCloseEvent* event) override;
114
113 void keyPressEvent(QKeyEvent* event) override; 115 void keyPressEvent(QKeyEvent* event) override;
114 void keyReleaseEvent(QKeyEvent* event) override; 116 void keyReleaseEvent(QKeyEvent* event) override;
115 117
@@ -129,6 +131,10 @@ public slots:
129 void OnEmulationStarting(EmuThread* emu_thread); 131 void OnEmulationStarting(EmuThread* emu_thread);
130 void OnEmulationStopping(); 132 void OnEmulationStopping();
131 133
134signals:
135 /// Emitted when the window is closed
136 void Closed();
137
132private: 138private:
133 void OnMinimalClientAreaChangeRequest(const std::pair<unsigned,unsigned>& minimal_size) override; 139 void OnMinimalClientAreaChangeRequest(const std::pair<unsigned,unsigned>& minimal_size) override;
134 140
diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp
index d2c7459a4..01841b33c 100644
--- a/src/citra_qt/main.cpp
+++ b/src/citra_qt/main.cpp
@@ -252,6 +252,7 @@ void GMainWindow::BootGame(const std::string& filename) {
252 render_window->moveContext(); 252 render_window->moveContext();
253 emu_thread->start(); 253 emu_thread->start();
254 254
255 connect(render_window, SIGNAL(Closed()), this, SLOT(OnStopGame()));
255 // BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views before the CPU continues 256 // BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views before the CPU continues
256 connect(emu_thread.get(), SIGNAL(DebugModeEntered()), disasmWidget, SLOT(OnDebugModeEntered()), Qt::BlockingQueuedConnection); 257 connect(emu_thread.get(), SIGNAL(DebugModeEntered()), disasmWidget, SLOT(OnDebugModeEntered()), Qt::BlockingQueuedConnection);
257 connect(emu_thread.get(), SIGNAL(DebugModeEntered()), registersWidget, SLOT(OnDebugModeEntered()), Qt::BlockingQueuedConnection); 258 connect(emu_thread.get(), SIGNAL(DebugModeEntered()), registersWidget, SLOT(OnDebugModeEntered()), Qt::BlockingQueuedConnection);
@@ -284,6 +285,9 @@ void GMainWindow::ShutdownGame() {
284 emu_thread->wait(); 285 emu_thread->wait();
285 emu_thread = nullptr; 286 emu_thread = nullptr;
286 287
288 // The emulation is stopped, so closing the window or not does not matter anymore
289 disconnect(render_window, SIGNAL(Closed()), this, SLOT(OnStopGame()));
290
287 // Update the GUI 291 // Update the GUI
288 ui.action_Start->setEnabled(false); 292 ui.action_Start->setEnabled(false);
289 ui.action_Start->setText(tr("Start")); 293 ui.action_Start->setText(tr("Start"));