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, Unbounded,
Custom 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() public void VSyncModeToggle()
{ {
VSyncMode oldVSyncMode = Device.VSyncMode; VSyncMode oldVSyncMode = Device.VSyncMode;
VSyncMode newVSyncMode = VSyncMode.Switch;
bool customVSyncIntervalEnabled = ConfigurationState.Instance.Graphics.EnableCustomVSyncInterval.Value; bool customVSyncIntervalEnabled = ConfigurationState.Instance.Graphics.EnableCustomVSyncInterval.Value;
switch (oldVSyncMode) UpdateVSyncMode(this, new ReactiveEventArgs<VSyncMode>(
{ oldVSyncMode,
case VSyncMode.Switch: oldVSyncMode.Next(customVSyncIntervalEnabled))
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));
} }
private void UpdateCustomVSyncIntervalValue(object sender, ReactiveEventArgs<int> e) private void UpdateCustomVSyncIntervalValue(object sender, ReactiveEventArgs<int> e)