diff options
Diffstat (limited to 'src/citra_qt/bootmanager.cpp')
| -rw-r--r-- | src/citra_qt/bootmanager.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/citra_qt/bootmanager.cpp b/src/citra_qt/bootmanager.cpp index 9bf079919..b53206be6 100644 --- a/src/citra_qt/bootmanager.cpp +++ b/src/citra_qt/bootmanager.cpp | |||
| @@ -14,6 +14,8 @@ | |||
| 14 | #include "core/core.h" | 14 | #include "core/core.h" |
| 15 | #include "core/settings.h" | 15 | #include "core/settings.h" |
| 16 | 16 | ||
| 17 | #include "video_core/debug_utils/debug_utils.h" | ||
| 18 | |||
| 17 | #include "video_core/video_core.h" | 19 | #include "video_core/video_core.h" |
| 18 | 20 | ||
| 19 | #include "citra_qt/version.h" | 21 | #include "citra_qt/version.h" |
| @@ -65,14 +67,21 @@ void EmuThread::Stop() | |||
| 65 | } | 67 | } |
| 66 | stop_run = true; | 68 | stop_run = true; |
| 67 | 69 | ||
| 70 | // Release emu threads from any breakpoints, so that this doesn't hang forever. | ||
| 71 | Pica::g_debug_context->ClearBreakpoints(); | ||
| 72 | |||
| 68 | //core::g_state = core::SYS_DIE; | 73 | //core::g_state = core::SYS_DIE; |
| 69 | 74 | ||
| 70 | wait(500); | 75 | // TODO: Waiting here is just a bad workaround for retarded shutdown logic. |
| 76 | wait(1000); | ||
| 71 | if (isRunning()) | 77 | if (isRunning()) |
| 72 | { | 78 | { |
| 73 | WARN_LOG(MASTER_LOG, "EmuThread still running, terminating..."); | 79 | WARN_LOG(MASTER_LOG, "EmuThread still running, terminating..."); |
| 74 | quit(); | 80 | quit(); |
| 75 | wait(1000); | 81 | |
| 82 | // TODO: Waiting 50 seconds can be necessary if the logging subsystem has a lot of spam | ||
| 83 | // queued... This should be fixed. | ||
| 84 | wait(50000); | ||
| 76 | if (isRunning()) | 85 | if (isRunning()) |
| 77 | { | 86 | { |
| 78 | WARN_LOG(MASTER_LOG, "EmuThread STILL running, something is wrong here..."); | 87 | WARN_LOG(MASTER_LOG, "EmuThread STILL running, something is wrong here..."); |
| @@ -230,7 +239,7 @@ QByteArray GRenderWindow::saveGeometry() | |||
| 230 | { | 239 | { |
| 231 | // If we are a top-level widget, store the current geometry | 240 | // If we are a top-level widget, store the current geometry |
| 232 | // otherwise, store the last backup | 241 | // otherwise, store the last backup |
| 233 | if (parent() == NULL) | 242 | if (parent() == nullptr) |
| 234 | return ((QGLWidget*)this)->saveGeometry(); | 243 | return ((QGLWidget*)this)->saveGeometry(); |
| 235 | else | 244 | else |
| 236 | return geometry; | 245 | return geometry; |