From 12af5b212f16d2efbdacf8a0816b685aa72d6e53 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Mon, 6 Apr 2026 23:07:48 -0600 Subject: [PATCH] Add vsync toggle & honor fullscreen setting --- extern/aurora | 2 +- include/dusk/settings.h | 1 + src/dusk/imgui/ImGuiMenuGame.cpp | 9 +++++++++ src/dusk/settings.cpp | 2 ++ src/m_Do/m_Do_main.cpp | 2 ++ 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/extern/aurora b/extern/aurora index 854ce1c178..f5c5917832 160000 --- a/extern/aurora +++ b/extern/aurora @@ -1 +1 @@ -Subproject commit 854ce1c178756ca307137c81afc3cc626fce5fb3 +Subproject commit f5c59178322c31b42676f49dd24e760e3b014f24 diff --git a/include/dusk/settings.h b/include/dusk/settings.h index 0cb3ba60b7..2436be70f5 100644 --- a/include/dusk/settings.h +++ b/include/dusk/settings.h @@ -15,6 +15,7 @@ struct UserSettings { struct { // Video ConfigVar enableFullscreen; + ConfigVar enableVsync; } video; struct { diff --git a/src/dusk/imgui/ImGuiMenuGame.cpp b/src/dusk/imgui/ImGuiMenuGame.cpp index 6ae32ce1a4..f200f734d4 100644 --- a/src/dusk/imgui/ImGuiMenuGame.cpp +++ b/src/dusk/imgui/ImGuiMenuGame.cpp @@ -14,6 +14,8 @@ #include "m_Do/m_Do_controller_pad.h" #include "m_Do/m_Do_graphic.h" +#include + namespace dusk { void ImGuiMenuGame::ToggleFullscreen() { getSettings().video.enableFullscreen.setValue(!getSettings().video.enableFullscreen); @@ -36,6 +38,13 @@ namespace dusk { ToggleFullscreen(); } + bool vsync = getSettings().video.enableVsync; + if (ImGui::Checkbox("Enable Vsync", &vsync)) { + getSettings().video.enableVsync.setValue(vsync); + aurora_enable_vsync(vsync); + config::Save(); + } + if (ImGui::MenuItem("Default Window Size")) { getSettings().video.enableFullscreen.setValue(false); VISetWindowFullscreen(false); diff --git a/src/dusk/settings.cpp b/src/dusk/settings.cpp index 32c6a5beb4..d923a2b00e 100644 --- a/src/dusk/settings.cpp +++ b/src/dusk/settings.cpp @@ -6,6 +6,7 @@ namespace dusk { UserSettings g_userSettings = { .video = { .enableFullscreen {"video.enableFullscreen", false}, + .enableVsync {"video.enableVsync", true}, }, .audio = { @@ -63,6 +64,7 @@ UserSettings& getSettings() { void registerSettings() { // Video Register(g_userSettings.video.enableFullscreen); + Register(g_userSettings.video.enableVsync); // Audio Register(g_userSettings.audio.masterVolume); diff --git a/src/m_Do/m_Do_main.cpp b/src/m_Do/m_Do_main.cpp index 51f74eef00..9cb7e41764 100644 --- a/src/m_Do/m_Do_main.cpp +++ b/src/m_Do/m_Do_main.cpp @@ -319,6 +319,8 @@ int game_main(int argc, char* argv[]) { AuroraConfig config{}; config.appName = dusk::AppName; config.configPath = configPath; + config.vsync = dusk::getSettings().video.enableVsync; + config.startFullscreen = dusk::getSettings().video.enableFullscreen; config.windowPosX = -1; config.windowPosY = -1; config.windowWidth = FB_WIDTH * 2;