summaryrefslogtreecommitdiffstats
path: root/src/core/core.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/core.cpp')
-rw-r--r--src/core/core.cpp34
1 files changed, 19 insertions, 15 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp
index 4abf037e2..3042d611b 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -163,19 +163,19 @@ struct System::Impl {
return status;
}
- void stallForGPU(bool pause) {
- if (pause) {
- suspend_guard.lock();
- kernel.Suspend(pause);
- core_timing.SyncPause(pause);
- cpu_manager.Pause(pause);
- } else {
- if (!is_paused) {
- core_timing.SyncPause(pause);
- kernel.Suspend(pause);
- cpu_manager.Pause(pause);
- }
- suspend_guard.unlock();
+ std::unique_lock<std::mutex> StallCPU() {
+ std::unique_lock<std::mutex> lk(suspend_guard);
+ kernel.Suspend(true);
+ core_timing.SyncPause(true);
+ cpu_manager.Pause(true);
+ return lk;
+ }
+
+ void UnstallCPU() {
+ if (!is_paused) {
+ core_timing.SyncPause(false);
+ kernel.Suspend(false);
+ cpu_manager.Pause(false);
}
}
@@ -487,8 +487,12 @@ void System::Shutdown() {
impl->Shutdown();
}
-void System::stallForGPU(bool pause) {
- impl->stallForGPU(pause);
+std::unique_lock<std::mutex> System::StallCPU() {
+ return impl->StallCPU();
+}
+
+void System::UnstallCPU() {
+ impl->UnstallCPU();
}
SystemResultStatus System::Load(Frontend::EmuWindow& emu_window, const std::string& filepath,