diff --git a/src/modules/LightSwitch/LightSwitchService/LightSwitchStateManager.cpp b/src/modules/LightSwitch/LightSwitchService/LightSwitchStateManager.cpp index 5a1aa18c37..a10f5235a2 100644 --- a/src/modules/LightSwitch/LightSwitchService/LightSwitchStateManager.cpp +++ b/src/modules/LightSwitch/LightSwitchService/LightSwitchStateManager.cpp @@ -16,6 +16,7 @@ LightSwitchStateManager::LightSwitchStateManager() // Called when settings.json changes void LightSwitchStateManager::OnSettingsChanged() { + std::lock_guard lock(_stateMutex); Logger::info(L"[LightSwitchStateManager] Settings changed event received"); // If manual override was active, clear it so new settings take effect @@ -28,10 +29,10 @@ void LightSwitchStateManager::OnSettingsChanged() EvaluateAndApplyIfNeeded(); } - // Called once per minute void LightSwitchStateManager::OnTick(int currentMinutes) { + std::lock_guard lock(_stateMutex); Logger::debug(L"[LightSwitchStateManager] Tick received: {}", currentMinutes); EvaluateAndApplyIfNeeded(); } @@ -39,6 +40,7 @@ void LightSwitchStateManager::OnTick(int currentMinutes) // Called when manual override is triggered void LightSwitchStateManager::OnManualOverride() { + std::lock_guard lock(_stateMutex); Logger::info(L"[LightSwitchStateManager] Manual override triggered"); _state.isManualOverride = !_state.isManualOverride; diff --git a/src/modules/LightSwitch/LightSwitchService/LightSwitchStateManager.h b/src/modules/LightSwitch/LightSwitchService/LightSwitchStateManager.h index eb9294d8d6..778fa5281c 100644 --- a/src/modules/LightSwitch/LightSwitchService/LightSwitchStateManager.h +++ b/src/modules/LightSwitch/LightSwitchService/LightSwitchStateManager.h @@ -36,6 +36,7 @@ public: private: LightSwitchState _state; + std::mutex _stateMutex; void EvaluateAndApplyIfNeeded(); bool CoordinatesAreValid(const std::wstring& lat, const std::wstring& lon);