|
|
@@ -51,11 +51,11 @@ void EmuThread::run() {
|
|
|
Common::SetCurrentThreadName(name.c_str());
|
|
|
|
|
|
auto& system = Core::System::GetInstance();
|
|
|
+ auto& gpu = system.GPU();
|
|
|
+ auto stop_token = stop_source.get_token();
|
|
|
|
|
|
system.RegisterHostThread();
|
|
|
|
|
|
- auto& gpu = system.GPU();
|
|
|
-
|
|
|
// Main process has been loaded. Make the context current to this thread and begin GPU and CPU
|
|
|
// execution.
|
|
|
gpu.Start();
|
|
|
@@ -65,7 +65,7 @@ void EmuThread::run() {
|
|
|
emit LoadProgress(VideoCore::LoadCallbackStage::Prepare, 0, 0);
|
|
|
|
|
|
system.Renderer().ReadRasterizer()->LoadDiskResources(
|
|
|
- system.CurrentProcess()->GetTitleID(), stop_run,
|
|
|
+ system.CurrentProcess()->GetTitleID(), stop_token,
|
|
|
[this](VideoCore::LoadCallbackStage stage, std::size_t value, std::size_t total) {
|
|
|
emit LoadProgress(stage, value, total);
|
|
|
});
|
|
|
@@ -78,7 +78,7 @@ void EmuThread::run() {
|
|
|
// so that the DebugModeLeft signal can be emitted before the
|
|
|
// next execution step
|
|
|
bool was_active = false;
|
|
|
- while (!stop_run) {
|
|
|
+ while (!stop_token.stop_requested()) {
|
|
|
if (running) {
|
|
|
if (was_active) {
|
|
|
emit DebugModeLeft();
|
|
|
@@ -100,7 +100,7 @@ void EmuThread::run() {
|
|
|
}
|
|
|
running_guard = false;
|
|
|
|
|
|
- if (!stop_run) {
|
|
|
+ if (!stop_token.stop_requested()) {
|
|
|
was_active = true;
|
|
|
emit DebugModeEntered();
|
|
|
}
|
|
|
@@ -108,7 +108,7 @@ void EmuThread::run() {
|
|
|
UNIMPLEMENTED();
|
|
|
} else {
|
|
|
std::unique_lock lock{running_mutex};
|
|
|
- running_cv.wait(lock, [this] { return IsRunning() || exec_step || stop_run; });
|
|
|
+ running_cv.wait(lock, stop_token, [this] { return IsRunning() || exec_step; });
|
|
|
}
|
|
|
}
|
|
|
|