diff --git a/window_scene/screen_session_manager/include/fold_screen_controller/super_fold_state_manager.h b/window_scene/screen_session_manager/include/fold_screen_controller/super_fold_state_manager.h index 174c519b96..f46fbb02cd 100644 --- a/window_scene/screen_session_manager/include/fold_screen_controller/super_fold_state_manager.h +++ b/window_scene/screen_session_manager/include/fold_screen_controller/super_fold_state_manager.h @@ -96,6 +96,7 @@ private: FoldCreaseRegion GetFoldCreaseRegion(bool isVertical, bool isNeedReverse) const; void GetFoldCreaseRect(bool isVertical, bool isNeedReverse, const std::vector& foldRect, std::vector& foldCreaseRect) const; + mutable std::mutex liveCreaseRegionMutex_; std::mutex superStatusMutex_; std::vector superFoldCreaseRegionItems_; diff --git a/window_scene/screen_session_manager/src/fold_screen_controller/super_fold_state_manager.cpp b/window_scene/screen_session_manager/src/fold_screen_controller/super_fold_state_manager.cpp index e09fd053cc..c368bcc1d6 100644 --- a/window_scene/screen_session_manager/src/fold_screen_controller/super_fold_state_manager.cpp +++ b/window_scene/screen_session_manager/src/fold_screen_controller/super_fold_state_manager.cpp @@ -515,6 +515,7 @@ sptr SuperFoldStateManager::GetCurrentFoldCreaseRegion() FoldCreaseRegion SuperFoldStateManager::GetLiveCreaseRegion() { TLOGI(WmsLogTag::DMS, "enter"); + std::lock_guard lock_mode(liveCreaseRegionMutex_); SuperFoldStatus curFoldState = ScreenSessionManager::GetInstance().GetSuperFoldStatus(); if (curFoldState == SuperFoldStatus::UNKNOWN || curFoldState == SuperFoldStatus::FOLDED) { return FoldCreaseRegion(0, {});