diff options
Diffstat (limited to 'src/citra_qt/bootmanager.cpp')
| -rw-r--r-- | src/citra_qt/bootmanager.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/citra_qt/bootmanager.cpp b/src/citra_qt/bootmanager.cpp index 9a29f974b..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..."); |