From a3624ca1abcb2f7718bbb35c6bcf4634cfce0ac6 Mon Sep 17 00:00:00 2001 From: zhouoaoteng Date: Sat, 7 Jun 2025 16:53:25 +0800 Subject: [PATCH] fix:code Signed-off-by: zhouoaoteng --- .../include/distributed_input_sink_manager.h | 1 - .../src/distributed_input_sink_manager.cpp | 18 +------------ utils/include/dinput_context.h | 2 +- utils/src/dinput_context.cpp | 15 +++++++++++ utils/test/unittest/dinput_context_test.cpp | 27 +++++++++++++++++++ 5 files changed, 44 insertions(+), 19 deletions(-) diff --git a/services/sink/sinkmanager/include/distributed_input_sink_manager.h b/services/sink/sinkmanager/include/distributed_input_sink_manager.h index 9595857..ac7a6cd 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 a5d949c..9685447 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 7e10294..610b3a3 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 d1e4d7b..6a9c5e1 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_); diff --git a/utils/test/unittest/dinput_context_test.cpp b/utils/test/unittest/dinput_context_test.cpp index fef6b9a..4f42063 100644 --- a/utils/test/unittest/dinput_context_test.cpp +++ b/utils/test/unittest/dinput_context_test.cpp @@ -86,6 +86,33 @@ HWTEST_F(DInputContextTest, GetSinkScreenInfo001, testing::ext::TestSize.Level1) DInputContext::GetInstance().RemoveSinkScreenInfo(sourceWinId); } +HWTEST_F(DInputContextTest, CleanExceptionalInfo001, testing::ext::TestSize.Level1) +{ + SrcScreenInfo srcScreenInfo; + srcScreenInfo.uuid = "uuid1"; + srcScreenInfo.sessionId = 1; + EXPECT_TRUE(DInputContext::GetInstance().sinkScreenInfoMap_.empty()); + DInputContext::GetInstance().CleanExceptionalInfo(srcScreenInfo); +} + +HWTEST_F(DInputContextTest, CleanExceptionalInfo002, testing::ext::TestSize.Level1) +{ + std::string sourceWinId = "hello"; + SrcScreenInfo srcScreenInfo; + srcScreenInfo.uuid = "uuid1"; + srcScreenInfo.sessionId = 1; + + SinkScreenInfo sinkInfo; + sinkInfo.srcScreenInfo.uuid = "uuid1"; + sinkInfo.srcScreenInfo.sessionId = 1; + + DInputContext::GetInstance().sinkScreenInfoMap_[sourceWinId] = sinkInfo; + EXPECT_EQ(DInputContext::GetInstance().sinkScreenInfoMap_.size(), 1); + DInputContext::GetInstance().CleanExceptionalInfo(srcScreenInfo); + + DInputContext::GetInstance().RemoveSinkScreenInfo(sourceWinId); +} + HWTEST_F(DInputContextTest, GetSinkScreenInfo002, testing::ext::TestSize.Level1) { std::string sourceWinId = "hello"; -- Gitee