diff --git a/services/screenclient/include/screen_client.h b/services/screenclient/include/screen_client.h index be3e8f995c5b2b7304c00372af42370ab09a0ccd..3f0d9fe61ab3172317ec0465ae544999d443c270 100644 --- a/services/screenclient/include/screen_client.h +++ b/services/screenclient/include/screen_client.h @@ -41,9 +41,10 @@ public: int32_t MoveWindow(int32_t windowId, int32_t startX, int32_t startY); int32_t RemoveWindow(int32_t windowId); int32_t HideWindow(int32_t windowId); + int32_t DestroyAllWindow(); private: ScreenClient() = default; - ~ScreenClient(); + ~ScreenClient() = default; std::map> surfaceMap_; std::atomic windowId_ = INVALID_WINDOW_ID; std::mutex surfaceMapMutex_; diff --git a/services/screenclient/include/screen_client_window_adapter.h b/services/screenclient/include/screen_client_window_adapter.h index 5b90b54d3a9c01018e5fe76e1b5a8cbf45761584..267a4264fda4b7d1a4e9c4556ae6c5e3fa696cc2 100644 --- a/services/screenclient/include/screen_client_window_adapter.h +++ b/services/screenclient/include/screen_client_window_adapter.h @@ -42,9 +42,10 @@ public: int32_t HideWindow(int32_t windowId); int32_t MoveWindow(int32_t windowId, int32_t startX, int32_t startY); int32_t RemoveWindow(int32_t windowId); + int32_t DestroyAllWindow(); private: ScreenClientWindowAdapter() = default; - ~ScreenClientWindowAdapter(); + ~ScreenClientWindowAdapter() = default; std::map> windowIdMap_; std::mutex windowIdMapMutex_; }; diff --git a/services/screenclient/src/screen_client.cpp b/services/screenclient/src/screen_client.cpp index 52d6823071e9052fb31a8a0483ca553a225c7787..d738fd9d0cd2c2bd7dfb151ca65c2b47516d6c63 100644 --- a/services/screenclient/src/screen_client.cpp +++ b/services/screenclient/src/screen_client.cpp @@ -22,26 +22,6 @@ namespace OHOS { namespace DistributedHardware { IMPLEMENT_SINGLE_INSTANCE(ScreenClient); - -ScreenClient::~ScreenClient() -{ - DHLOGD("~ScreenClient"); - { - std::lock_guard dataLock(surfaceMapMutex_); - for (const auto &item : surfaceMap_) { - int32_t ret = ScreenClientWindowAdapter::GetInstance().RemoveWindow(item.first); - if (ret != DH_SUCCESS) { - DHLOGE("windowId (ID = %d) remove failed.", item.first); - return; - } - } - surfaceMap_.clear(); - windowId_ = INVALID_WINDOW_ID; - } - DHLOGD("ScreenClient Destory."); - return; -} - int32_t ScreenClient::AddWindow(std::shared_ptr windowProperty) { if (windowProperty == nullptr) { @@ -154,5 +134,19 @@ int32_t ScreenClient::RemoveWindow(int32_t windowId) DHLOGD("windowId (ID = %d) remove success.", windowId); return ret; } + +int32_t ScreenClient::DestroyAllWindow() +{ + DHLOGD("DestroyAllWindow"); + int32_t ret = ScreenClientWindowAdapter::GetInstance().DestroyAllWindow(); + if (ret != DH_SUCCESS) { + DHLOGE("DestroyAllWindow failed."); + return ret; + } + std::lock_guard dataLock(surfaceMapMutex_); + surfaceMap_.clear(); + windowId_ = INVALID_WINDOW_ID; + return DH_SUCCESS; +} } // namespace DistributedHardware } // namespace OHOS \ No newline at end of file diff --git a/services/screenclient/src/screen_client_window_adapter.cpp b/services/screenclient/src/screen_client_window_adapter.cpp index f1509ac6a21856bb4431721f5b652bfcbdf0dc44..79123f6302d0ccf99642f3cf6f7c66ddf9295092 100644 --- a/services/screenclient/src/screen_client_window_adapter.cpp +++ b/services/screenclient/src/screen_client_window_adapter.cpp @@ -28,28 +28,6 @@ namespace OHOS { namespace DistributedHardware { IMPLEMENT_SINGLE_INSTANCE(ScreenClientWindowAdapter); -ScreenClientWindowAdapter::~ScreenClientWindowAdapter() -{ - DHLOGD("~ScreenClientWindowAdapter"); - { - std::lock_guard dataLock(windowIdMapMutex_); - for (const auto &item : windowIdMap_) { - auto window = item.second; - if (window == nullptr) { - DHLOGE("window is nullptr(windowId = %d).", item.first); - return; - } - if (window->Destroy() != OHOS::Rosen::WMError::WM_OK) { - DHLOGE("screenclientSurface is nullptr(windowId = %d).", item.first); - return; - } - } - windowIdMap_.clear(); - } - DHLOGD("ScreenClientWindowAdapter Destory."); - return; -} - sptr ScreenClientWindowAdapter::CreateWindow(std::shared_ptr windowProperty, int32_t windowId) { @@ -201,6 +179,26 @@ int32_t ScreenClientWindowAdapter::RemoveWindow(int32_t windowId) return DH_SUCCESS; } +int32_t ScreenClientWindowAdapter::DestroyAllWindow() +{ + DHLOGD("DestroyAllWindow"); + std::lock_guard dataLock(windowIdMapMutex_); + for (const auto &item : windowIdMap_) { + auto window = item.second; + if (window == nullptr) { + DHLOGE("window is nullptr(windowId = %d).", item.first); + continue; + } + if (OHOS::Rosen::WMError::WM_OK != window->Destroy()) { + DHLOGE("Destroy window(windowId = %d) failed .", item.first); + continue; + } + } + windowIdMap_.clear(); + return DH_SUCCESS; +} + + bool ScreenClientInputEventListener::OnInputEvent(const std::shared_ptr& pointerEvent) const { if (pointerEvent == nullptr) { diff --git a/services/screenservice/sinkservice/screenregionmgr/include/screenregion.h b/services/screenservice/sinkservice/screenregionmgr/include/screenregion.h index 39b817a80dde5032668a44dd7f154bed0e0ada7e..bab1ee68a32a4ee67a6cfe9e81a343e75c6a4122 100644 --- a/services/screenservice/sinkservice/screenregionmgr/include/screenregion.h +++ b/services/screenservice/sinkservice/screenregionmgr/include/screenregion.h @@ -41,7 +41,7 @@ public: class ScreenRegion : public ScreenSinkTransCallback, public std::enable_shared_from_this { public: ScreenRegion(const std::string &remoteDevId, uint64_t screenId, uint64_t displayId); - ~ScreenRegion(); + ~ScreenRegion() override; void OnTransError(int32_t err, const std::string &content) override; void SetVideoParam(std::shared_ptr &videoParam); void SetMapRelation(std::shared_ptr &mapRelation); diff --git a/services/screenservice/sourceservice/dscreenmgr/include/dscreen.h b/services/screenservice/sourceservice/dscreenmgr/include/dscreen.h index 612f24286df4d44ee7e3e67513688d68cbcc215e..76f0b3b8a03cbe64d0b70c40aa92f2bab35f9283 100644 --- a/services/screenservice/sourceservice/dscreenmgr/include/dscreen.h +++ b/services/screenservice/sourceservice/dscreenmgr/include/dscreen.h @@ -103,8 +103,6 @@ private: int32_t Start(); int32_t Stop(); - static constexpr uint8_t TASK_WAIT_SECONDS = 1; - std::string devId_; std::string dhId_; uint64_t screenId_ = SCREEN_ID_INVALID; diff --git a/services/screenservice/sourceservice/dscreenservice/include/dscreen_source_service.h b/services/screenservice/sourceservice/dscreenservice/include/dscreen_source_service.h index 8f97cff92463e11a5bd62e49115221b5e668a02a..7e0cd7472bb688af9b055d70d55e40aadd29a360 100644 --- a/services/screenservice/sourceservice/dscreenservice/include/dscreen_source_service.h +++ b/services/screenservice/sourceservice/dscreenservice/include/dscreen_source_service.h @@ -30,7 +30,7 @@ class DScreenSourceService : public SystemAbility, public DScreenSourceStub, DECLARE_SYSTEM_ABILITY(DScreenSourceService); public: DScreenSourceService(int32_t saId, bool runOnCreate); - ~DScreenSourceService(); + ~DScreenSourceService() override = default; int32_t InitSource(const std::string ¶ms, const sptr &callback) override; int32_t ReleaseSource() override; int32_t RegisterDistributedHardware(const std::string &devId, const std::string &dhId, diff --git a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp index db9b47ded18429f432cb25f43bdaf4826153ab7e..052689e9830fc2e52377f7f52264c9c7ce339c15 100644 --- a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp +++ b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp @@ -38,11 +38,6 @@ DScreenSourceService::DScreenSourceService(int32_t saId, bool runOnCreate) : Sys DHLOGI("dscreen source service create."); } -DScreenSourceService::~DScreenSourceService() -{ - DHLOGI("~DScreenSourceService."); -} - void DScreenSourceService::OnStart() { DHLOGI("dscreen source service start.");