address some problems with fast forward vs vsync (mostly, it not working)

This commit is contained in:
zeromus 2014-10-11 09:01:50 +00:00
parent 6428b07d0a
commit 86e24011ae
2 changed files with 17 additions and 1 deletions

View File

@ -600,6 +600,14 @@ TESTEROO:
Debug.Assert(inFinalTarget);
//apply the vsync setting (should probably try to avoid repeating this)
bool vsync = Global.Config.VSyncThrottle || Global.Config.VSync;
//ok, now this is a bit undesireable.
//maybe the user wants vsync, but not vsync throttle.
//this makes sense... but we dont have the infrastructure to support it now (we'd have to enable triple buffering or something like that)
//so what we're gonna do is disable vsync no matter what if throttling is off, and maybe nobody will notice.
if (Global.ForceNoThrottle)
vsync = false;
if (LastVsyncSetting != vsync || LastVsyncSettingGraphicsControl != presentationPanel.GraphicsControl)
{
presentationPanel.GraphicsControl.SetVsync(vsync);

View File

@ -1650,9 +1650,17 @@ namespace BizHawk.Client.EmuHawk
private void SyncThrottle()
{
//TODO - this is a bit confusing. theres a difference between signal_unthrottle and Global.ForceNoThrottle. Isn't that kind of weird?
//someone should evaluate these different modes and clean that up.
//TODO - did we change 'unthrottled' nomenclature to turbo? is turbo defined as 'temporarily disable throttle entirely'?
var fastforward = Global.ClientControls["Fast Forward"] || FastForward;
var superfastforward = IsTurboing;
Global.ForceNoThrottle = _unthrottled || fastforward;
//zero 11-oct-2014 - i think this is more correct..
//Global.ForceNoThrottle = _unthrottled || fastforward;
Global.ForceNoThrottle = _unthrottled || fastforward || superfastforward;
// realtime throttle is never going to be so exact that using a double here is wrong
_throttle.SetCoreFps(Global.Emulator.CoreComm.VsyncRate);