From bd73f4ad26dabb55d44bd0757413a0672960ed02 Mon Sep 17 00:00:00 2001 From: Jaylyn Barbee <51131738+Jaylyn-Barbee@users.noreply.github.com> Date: Fri, 7 Nov 2025 15:43:41 -0500 Subject: [PATCH] added locks to prevent race conditions --- .../LightSwitchService/LightSwitchStateManager.cpp | 4 +++- .../LightSwitch/LightSwitchService/LightSwitchStateManager.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) 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);