From 855f97841dffcc2bd75f8c0f6cdb48c2d42a8f08 Mon Sep 17 00:00:00 2001 From: skidau Date: Tue, 8 Feb 2011 10:37:47 +0000 Subject: Paused the video thread while a save state was being created or loaded. Performed the save state operation after the fifo became idle. Saved the interrupt status of the video thread into the save state. This helps stabilise the save states in dual core mode in games like Super Mario Galaxy. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7112 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/VideoCommon/Src/MainBase.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'Source/Core/VideoCommon/Src/MainBase.cpp') diff --git a/Source/Core/VideoCommon/Src/MainBase.cpp b/Source/Core/VideoCommon/Src/MainBase.cpp index 409b141d9f..2a3f0b2564 100644 --- a/Source/Core/VideoCommon/Src/MainBase.cpp +++ b/Source/Core/VideoCommon/Src/MainBase.cpp @@ -179,7 +179,8 @@ static volatile struct // Depending on the threading mode (DC/SC) this can be called // from either the GPU thread or the CPU thread -static void check_DoState() { +void VideoFifo_CheckStateRequest() +{ if (Common::AtomicLoadAcquire(s_doStateRequested)) { // Clear all caches that touch RAM @@ -215,14 +216,18 @@ void VideoBackendHLE::DoState(PointerWrap& p) Common::YieldCPU(); } else - check_DoState(); + VideoFifo_CheckStateRequest(); +} + +void VideoBackendHLE::RunLoop(bool enable) +{ + VideoCommon_RunLoop(enable); } void VideoFifo_CheckAsyncRequest() { VideoFifo_CheckSwapRequest(); VideoFifo_CheckEFBAccess(); - check_DoState(); } void VideoBackend::Video_GatherPipeBursted() -- cgit v1.2.3