From 5aaa67fff05b496132afe6252d20f575daa988a1 Mon Sep 17 00:00:00 2001 From: xwalfie Date: Wed, 20 May 2026 11:14:31 +0200 Subject: [PATCH 1/2] feat: add vsync toggle for menus (#80) --- scripts/database/settings/SettingsProfile.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/scripts/database/settings/SettingsProfile.cs b/scripts/database/settings/SettingsProfile.cs index 4d90762..0b3f7ad 100644 --- a/scripts/database/settings/SettingsProfile.cs +++ b/scripts/database/settings/SettingsProfile.cs @@ -243,6 +243,12 @@ public partial class SettingsProfile [Order] public SettingsItem FPS { get; private set; } + /// + /// Toggles V-Sync when in menus + /// + [Order] + public SettingsItem VSyncMenus { get; private set; } + #endregion #region Audio @@ -823,6 +829,17 @@ public SettingsProfile() UpdateAction = (value, _) => Engine.MaxFps = LockFPS.Value ? value : 0 }; + VSyncMenus = new(true) + { + Id = "VSyncMenus", + Title = "V-Sync in Menus", + Description = "Toggles V-Sync when in menus", + Section = SettingsSection.Video, + UpdateAction = (value, _) => DisplayServer.WindowSetVsyncMode( + value ? DisplayServer.VSyncMode.Enabled : DisplayServer.VSyncMode.Disabled + ) + }; + #endregion #region Audio From c7e30158635d10be0d86645618c679086da579e5 Mon Sep 17 00:00:00 2001 From: xwalfie Date: Thu, 21 May 2026 08:43:50 +0200 Subject: [PATCH 2/2] fix: check VSyncMenus setting in Load() methods --- scripts/scenes/LegacyRunner.cs | 2 -- scripts/scenes/MainMenu.cs | 2 +- scripts/scenes/Results.cs | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/scripts/scenes/LegacyRunner.cs b/scripts/scenes/LegacyRunner.cs index ee70ad0..ec68316 100644 --- a/scripts/scenes/LegacyRunner.cs +++ b/scripts/scenes/LegacyRunner.cs @@ -1343,8 +1343,6 @@ public override void Load() { base.Load(); - DisplayServer.WindowSetVsyncMode(DisplayServer.VSyncMode.Disabled); - MenuCursor.Instance.UpdateVisible(false, false); SceneManager.Space.UpdateState(true); SceneManager.Space.UpdateMap(CurrentAttempt.Map); diff --git a/scripts/scenes/MainMenu.cs b/scripts/scenes/MainMenu.cs index 25bac19..011470d 100644 --- a/scripts/scenes/MainMenu.cs +++ b/scripts/scenes/MainMenu.cs @@ -84,7 +84,7 @@ public override void Load() { base.Load(); - DisplayServer.WindowSetVsyncMode(DisplayServer.VSyncMode.Adaptive); + DisplayServer.WindowSetVsyncMode(SettingsManager.Instance.Settings.VSyncMenus.Value ? DisplayServer.VSyncMode.Enabled : DisplayServer.VSyncMode.Disabled); // Apply any map selection that was deferred while menu was off-tree (e.g. import from another scene) MapInfo.ApplyPendingSelection(); diff --git a/scripts/scenes/Results.cs b/scripts/scenes/Results.cs index 9cf51b6..01dba9d 100644 --- a/scripts/scenes/Results.cs +++ b/scripts/scenes/Results.cs @@ -156,7 +156,7 @@ public override void Load() { base.Load(); - DisplayServer.WindowSetVsyncMode(DisplayServer.VSyncMode.Adaptive); + DisplayServer.WindowSetVsyncMode(SettingsManager.Instance.Settings.VSyncMenus.Value ? DisplayServer.VSyncMode.Enabled : DisplayServer.VSyncMode.Disabled); } public void UpdateVolume()