diff --git a/src/modules/LightSwitch/LightSwitchService/LightSwitchService.cpp b/src/modules/LightSwitch/LightSwitchService/LightSwitchService.cpp index 8919f4274b..5b4fa8297b 100644 --- a/src/modules/LightSwitch/LightSwitchService/LightSwitchService.cpp +++ b/src/modules/LightSwitch/LightSwitchService/LightSwitchService.cpp @@ -250,7 +250,6 @@ DWORD WINAPI ServiceWorkerThread(LPVOID lpParam) Logger::info(L"[LightSwitchService] Initialized at {:02d}:{:02d}.", st.wHour, st.wMinute); stateManager.SyncInitialThemeState(); - stateManager.OnTick(nowMinutes); // ──────────────────────────────────────────────────────────────── // Worker Loop @@ -281,7 +280,7 @@ DWORD WINAPI ServiceWorkerThread(LPVOID lpParam) GetLocalTime(&st); nowMinutes = st.wHour * 60 + st.wMinute; DetectAndHandleExternalThemeChange(stateManager); - stateManager.OnTick(nowMinutes); + stateManager.OnTick(); continue; } diff --git a/src/modules/LightSwitch/LightSwitchService/LightSwitchStateManager.cpp b/src/modules/LightSwitch/LightSwitchService/LightSwitchStateManager.cpp index f562d38c41..cc4f959881 100644 --- a/src/modules/LightSwitch/LightSwitchService/LightSwitchStateManager.cpp +++ b/src/modules/LightSwitch/LightSwitchService/LightSwitchStateManager.cpp @@ -28,7 +28,7 @@ void LightSwitchStateManager::OnSettingsChanged() } // Called once per minute -void LightSwitchStateManager::OnTick(int currentMinutes) +void LightSwitchStateManager::OnTick() { std::lock_guard lock(_stateMutex); if (_state.lastAppliedMode != ScheduleMode::FollowNightLight) @@ -109,10 +109,14 @@ void LightSwitchStateManager::SyncInitialThemeState() std::lock_guard lock(_stateMutex); _state.isSystemLightActive = GetCurrentSystemTheme(); _state.isAppsLightActive = GetCurrentAppsTheme(); + _state.isNightLightActive = IsNightLightEnabled(); Logger::debug(L"[LightSwitchStateManager] Synced initial state to current system theme ({})", _state.isSystemLightActive ? L"light" : L"dark"); Logger::debug(L"[LightSwitchStateManager] Synced initial state to current apps theme ({})", _state.isAppsLightActive ? L"light" : L"dark"); + + // This will ensure that the theme is applied according to current settings at startup + EvaluateAndApplyIfNeeded(); } static std::pair update_sun_times(auto& settings) diff --git a/src/modules/LightSwitch/LightSwitchService/LightSwitchStateManager.h b/src/modules/LightSwitch/LightSwitchService/LightSwitchStateManager.h index c4f39a2e9a..65d6f7ada7 100644 --- a/src/modules/LightSwitch/LightSwitchService/LightSwitchStateManager.h +++ b/src/modules/LightSwitch/LightSwitchService/LightSwitchStateManager.h @@ -28,7 +28,7 @@ public: void OnSettingsChanged(); // Called every minute (from service worker tick). - void OnTick(int currentMinutes); + void OnTick(); // Called when manual override is toggled (via shortcut or system change). void OnManualOverride();