misc: chore: [ci skip] VSync progression as an extension

This commit is contained in:
Evan Husted 2025-01-30 16:53:55 -06:00
parent 359852b5c0
commit 04ce7fb764
2 changed files with 16 additions and 17 deletions

View File

@ -6,4 +6,16 @@ namespace Ryujinx.Common.Configuration
Unbounded,
Custom
}
public static class VSyncModeExtensions
{
public static VSyncMode Next(this VSyncMode vsync, bool customEnabled = false) =>
vsync switch
{
VSyncMode.Switch => customEnabled ? VSyncMode.Custom : VSyncMode.Unbounded,
VSyncMode.Unbounded => VSyncMode.Switch,
VSyncMode.Custom => VSyncMode.Unbounded,
_ => VSyncMode.Switch
};
}
}

View File

@ -319,25 +319,12 @@ namespace Ryujinx.Ava
public void VSyncModeToggle()
{
VSyncMode oldVSyncMode = Device.VSyncMode;
VSyncMode newVSyncMode = VSyncMode.Switch;
bool customVSyncIntervalEnabled = ConfigurationState.Instance.Graphics.EnableCustomVSyncInterval.Value;
switch (oldVSyncMode)
{
case VSyncMode.Switch:
newVSyncMode = customVSyncIntervalEnabled
? VSyncMode.Custom
: VSyncMode.Unbounded;
break;
case VSyncMode.Unbounded:
newVSyncMode = VSyncMode.Switch;
break;
case VSyncMode.Custom:
newVSyncMode = VSyncMode.Unbounded;
break;
}
UpdateVSyncMode(this, new ReactiveEventArgs<VSyncMode>(oldVSyncMode, newVSyncMode));
UpdateVSyncMode(this, new ReactiveEventArgs<VSyncMode>(
oldVSyncMode,
oldVSyncMode.Next(customVSyncIntervalEnabled))
);
}
private void UpdateCustomVSyncIntervalValue(object sender, ReactiveEventArgs<int> e)