Răsfoiți Sursa

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

Evan Husted 1 an în urmă
părinte
comite
04ce7fb764
2 a modificat fișierele cu 16 adăugiri și 17 ștergeri
  1. 12 0
      src/Ryujinx.Common/Configuration/VSyncMode.cs
  2. 4 17
      src/Ryujinx/AppHost.cs

+ 12 - 0
src/Ryujinx.Common/Configuration/VSyncMode.cs

@@ -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
+            };
+    }
 }

+ 4 - 17
src/Ryujinx/AppHost.cs

@@ -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)