diff --git a/service/native/include/display_power_mgr_service.h b/service/native/include/display_power_mgr_service.h index 3641bdd777c72fe2e32690fb23d45435083779aa..37a6e2f4c184cbe46136d290cd6efdee66724a1b 100644 --- a/service/native/include/display_power_mgr_service.h +++ b/service/native/include/display_power_mgr_service.h @@ -73,6 +73,8 @@ private: CallbackDeathRecipient() = default; virtual ~CallbackDeathRecipient() = default; virtual void OnRemoteDied(const wptr& remote); + private: + std::mutex callbackMutex_; }; static const uint32_t AUTO_ADJUST_BRIGHTNESS_STRIDE = 1; diff --git a/service/native/src/display_power_mgr_service.cpp b/service/native/src/display_power_mgr_service.cpp index 18e23cbbb6a5599d9194b96f99bbbf7675157ed8..17c01f09be7f706862da653aaf6ef4cebe9e8db6 100644 --- a/service/native/src/display_power_mgr_service.cpp +++ b/service/native/src/display_power_mgr_service.cpp @@ -464,6 +464,7 @@ uint32_t DisplayPowerMgrService::GetDeviceBrightness(uint32_t displayId) void DisplayPowerMgrService::NotifyStateChangeCallback(uint32_t displayId, DisplayState state) { + std::lock_guard lock(mutex_); if (callback_ != nullptr) { callback_->OnDisplayStateChanged(displayId, state); } @@ -715,6 +716,7 @@ void DisplayPowerMgrService::CallbackDeathRecipient::OnRemoteDied(const wptrcallback_ = nullptr; } } // namespace DisplayPowerMgr