diff --git a/pcsx2/gui/AppMain.cpp b/pcsx2/gui/AppMain.cpp index 366f8a98ff..9ba3860d73 100644 --- a/pcsx2/gui/AppMain.cpp +++ b/pcsx2/gui/AppMain.cpp @@ -519,7 +519,7 @@ extern uint eecount_on_last_vdec; extern bool FMVstarted; extern bool EnableFMV; extern bool renderswitch; -extern uint do_renderswitch; +extern uint renderswitch_delay; void DoFmvSwitch(bool on) { @@ -535,8 +535,11 @@ void DoFmvSwitch(bool on) viewport->DoResize(); } - if (EmuConfig.Gamefixes.FMVinSoftwareHack) - do_renderswitch = -1; + if (EmuConfig.Gamefixes.FMVinSoftwareHack) { + ScopedCoreThreadPause paused_core(new SysExecEvent_SaveSinglePlugin(PluginId_GS)); + renderswitch = !renderswitch; + paused_core.AllowResume(); + } } void Pcsx2App::LogicalVsync() @@ -566,13 +569,7 @@ void Pcsx2App::LogicalVsync() } } - if (do_renderswitch == -1) { - ScopedCoreThreadPause paused_core(new SysExecEvent_SaveSinglePlugin(PluginId_GS)); - renderswitch = !renderswitch; - paused_core.AllowResume(); - } - - do_renderswitch >>= 1; + renderswitch_delay >>= 1; // Only call PADupdate here if we're using GSopen2. Legacy GSopen plugins have the // GS window belonging to the MTGS thread. diff --git a/pcsx2/gui/GlobalCommands.cpp b/pcsx2/gui/GlobalCommands.cpp index 9ddb86cf5b..f4546575ba 100644 --- a/pcsx2/gui/GlobalCommands.cpp +++ b/pcsx2/gui/GlobalCommands.cpp @@ -35,7 +35,7 @@ // renderswitch - tells GSdx to go into dx9 sw if "renderswitch" is set. bool renderswitch = false; -uint do_renderswitch = 0; +uint renderswitch_delay = 0; extern bool switchAR; @@ -362,8 +362,13 @@ namespace Implementations void Sys_RenderToggle() { - if (do_renderswitch == 0) - do_renderswitch = -1; + if(renderswitch_delay == 0) + { + ScopedCoreThreadPause paused_core( new SysExecEvent_SaveSinglePlugin(PluginId_GS) ); + renderswitch = !renderswitch; + paused_core.AllowResume(); + renderswitch_delay = -1; + } } void Sys_LoggingToggle()