From 35e6a5b8994943948e42ae604b73a4aeb4be5df8 Mon Sep 17 00:00:00 2001 From: xiaojianfeng Date: Mon, 14 Feb 2022 16:04:53 +0800 Subject: [PATCH] make mirror on the Real Screen Signed-off-by: xiaojianfeng Change-Id: I3ed71dcae1d54e236f0746a2564e04df0534a8cb --- dmserver/src/abstract_screen_controller.cpp | 38 +++++++++------------ 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/dmserver/src/abstract_screen_controller.cpp b/dmserver/src/abstract_screen_controller.cpp index 04ff90f2..589a96e3 100644 --- a/dmserver/src/abstract_screen_controller.cpp +++ b/dmserver/src/abstract_screen_controller.cpp @@ -61,46 +61,42 @@ std::vector AbstractScreenController::GetAllScreenIds() std::vector AbstractScreenController::GetShotScreenIds(std::vector mirrorScreenIds) const { WLOGI("GetShotScreenIds"); - std::vector result; + std::vector screenIds; for (ScreenId screenId : mirrorScreenIds) { auto dmsScreenIdIter = dms2RsScreenIdMap_.find(screenId); auto dmsScreenIter = dmsScreenMap_.find(screenId); if (dmsScreenIdIter != dms2RsScreenIdMap_.end() && dmsScreenIter == dmsScreenMap_.end()) { - result.emplace_back(screenId); + screenIds.emplace_back(screenId); + WLOGI("GetShotScreenIds: screenId: %{public}" PRIu64"", screenId); } } - for (ScreenId screenId : result) { - WLOGI("GetShotScreenIds: screenId: %{public}" PRIu64"", screenId); - } - return result; + return screenIds; } std::vector AbstractScreenController::GetAllMirrorScreenIds(std::vector mirrorScreenIds) const { - std::vector result; + std::vector screenIds; for (ScreenId screenId : mirrorScreenIds) { auto iter = dmsScreenMap_.find(screenId); if (iter != dmsScreenMap_.end()) { - result.emplace_back(screenId); + screenIds.emplace_back(screenId); } } - if (result.empty()) { - WLOGI("GetAllMirrorScreenIds, result is empty"); - return result; + if (screenIds.empty()) { + WLOGI("GetAllMirrorScreenIds, screenIds is empty"); + return screenIds; } for (auto iter = dmsScreenMap_.begin(); iter != dmsScreenMap_.end(); iter++) { if (iter->second->type_ != ScreenType::REAL) { continue; } - auto screenIdIter = std::find(result.begin(), result.end(), iter->first); - if (screenIdIter == result.end()) { - result.emplace_back(iter->first); + auto screenIdIter = std::find(screenIds.begin(), screenIds.end(), iter->first); + if (screenIdIter == screenIds.end()) { + screenIds.emplace_back(iter->first); + WLOGI("GetAllMirrorScreenIds: screenId: %{public}" PRIu64"", iter->first); } } - for (ScreenId screenId : result) { - WLOGI("GetAllMirrorScreenIds: screenId: %{public}" PRIu64"", screenId); - } - return result; + return screenIds; } std::shared_ptr AbstractScreenController::GetRSDisplayNodeByScreenId(ScreenId dmsScreenId) const @@ -425,10 +421,10 @@ sptr AbstractScreenController::AddAsSuccedentScreenLocked(s ScreenId AbstractScreenController::CreateVirtualScreen(VirtualScreenOption option) { - std::lock_guard lock(mutex_); ScreenId result = rsInterface_.CreateVirtualScreen(option.name_, option.width_, option.height_, option.surface_, INVALID_SCREEN_ID, option.flags_); WLOGFI("AbstractScreenController::CreateVirtualScreen id: %{public}" PRIu64"", result); + std::lock_guard lock(mutex_); ScreenId dmsScreenId = SCREEN_ID_INVALID; auto iter = rs2DmsScreenIdMap_.find(result); if (iter == rs2DmsScreenIdMap_.end()) { @@ -608,8 +604,8 @@ bool AbstractScreenController::MakeMirror(ScreenId screenId, std::vector screen = GetAbstractScreen(screenId); - if (screen == nullptr) { - WLOGFE("screen is nullptr"); + if (screen == nullptr || screen->type_ != ScreenType::REAL) { + WLOGFE("screen is nullptr, or screenType is not real."); return false; } WLOGFI("GetAbstractScreenGroup start");