From 1b888890cf9030aa35efb7b825601059bc76a71f Mon Sep 17 00:00:00 2001 From: wangxinpeng Date: Wed, 16 Feb 2022 15:15:41 +0800 Subject: [PATCH] check screen connection in display controller init Signed-off-by: wangxinpeng Change-Id: Ia480d042d4b2e90a013cab7ceb8772a9cd7d7579 --- dmserver/include/abstract_screen_controller.h | 1 + dmserver/src/abstract_display_controller.cpp | 1 + dmserver/src/abstract_screen_controller.cpp | 14 ++++++++++++++ 3 files changed, 16 insertions(+) diff --git a/dmserver/include/abstract_screen_controller.h b/dmserver/include/abstract_screen_controller.h index a3818dd829..4de2b39f07 100644 --- a/dmserver/include/abstract_screen_controller.h +++ b/dmserver/include/abstract_screen_controller.h @@ -42,6 +42,7 @@ public: ~AbstractScreenController(); void Init(); + void ScreenConnectionInDisplayInit(sptr abstractScreenCallback); std::vector GetAllScreenIds(); sptr GetAbstractScreen(ScreenId dmsScreenId) const; std::vector GetShotScreenIds(std::vector) const; diff --git a/dmserver/src/abstract_display_controller.cpp b/dmserver/src/abstract_display_controller.cpp index 568a23343e..aa9899e868 100644 --- a/dmserver/src/abstract_display_controller.cpp +++ b/dmserver/src/abstract_display_controller.cpp @@ -52,6 +52,7 @@ void AbstractDisplayController::Init(sptr abstractScre abstractScreenCallback_->onChange_ = std::bind(&AbstractDisplayController::OnAbstractScreenChange, this, std::placeholders::_1, std::placeholders::_2); + abstractScreenController_->ScreenConnectionInDisplayInit(abstractScreenCallback_); abstractScreenController->RegisterAbstractScreenCallback(abstractScreenCallback_); // TODO: Active the code after "rsDisplayNode_->SetScreenId(rsScreenId)" is provided. diff --git a/dmserver/src/abstract_screen_controller.cpp b/dmserver/src/abstract_screen_controller.cpp index 31ccbf4e77..f0619ad2db 100644 --- a/dmserver/src/abstract_screen_controller.cpp +++ b/dmserver/src/abstract_screen_controller.cpp @@ -234,6 +234,20 @@ void AbstractScreenController::OnRsScreenConnectionChange(ScreenId rsScreenId, S } } +void AbstractScreenController::ScreenConnectionInDisplayInit(sptr abstractScreenCallback) +{ + std::lock_guard lock(mutex_); + if (dmsScreenMap_.empty()) { + return; + } + for (auto& iter : dmsScreenMap_) { + if (iter.second != nullptr && abstractScreenCallback != nullptr) { + WLOGFI("dmsScreenId :%{public}" PRIu64"", iter.first); + abstractScreenCallback->onConnect_(iter.second); + } + } +} + void AbstractScreenController::ProcessScreenModeChanged(ScreenId rsScreenId) { WM_SCOPED_TRACE("dms:ProcessScreenModeChanged(%" PRIu64")", rsScreenId); -- Gitee