已合并
fix createvirtualscreen lock #18954
fix createvirtualscreen lock #18954
已合并
wangdi创建于 4月30日
共 1 个文件变更+8-6
@@ -81,7 +81,7 @@ private:
81 std::set<sptr<IVirtualScreenGroupListener>> virtualScreenGroupListeners_;81 std::set<sptr<IVirtualScreenGroupListener>> virtualScreenGroupListeners_;
82 std::set<sptr<IRecordDisplayListener>> recordDisplayListeners_;82 std::set<sptr<IRecordDisplayListener>> recordDisplayListeners_;
83 sptr<IDisplayManagerAgent> virtualScreenAgent_ = nullptr;83 sptr<IDisplayManagerAgent> virtualScreenAgent_ = nullptr;
84- std::mutex virtualScreenAgentMutex_;84+ std::recursive_mutex virtualScreenAgentMutex_;
wulong158
wulong158wulong1584月30日

这里没必要换递归锁

likedislike
85};85};
86 86 
87class ScreenManager::Impl::ScreenManagerListener : public DisplayManagerAgentDefault {87class ScreenManager::Impl::ScreenManagerListener : public DisplayManagerAgentDefault {
@@ -724,10 +724,12 @@ ScreenId ScreenManager::Impl::CreateVirtualScreen(VirtualScreenOption option)
724 return SCREEN_ID_INVALID;724 return SCREEN_ID_INVALID;
725 }725 }
726 }726 }
727- // After the process creating the virtual screen is killed, DMS needs to delete the virtual screen727+ {
728- std::lock_guard<std::mutex> agentLock(virtualScreenAgentMutex_);728+ // After the process creating the virtual screen is killed, DMS needs to delete the virtual screen
729- if (virtualScreenAgent_ == nullptr) {729+ std::lock_guard<std::recursive_mutex> agentLock(virtualScreenAgentMutex_);
730- virtualScreenAgent_ = new DisplayManagerAgentDefault();730+ if (virtualScreenAgent_ == nullptr) {
731+ virtualScreenAgent_ = new DisplayManagerAgentDefault();
732+ }
731 }733 }
732 if (option.caller_ == VirtualScreenCaller::UNKNOWN) {734 if (option.caller_ == VirtualScreenCaller::UNKNOWN) {
733 option.caller_ = VirtualScreenCaller::NATIVE_SCREEN_MANAGER;735 option.caller_ = VirtualScreenCaller::NATIVE_SCREEN_MANAGER;
@@ -911,7 +913,7 @@ void ScreenManager::Impl::OnRemoteDied()
911{913{
912 TLOGD(WmsLogTag::DMS, "dms is died");914 TLOGD(WmsLogTag::DMS, "dms is died");
913 {915 {
914- std::lock_guard<std::mutex> agentLock(virtualScreenAgentMutex_);916+ std::lock_guard<std::recursive_mutex> agentLock(virtualScreenAgentMutex_);
915 virtualScreenAgent_ = nullptr;917 virtualScreenAgent_ = nullptr;
916 }918 }
917 919