diff --git a/services/miscdevice_service/include/vibration_priority_manager.h b/services/miscdevice_service/include/vibration_priority_manager.h index 3f5bd436bf068a272db94ee3283a5b767e207368..f727f86ce172f66aa9c6c2f1e415d639d3d85051 100644 --- a/services/miscdevice_service/include/vibration_priority_manager.h +++ b/services/miscdevice_service/include/vibration_priority_manager.h @@ -135,6 +135,7 @@ private: std::vector doNotDisturbWhiteList_; sptr currentUserObserver_; std::mutex currentUserObserverMutex_; + std::mutex whiteListMutex_; #endif // OHOS_BUILD_ENABLE_DO_NOT_DISTURB #ifdef OHOS_BUILD_ENABLE_VIBRATOR_CROWN std::atomic_int32_t miscCrownFeedback_ = FEEDBACK_MODE_INVALID; diff --git a/services/miscdevice_service/src/vibration_priority_manager.cpp b/services/miscdevice_service/src/vibration_priority_manager.cpp index 2cada5a0190a75263953a46e28cd7590d4c93120..865fb5ffe368541ad0e3d1da557bf34dcb1e8bc2 100644 --- a/services/miscdevice_service/src/vibration_priority_manager.cpp +++ b/services/miscdevice_service/src/vibration_priority_manager.cpp @@ -151,6 +151,7 @@ void VibrationPriorityManager::InitDoNotDisturbData() doNotDisturbSwitch_ = switchTemp; MISC_HILOGI("doNotDisturbSwitch:%{public}d", switchTemp); } + std::lock_guard whiteListLock(whiteListMutex_); if (doNotDisturbSwitch_ == DONOTDISTURB_SWITCH_ON) { std::vector whiteListTemp; int32_t whiteListRet = GetWhiteListValue(DO_NOT_DISTURB_WHITE_LIST, whiteListTemp); @@ -443,6 +444,7 @@ bool VibrationPriorityManager::IgnoreAppVibrations(const VibrateInfo &vibrateInf MISC_HILOGD("DoNotDisturbSwitch is off"); return false; } + std::lock_guard whiteListLock(whiteListMutex_); for (const WhiteListAppInfo &whiteListAppInfo : doNotDisturbWhiteList_) { if (vibrateInfo.packageName == whiteListAppInfo.bundle) { MISC_HILOGD("Not ignore app vibration, the app is on the whitelist, bundleName::%{public}s",