diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000000000000000000000000000000000..d4d3c97b5995a5e2898a0eec7d17aa0c6146669f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,60 @@ +{ + "files.associations": { + "array": "cpp", + "atomic": "cpp", + "bitset": "cpp", + "cctype": "cpp", + "chrono": "cpp", + "cinttypes": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "codecvt": "cpp", + "condition_variable": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "unordered_map": "cpp", + "unordered_set": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "map": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "optional": "cpp", + "random": "cpp", + "ratio": "cpp", + "regex": "cpp", + "set": "cpp", + "string": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "fstream": "cpp", + "initializer_list": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "mutex": "cpp", + "new": "cpp", + "ostream": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "thread": "cpp", + "typeinfo": "cpp" + } +} \ No newline at end of file diff --git a/services/sink/sinkmanager/include/distributed_input_sink_manager.h b/services/sink/sinkmanager/include/distributed_input_sink_manager.h index 95958575d3ace9229ce729d9280e27df251aa07f..ac7a6cd59fa3f8f08b685a4dce47bc6d1e6ef6fd 100644 --- a/services/sink/sinkmanager/include/distributed_input_sink_manager.h +++ b/services/sink/sinkmanager/include/distributed_input_sink_manager.h @@ -170,7 +170,6 @@ public: void ClearResourcesStatus(); private: - void CleanExceptionalInfo(const SrcScreenInfo &srcScreenInfo); void CallBackScreenInfoChange(); private: diff --git a/services/sink/sinkmanager/src/distributed_input_sink_manager.cpp b/services/sink/sinkmanager/src/distributed_input_sink_manager.cpp index a5d949c035eb7800464b0f3e4b6f963dc7a26c94..96854477d39902b86f9655df1ef0e0cfdb4049b3 100644 --- a/services/sink/sinkmanager/src/distributed_input_sink_manager.cpp +++ b/services/sink/sinkmanager/src/distributed_input_sink_manager.cpp @@ -965,7 +965,7 @@ int32_t DistributedInputSinkManager::NotifyStartDScreen(const SrcScreenInfo &src { DHLOGI("NotifyStartDScreen start!"); - CleanExceptionalInfo(srcScreenInfo); + DInputContext::GetInstance().CleanExceptionalInfo(srcScreenInfo); std::string screenInfoKey = DInputContext::GetInstance().GetScreenInfoKey(srcScreenInfo.devId, srcScreenInfo.sourceWinId); @@ -1005,22 +1005,6 @@ void DistributedInputSinkManager::CallBackScreenInfoChange() } } -void DistributedInputSinkManager::CleanExceptionalInfo(const SrcScreenInfo &srcScreenInfo) -{ - DHLOGI("CleanExceptionalInfo start!"); - std::string uuid = srcScreenInfo.uuid; - int32_t sessionId = srcScreenInfo.sessionId; - std::unordered_map sinkInfos = DInputContext::GetInstance().GetAllSinkScreenInfo(); - - for (const auto &[id, sinkInfo] : sinkInfos) { - auto srcInfo = sinkInfo.srcScreenInfo; - if ((std::strcmp(srcInfo.uuid.c_str(), uuid.c_str()) == 0) && (srcInfo.sessionId != sessionId)) { - DInputContext::GetInstance().RemoveSinkScreenInfo(id); - DHLOGI("CleanExceptionalInfo screenInfoKey: %{public}s, sessionId: %{public}d", id.c_str(), sessionId); - } - } -} - int32_t DistributedInputSinkManager::NotifyStopDScreen(const std::string &srcScreenInfoKey) { DHLOGI("NotifyStopDScreen start, srcScreenInfoKey: %{public}s", GetAnonyString(srcScreenInfoKey).c_str()); diff --git a/utils/include/dinput_context.h b/utils/include/dinput_context.h index 7e102943544181f94f96a6bbdc294ecd301423b8..610b3a39ebaffad181d00b502de193365fe81c51 100644 --- a/utils/include/dinput_context.h +++ b/utils/include/dinput_context.h @@ -62,7 +62,7 @@ public: int32_t RemoveSrcScreenInfo(const std::string &screenInfoKey); int32_t UpdateSrcScreenInfo(const std::string &screenInfoKey, const SrcScreenInfo &srcScreenInfo); SrcScreenInfo GetSrcScreenInfo(const std::string &screenInfoKey); - + void CleanExceptionalInfo(const SrcScreenInfo &srcScreenInfo); void SetLocalTouchScreenInfo(const LocalTouchScreenInfo &localTouchScreenInfo); LocalTouchScreenInfo GetLocalTouchScreenInfo(); std::shared_ptr GetDHFwkKit(); diff --git a/utils/src/dinput_context.cpp b/utils/src/dinput_context.cpp index d1e4d7bc892216bc64ff54b44c5062cc012358be..6a9c5e193597c250c8007590a00e173f0395fa66 100644 --- a/utils/src/dinput_context.cpp +++ b/utils/src/dinput_context.cpp @@ -84,6 +84,21 @@ SinkScreenInfo DInputContext::GetSinkScreenInfo(const std::string &screenInfoKey return sinkScreenInfoMap_[screenInfoKey]; } +void DInputContext::CleanExceptionalInfo(const SrcScreenInfo &srcScreenInfo) +{ + DHLOGI("CleanExceptionalInfo start!"); + std::string uuid = srcScreenInfo.uuid; + int32_t sessionId = srcScreenInfo.sessionId; + std::lock_guard lock(sinkMapMutex_); + for (const auto &[id, sinkInfo] : sinkScreenInfoMap_) { + auto srcInfo = sinkInfo.srcScreenInfo; + if ((std::strcmp(srcInfo.uuid.c_str(), uuid.c_str()) == 0) && (srcInfo.sessionId != sessionId)) { + sinkScreenInfoMap_.erase(id); + DHLOGI("CleanExceptionalInfo screenInfoKey: %{public}s, sessionId: %{public}d", id.c_str(), sessionId); + } + } +} + const std::unordered_map &DInputContext::GetAllSinkScreenInfo() { std::lock_guard lock(sinkMapMutex_);