From a88c78eba3ee8d80e64cd3cc96081d3aa28134eb Mon Sep 17 00:00:00 2001 From: "Dr. Chat" Date: Wed, 23 Nov 2016 11:56:57 -0600 Subject: [PATCH] Allow the kernel dispatch thread to be suspended after being initialized --- src/xenia/kernel/kernel_state.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/xenia/kernel/kernel_state.cc b/src/xenia/kernel/kernel_state.cc index 0fa321c63..5cb8be150 100644 --- a/src/xenia/kernel/kernel_state.cc +++ b/src/xenia/kernel/kernel_state.cc @@ -330,6 +330,9 @@ void KernelState::SetExecutableModule(object_ref module) { dispatch_thread_running_ = true; dispatch_thread_ = object_ref(new XHostThread(this, 128 * 1024, 0, [this]() { + // As we run guest callbacks the debugger must be able to suspend us. + dispatch_thread_->set_can_debugger_suspend(true); + while (dispatch_thread_running_) { auto global_lock = global_critical_region_.Acquire(); if (dispatch_queue_.empty()) { @@ -344,8 +347,6 @@ void KernelState::SetExecutableModule(object_ref module) { } return 0; })); - // As we run guest callbacks the debugger must be able to suspend us. - dispatch_thread_->set_can_debugger_suspend(true); dispatch_thread_->set_name("Kernel Dispatch Thread"); dispatch_thread_->Create(); }