diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/citra_qt/bootmanager.cpp | 5 | ||||
| -rw-r--r-- | src/citra_qt/bootmanager.h | 6 | ||||
| -rw-r--r-- | src/citra_qt/main.cpp | 4 |
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 | ||
| 222 | void GRenderWindow::closeEvent(QCloseEvent* event) { | ||
| 223 | emit Closed(); | ||
| 224 | QWidget::closeEvent(event); | ||
| 225 | } | ||
| 226 | |||
| 222 | void GRenderWindow::keyPressEvent(QKeyEvent* event) | 227 | void 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 | ||
| 134 | signals: | ||
| 135 | /// Emitted when the window is closed | ||
| 136 | void Closed(); | ||
| 137 | |||
| 132 | private: | 138 | private: |
| 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")); |