From af02ef3d27b6fd660402524846cad251fb7a6c2f Mon Sep 17 00:00:00 2001 From: renguang1116 Date: Fri, 14 Jul 2023 10:32:21 +0800 Subject: [PATCH 01/13] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E9=80=82=E9=85=8D=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20Signed-off-by:=20renguang1116=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/include/dscreen_constants.h | 2 + common/include/dscreen_util.h | 5 ++ common/src/dscreen_util.cpp | 39 +++++++++ .../dscreenmgr/1.0/src/dscreen_manager.cpp | 18 ++-- .../dscreenmgr/2.0/src/dscreen_manager.cpp | 8 +- .../src/dscreen_source_service.cpp | 87 ++++++++----------- 6 files changed, 93 insertions(+), 66 deletions(-) diff --git a/common/include/dscreen_constants.h b/common/include/dscreen_constants.h index aff79392..60db57c7 100644 --- a/common/include/dscreen_constants.h +++ b/common/include/dscreen_constants.h @@ -134,6 +134,7 @@ constexpr int32_t INVALID_WINDOW_ID = -1; constexpr int32_t STRIDE_ALIGNMENT = 0x8; constexpr int32_t SURFACE_SYNC_FENCE_TIMEOUT = 100; +const std::string AV_TRANS_SUPPORTED_VERSION = "3.0"; const std::string DSCREEN_LOG_TITLE_TAG = "DSCREEN"; const std::string DSCREEN_PREFIX = "DISTRIBUTED_SCREEN"; const std::string SCREEN_PREFIX = "SCREEN"; @@ -183,6 +184,7 @@ const std::string SINK_PROJ_SHOW_WIDTH = "sinkProjShowWidth"; const std::string SINK_PROJ_SHOW_HEIGHT = "sinkProjShowHeight"; const std::string SINK_WIN_SHOW_X = "sinkWinShowX"; const std::string SINK_WIN_SHOW_Y = "sinkWinShowY"; +constexpr const char* PARTIAL_REFRESH_PARAM = "persist.distributedhardware.dscreen.partial.refresh.enable"; constexpr uint32_t MAX_MESSAGES_LEN = 40 * 1024 * 1024; constexpr float DEFAULT_DENSITY = 2.0; diff --git a/common/include/dscreen_util.h b/common/include/dscreen_util.h index 5b642c9c..dddb0b35 100644 --- a/common/include/dscreen_util.h +++ b/common/include/dscreen_util.h @@ -25,6 +25,11 @@ int32_t GetLocalDeviceNetworkId(std::string &networkId); std::string GetRandomID(); std::string GetAnonyString(const std::string &value); std::string GetInterruptString(const std::string &value); + +template +bool GetSystemParam(const char *inName, T &outValue); +bool IsPartialRefreshEnabled(); +bool IsSupportAVTransEngine(const std::string &version); } // namespace DistributedHardware } // namespace OHOS #endif \ No newline at end of file diff --git a/common/src/dscreen_util.cpp b/common/src/dscreen_util.cpp index 22b4c4c3..52a224be 100644 --- a/common/src/dscreen_util.cpp +++ b/common/src/dscreen_util.cpp @@ -27,6 +27,7 @@ #include "dscreen_constants.h" #include "dscreen_errcode.h" #include "dscreen_log.h" +#include "parameter.h" namespace OHOS { namespace DistributedHardware { @@ -110,5 +111,43 @@ std::string GetInterruptString(const std::string &value) return res; } + +template +bool GetSystemParam(const char *inName, T &outValue); +{ + if (inName == nullptr) { + DHLOGE("get system parameter failed, input param name is nullptr."); + return false; + } + + char tempValue[SYSTEM_PARAM_VALUE_SIZE] = {0}; + auto ret = GetParameter(inName, "-1", tempValue, sizeof(tempValue)); + if (ret <= 0) { + DHLOGE("get system parameter %s failed, ret=%" PRId32, inName, ret); + return false; + } + DHLOGI("get system parameter %s success, param value=%s", inName, tempValue); + + std::stringstream valueStr; + valueStr << tempValue; + valueStr >> outValue; + return true; +} + +template bool GetSystemParam(const char *inName, int32_t &outValue); +template bool GetSystemParam(const char *inName, uint32_t &outValue); +template bool GetSystemParam(const char *inName, int64_t &outValue); +template bool GetSystemParam(const char *inName, std::string &outValue); + +bool IsPartialRefreshEnabled() +{ + int32_t paramValue = 0; + return GetSystemParam(PARTIAL_REFRESH_PARAM, paramValue) && (paramValue == 1); +} + +bool IsSupportAVTransEngine(const std::string &version) +{ + return (version == AV_TRANS_SUPPORTED_VERSION) && !IsPartialRefreshEnabled(); +} } // namespace DistributedHardware } // namespace OHOS \ No newline at end of file diff --git a/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp b/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp index 8843ef5e..154ac45b 100644 --- a/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp @@ -81,22 +81,16 @@ int32_t DScreenManager::Init() int32_t DScreenManager::UnInit() { DHLOGI("DScreenManager::UnInit"); - int32_t ret = ScreenMgrAdapter::GetInstance().UnregisterScreenGroupListener(dScreenGroupListener_); - if (ret != DH_SUCCESS) { - DHLOGE("DScreenManager UnInit failed, err: %" PRId32, ret); - } - - dScreenCallback_ = nullptr; - + ScreenMgrAdapter::GetInstance().UnregisterScreenGroupListener(dScreenGroupListener_); { std::lock_guard lock(dScreenMapMtx_); dScreens_.clear(); } - { std::lock_guard lock(dScreenMapRelationMtx_); mapRelations_.clear(); } + dScreenCallback_ = nullptr; DHLOGI("DScreenManager::UnInit success"); return ret; } @@ -289,9 +283,9 @@ int32_t DScreenManager::DisableDistributedScreen(const std::string &devId, const std::string dScreenIdx = devId + SEPERATOR + dhId; std::lock_guard lock(dScreenMapMtx_); if (dScreens_.count(dScreenIdx) == 0) { - DHLOGE("dscreen not found, devId: %s, dhId: %s", - GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str()); - return ERR_DH_SCREEN_SA_DISABLE_FAILED; + DHLOGE("dscreen has already disabled, devId: %s, dhId: %s", GetAnonyString(devId).c_str(), + GetAnonyString(dhId).c_str()); + return DH_SUCCESS; } int32_t dScreenState = dScreens_[dScreenIdx]->GetState(); @@ -353,7 +347,7 @@ void DScreenManager::GetScreenDumpInfo(std::string &result) std::lock_guard lock(dScreenMapMtx_); if (dScreens_.size() == 0) { result.append("]"); - DHLOGD("no virtualscreen"); + DHLOGD("no virtual screen enabled in V1_0::DScreenManager."); return; } diff --git a/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen_manager.cpp b/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen_manager.cpp index 45969205..13041621 100644 --- a/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen_manager.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen_manager.cpp @@ -270,9 +270,9 @@ int32_t DScreenManager::DisableDistributedScreen(const std::string &devId, const std::string dScreenIdx = devId + SEPERATOR + dhId; std::lock_guard lock(dScreenMapMtx_); if (dScreens_.count(dScreenIdx) == 0) { - DHLOGE("dscreen not found, devId: %s, dhId: %s", - GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str()); - return ERR_DH_SCREEN_SA_DISABLE_FAILED; + DHLOGE("dscreen has already disabled, devId: %s, dhId: %s", GetAnonyString(devId).c_str(), + GetAnonyString(dhId).c_str()); + return DH_SUCCESS; } int32_t dScreenState = dScreens_[dScreenIdx]->GetState(); int32_t ret = DH_SUCCESS; @@ -332,7 +332,7 @@ void DScreenManager::GetScreenDumpInfo(std::string &result) std::lock_guard lock(dScreenMapMtx_); if (dScreens_.size() == 0) { result.append("]"); - DHLOGD("no virtualscreen"); + DHLOGD("no virtual screen enabled in V2_0::DScreenManager."); return; } for (const auto &iter : dScreens_) { diff --git a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp index 96024f1e..7288f652 100644 --- a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp +++ b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp @@ -46,12 +46,11 @@ void DScreenSourceService::OnStart() void DScreenSourceService::OnStop() { DHLOGI("dscreen source service stop."); - int32_t ret = -1; - if (version_ == "2.0") { - ret = V1_0::DScreenManager::GetInstance().UnInit(); - } else if (version_ == "3.0") { - ret = V2_0::DScreenManager::GetInstance().Release(); + int32_t ret = V2_0::DScreenManager::GetInstance().Release(); + if (ret != DH_SUCCESS) { + DHLOGE("Release V2_0::DScreenManager failed. err: %" PRId32, ret); } + ret = V1_0::DScreenManager::GetInstance().UnInit(); if (ret != DH_SUCCESS) { DHLOGE("UnInit V1_0::DScreenManager failed. err: %" PRId32, ret); } @@ -75,48 +74,42 @@ bool DScreenSourceService::Init() int32_t DScreenSourceService::InitSource(const std::string ¶ms, const sptr &callback) { + DHLOGI("Init source service, params: %s", params.c_str()); if (callback == nullptr) { DHLOGE("DScreenSourceService::InitSource, callback is nullptr."); return ERR_DH_SCREEN_SA_INIT_SOURCE_FAIL; } - DHLOGI("InitSource"); - version_ = params; - DHLOGI("InitSource params: %s, version_: %s", params.c_str(), version_.c_str()); - if (version_ == "2.0") { - int32_t ret = V1_0::DScreenManager::GetInstance().Init(); + if(IsSupportAVTransEngine(params)) { + int32_t ret = V2_0::DScreenManager::GetInstance().Initialize(); if (ret != DH_SUCCESS) { - DHLOGE("Init V1_0::DScreenManager failed. err: %" PRId32, ret); + DHLOGE("Initialize V2_0::DScreenManager failed. err: %" PRId32, ret); return ret; } - V1_0::DScreenManager::GetInstance().RegisterDScreenCallback(callback); - } else if (version_ == "3.0") { - int32_t ret = V2_0::DScreenManager::GetInstance().Initialize(); + V2_0::DScreenManager::GetInstance().RegisterDScreenCallback(callback); + } else { + int32_t ret = V1_0::DScreenManager::GetInstance().Init(); if (ret != DH_SUCCESS) { - DHLOGE("Init V2_0::DScreenManager failed. err: %" PRId32, ret); + DHLOGE("Init V1_0::DScreenManager failed. err: %" PRId32, ret); return ret; } - V2_0::DScreenManager::GetInstance().RegisterDScreenCallback(callback); + V1_0::DScreenManager::GetInstance().RegisterDScreenCallback(callback); } + + version_ = params; return DH_SUCCESS; } int32_t DScreenSourceService::ReleaseSource() { DHLOGI("ReleaseSource"); - int32_t ret = -1; - if (version_ == "2.0") { - ret = V1_0::DScreenManager::GetInstance().UnInit(); - if (ret != DH_SUCCESS) { - DHLOGE("UnInit V1_0::DScreenManager failed. err: %" PRId32, ret); - return ret; - } - } else if (version_ == "3.0") { - ret = V2_0::DScreenManager::GetInstance().Release(); - if (ret != DH_SUCCESS) { - DHLOGE("UnInit V2_0::DScreenManager failed. err: %" PRId32, ret); - return ret; - } + int32_t ret = V1_0::DScreenManager::GetInstance().UnInit(); + if (ret != DH_SUCCESS) { + DHLOGE("UnInit V1_0::DScreenManager failed. err: %" PRId32, ret); + } + ret = V2_0::DScreenManager::GetInstance().Release(); + if (ret != DH_SUCCESS) { + DHLOGE("Release V2_0::DScreenManager failed. err: %" PRId32, ret); } DHLOGI("exit source sa process"); auto systemAbilityMgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); @@ -136,15 +129,14 @@ int32_t DScreenSourceService::ReleaseSource() int32_t DScreenSourceService::RegisterDistributedHardware(const std::string &devId, const std::string &dhId, const EnableParam ¶m, const std::string &reqId) { + DHLOGI("Register source distributed screen, peer dscreen version: %s", param.version.c_str()); + int32_t ret = DH_SUCCESS; std::string attrs = param.attrs; - version_ = param.version; - int32_t ret = -1; - DHLOGI("Source RegisterDistributedHardware params.version: %s", param.version.c_str()); - if (version_ == "2.0") { - V1_0::DScreenManager::GetInstance().SetScreenVersion(version_); - ret = V1_0::DScreenManager::GetInstance().EnableDistributedScreen(devId, dhId, attrs, reqId); - } else if (version_ == "3.0") { + if (IsSupportAVTransEngine(param.version)) { ret = V2_0::DScreenManager::GetInstance().EnableDistributedScreen(devId, dhId, attrs, reqId); + } else { + V1_0::DScreenManager::GetInstance().SetScreenVersion(param.version); + ret = V1_0::DScreenManager::GetInstance().EnableDistributedScreen(devId, dhId, attrs, reqId); } if (ret != DH_SUCCESS) { DHLOGE("enable distributedScreen failed. devId: %s, dhId: %s, reqId: %s, attrs: %s", @@ -153,19 +145,16 @@ int32_t DScreenSourceService::RegisterDistributedHardware(const std::string &dev GetAnonyString(dhId).c_str(), "enable distributedScreen failed."); return ERR_DH_SCREEN_SA_ENABLE_FAILED; } + version_ = param.version; return DH_SUCCESS; } int32_t DScreenSourceService::UnregisterDistributedHardware(const std::string &devId, const std::string &dhId, const std::string &reqId) { - int ret = -1; - if (version_ == "2.0") { - ret = V1_0::DScreenManager::GetInstance().DisableDistributedScreen(devId, dhId, reqId); - } else if (version_ == "3.0") { - ret = V2_0::DScreenManager::GetInstance().DisableDistributedScreen(devId, dhId, reqId); - } - if (ret != DH_SUCCESS) { + int ret_v1 = V1_0::DScreenManager::GetInstance().DisableDistributedScreen(devId, dhId, reqId); + int ret_v2 = V2_0::DScreenManager::GetInstance().DisableDistributedScreen(devId, dhId, reqId); + if ((ret_v1 != DH_SUCCESS) || (ret_v2 != DH_SUCCESS)) { DHLOGE("disable distributedScreen failed. devId: %s, dhId: %s, reqId: %s", GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str(), reqId.c_str()); ReportUnRegisterFail(DSCREEN_REGISTER_FAIL, ret, GetAnonyString(devId).c_str(), @@ -198,13 +187,11 @@ int32_t DScreenSourceService::Dump(int32_t fd, const std::vector { DHLOGI("DScreenSourceService Dump."); (void)args; - std::string result; - if (version_ == "2.0") { - V1_0::DScreenManager::GetInstance().GetScreenDumpInfo(result); - } else if (version_ == "3.0") { - V2_0::DScreenManager::GetInstance().GetScreenDumpInfo(result); - } - int ret = dprintf(fd, "%s\n", result.c_str()); + std::string result_v1; + V1_0::DScreenManager::GetInstance().GetScreenDumpInfo(result_v1); + std::string result_v2; + V2_0::DScreenManager::GetInstance().GetScreenDumpInfo(result_v2); + int ret = dprintf(fd, "%s\n", (result_v1 + result_v2).c_str()); if (ret < 0) { DHLOGE("dprintf error"); return ERR_DH_SCREEN_SA_HIDUMPER_ERROR; -- Gitee From 05c45760ab6af74dbc95263fb9a2ec54857e1680 Mon Sep 17 00:00:00 2001 From: renguang1116 Date: Fri, 14 Jul 2023 10:38:26 +0800 Subject: [PATCH 02/13] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E9=80=82=E9=85=8D=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20Signed-off-by:=20renguang1116=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sourceservice/dscreenmgr/src/dscreen_manager_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/screenservice/test/unittest/sourceservice/dscreenmgr/src/dscreen_manager_test.cpp b/services/screenservice/test/unittest/sourceservice/dscreenmgr/src/dscreen_manager_test.cpp index e47872e7..4f24bc98 100644 --- a/services/screenservice/test/unittest/sourceservice/dscreenmgr/src/dscreen_manager_test.cpp +++ b/services/screenservice/test/unittest/sourceservice/dscreenmgr/src/dscreen_manager_test.cpp @@ -327,7 +327,7 @@ HWTEST_F(DScreenManagerTest, HandleNotifySetUpResult_001, TestSize.Level1) HWTEST_F(DScreenManagerTest, DisableDistributedScreen_001, TestSize.Level1) { int32_t ret = DScreenManager::GetInstance().DisableDistributedScreen("devId111", "dhId111", "reqId111"); - EXPECT_EQ(ERR_DH_SCREEN_SA_DISABLE_FAILED, ret); + EXPECT_EQ(DH_SUCCESS, ret); ret = DScreenManager::GetInstance().UnInit(); EXPECT_EQ(DH_SUCCESS, ret); -- Gitee From 13f7ca131a4906e0af555355ae593e6c1d197f07 Mon Sep 17 00:00:00 2001 From: renguang1116 Date: Fri, 14 Jul 2023 10:58:52 +0800 Subject: [PATCH 03/13] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E9=80=82=E9=85=8D=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20Signed-off-by:=20renguang1116=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/dscreen_sink_service.cpp | 37 ++++++++----------- .../src/dscreen_source_service.cpp | 8 ++-- 2 files changed, 20 insertions(+), 25 deletions(-) diff --git a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp index 28f379de..0b177903 100644 --- a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp +++ b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp @@ -53,7 +53,7 @@ void DScreenSinkService::OnStop() bool DScreenSinkService::Init() { - DHLOGI("dscreen sink service start init."); + DHLOGI("Init dscreen sink service."); if (!registerToService_) { bool ret = Publish(this); if (!ret) { @@ -62,32 +62,29 @@ bool DScreenSinkService::Init() } registerToService_ = true; } - DHLOGI("dscreenService init success."); + DHLOGI("dscreen sink service init success."); return true; } int32_t DScreenSinkService::InitSink(const std::string ¶ms) { - DHLOGI("InitSink"); - version_ = params; - DHLOGI("InitSink params: %s, version_: %s", params.c_str(), version_.c_str()); - if (version_ == "3.0") { + DHLOGI("Init sink dscreen region manager, params: %s", params.c_str()); + if(IsSupportAVTransEngine(params)) { int32_t ret = V2_0::ScreenRegionManager::GetInstance().Initialize(); if (ret != DH_SUCCESS) { - DHLOGE("Init ScreenRegionManager3.0 failed. err: %d", ret); - } + DHLOGE("Initialize V2_0::ScreenRegionManage failed. err: %d", ret); + } } + version_ = params; return DH_SUCCESS; } int32_t DScreenSinkService::ReleaseSink() { - DHLOGI("ReleaseSink"); - if (version_ == "2.0") { - V1_0::ScreenRegionManager::GetInstance().ReleaseAllRegions(); - } else if (version_ == "3.0") { - V2_0::ScreenRegionManager::GetInstance().Release(); - } + DHLOGI("Release sink dscreen region manager."); + V2_0::ScreenRegionManager::GetInstance().Release(); + V1_0::ScreenRegionManager::GetInstance().ReleaseAllRegions(); + DHLOGI("exit sink sa process"); auto systemAbilityMgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); if (systemAbilityMgr == nullptr) { @@ -131,13 +128,11 @@ int32_t DScreenSinkService::Dump(int32_t fd, const std::vector& { DHLOGI("DScreenSinkService Dump."); (void)args; - std::string result; - if (version_ == "2.0") { - V1_0::ScreenRegionManager::GetInstance().GetScreenDumpInfo(result); - } else if (version_ == "3.0") { - V2_0::ScreenRegionManager::GetInstance().GetScreenDumpInfo(result); - } - int ret = dprintf(fd, "%s\n", result.c_str()); + std::string result_v1; + V1_0::ScreenRegionManager::GetInstance().GetScreenDumpInfo(result_v1); + std::string result_v2; + V2_0::ScreenRegionManager::GetInstance().GetScreenDumpInfo(result_v2); + int ret = dprintf(fd, "%s\n", (result_v1 + result_v2).c_str()); if (ret < 0) { DHLOGE("dprintf error"); return ERR_DH_SCREEN_SA_HIDUMPER_ERROR; diff --git a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp index 7288f652..861ae8c5 100644 --- a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp +++ b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp @@ -59,7 +59,7 @@ void DScreenSourceService::OnStop() bool DScreenSourceService::Init() { - DHLOGI("dscreen source service start init."); + DHLOGI("Init dscreen source service."); if (!registerToService_) { bool ret = Publish(this); if (!ret) { @@ -68,13 +68,13 @@ bool DScreenSourceService::Init() } registerToService_ = true; } - DHLOGI("dscreen init success."); + DHLOGI("dscreen source service init success."); return true; } int32_t DScreenSourceService::InitSource(const std::string ¶ms, const sptr &callback) { - DHLOGI("Init source service, params: %s", params.c_str()); + DHLOGI("Init source dscreen manager, params: %s", params.c_str()); if (callback == nullptr) { DHLOGE("DScreenSourceService::InitSource, callback is nullptr."); return ERR_DH_SCREEN_SA_INIT_SOURCE_FAIL; @@ -102,7 +102,7 @@ int32_t DScreenSourceService::InitSource(const std::string ¶ms, const sptr Date: Fri, 14 Jul 2023 14:59:33 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E9=80=82=E9=85=8D=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20Signed-off-by:=20renguang1116=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bundle.json | 1 + common/BUILD.gn | 1 + common/include/dscreen_util.h | 3 +-- common/src/dscreen_util.cpp | 13 ++----------- .../include/dscreen_sink_service.h | 1 - .../dscreenservice/src/dscreen_sink_service.cpp | 5 +---- .../screenregionmgr/1.0/include/screenregion.h | 5 +---- .../1.0/include/screenregionmgr.h | 1 - .../screenregionmgr/1.0/src/screenregion.cpp | 14 ++------------ .../screenregionmgr/1.0/src/screenregionmgr.cpp | 6 +++--- .../dscreenmgr/1.0/include/dscreen.h | 2 +- .../dscreenmgr/1.0/include/dscreen_manager.h | 5 ++--- .../dscreenmgr/1.0/src/dscreen.cpp | 3 ++- .../dscreenmgr/1.0/src/dscreen_manager.cpp | 16 +++------------- .../dscreenmgr/2.0/include/dscreen_manager.h | 2 +- .../dscreenmgr/2.0/src/dscreen_manager.cpp | 4 ++-- .../include/dscreen_source_service.h | 1 - .../src/dscreen_source_service.cpp | 17 +++++------------ .../dscreenmgr/src/dscreen_manager_test.cpp | 10 +++++----- .../include/iscreen_sink_trans.h | 2 +- .../screensinktrans/include/screen_sink_trans.h | 2 +- .../screensinktrans/src/screen_sink_trans.cpp | 2 +- .../include/iscreen_source_trans.h | 3 +-- .../include/screen_source_trans.h | 3 +-- .../src/screen_source_trans.cpp | 7 +------ 25 files changed, 39 insertions(+), 90 deletions(-) diff --git a/bundle.json b/bundle.json index 02f11147..f537f86e 100644 --- a/bundle.json +++ b/bundle.json @@ -30,6 +30,7 @@ "components": [ "dsoftbus", "hisysevent", + "init", "ipc", "hilog", "input", diff --git a/common/BUILD.gn b/common/BUILD.gn index 08aa3588..2371814e 100644 --- a/common/BUILD.gn +++ b/common/BUILD.gn @@ -39,6 +39,7 @@ ohos_shared_library("distributed_screen_utils") { "hilog:libhilog", "hisysevent:libhisysevent", "hitrace:hitrace_meter", + "init:libbegetutil", "ipc:ipc_core", ] diff --git a/common/include/dscreen_util.h b/common/include/dscreen_util.h index dddb0b35..783926ea 100644 --- a/common/include/dscreen_util.h +++ b/common/include/dscreen_util.h @@ -26,8 +26,7 @@ std::string GetRandomID(); std::string GetAnonyString(const std::string &value); std::string GetInterruptString(const std::string &value); -template -bool GetSystemParam(const char *inName, T &outValue); +bool GetSystemParam(const char *inName, int32_t outValue); bool IsPartialRefreshEnabled(); bool IsSupportAVTransEngine(const std::string &version); } // namespace DistributedHardware diff --git a/common/src/dscreen_util.cpp b/common/src/dscreen_util.cpp index 52a224be..690f4614 100644 --- a/common/src/dscreen_util.cpp +++ b/common/src/dscreen_util.cpp @@ -112,8 +112,7 @@ std::string GetInterruptString(const std::string &value) return res; } -template -bool GetSystemParam(const char *inName, T &outValue); +bool GetSystemParam(const char *inName, int32_t outValue); { if (inName == nullptr) { DHLOGE("get system parameter failed, input param name is nullptr."); @@ -127,18 +126,10 @@ bool GetSystemParam(const char *inName, T &outValue); return false; } DHLOGI("get system parameter %s success, param value=%s", inName, tempValue); - - std::stringstream valueStr; - valueStr << tempValue; - valueStr >> outValue; + outValue = std::atoi(tempValue); return true; } -template bool GetSystemParam(const char *inName, int32_t &outValue); -template bool GetSystemParam(const char *inName, uint32_t &outValue); -template bool GetSystemParam(const char *inName, int64_t &outValue); -template bool GetSystemParam(const char *inName, std::string &outValue); - bool IsPartialRefreshEnabled() { int32_t paramValue = 0; diff --git a/services/screenservice/sinkservice/dscreenservice/include/dscreen_sink_service.h b/services/screenservice/sinkservice/dscreenservice/include/dscreen_sink_service.h index 876a964f..2831d052 100644 --- a/services/screenservice/sinkservice/dscreenservice/include/dscreen_sink_service.h +++ b/services/screenservice/sinkservice/dscreenservice/include/dscreen_sink_service.h @@ -44,7 +44,6 @@ protected: DISALLOW_COPY_AND_MOVE(DScreenSinkService); private: - std::string version_ = "2.0"; bool registerToService_ = false; bool Init(); diff --git a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp index 0b177903..e8f6928b 100644 --- a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp +++ b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp @@ -75,7 +75,6 @@ int32_t DScreenSinkService::InitSink(const std::string ¶ms) DHLOGE("Initialize V2_0::ScreenRegionManage failed. err: %d", ret); } } - version_ = params; return DH_SUCCESS; } @@ -119,9 +118,7 @@ void DScreenSinkService::DScreenNotify(const std::string &devId, int32_t eventCo { DHLOGI("DScreenNotify, devId:%s, eventCode: %" PRId32 ", eventContent:%s", GetAnonyString(devId).c_str(), eventCode, eventContent.c_str()); - if (version_ == "2.0") { - V1_0::ScreenRegionManager::GetInstance().HandleDScreenNotify(devId, eventCode, eventContent); - } + V1_0::ScreenRegionManager::GetInstance().HandleDScreenNotify(devId, eventCode, eventContent); } int32_t DScreenSinkService::Dump(int32_t fd, const std::vector& args) diff --git a/services/screenservice/sinkservice/screenregionmgr/1.0/include/screenregion.h b/services/screenservice/sinkservice/screenregionmgr/1.0/include/screenregion.h index 27049e61..39870424 100644 --- a/services/screenservice/sinkservice/screenregionmgr/1.0/include/screenregion.h +++ b/services/screenservice/sinkservice/screenregionmgr/1.0/include/screenregion.h @@ -52,19 +52,16 @@ public: std::shared_ptr GetVideoParam(); int32_t GetWindowId(); int32_t SetUpWindow(); - int32_t SetUp(); + int32_t SetUp(const std::string &version); int32_t Start(); int32_t Stop(); std::shared_ptr GetWindowProperty(); - void SetScreenVersion(std::string version); - std::string GetScreenVersion(); private: std::string remoteDevId_; uint64_t screenId_; // local screen id uint64_t displayId_; // local display id bool isRunning = false; - std::string version_ = "2.0"; std::shared_ptr videoParam_ = nullptr; std::shared_ptr mapRelation_ = nullptr; diff --git a/services/screenservice/sinkservice/screenregionmgr/1.0/include/screenregionmgr.h b/services/screenservice/sinkservice/screenregionmgr/1.0/include/screenregionmgr.h index f3774862..258ecf32 100644 --- a/services/screenservice/sinkservice/screenregionmgr/1.0/include/screenregionmgr.h +++ b/services/screenservice/sinkservice/screenregionmgr/1.0/include/screenregionmgr.h @@ -43,7 +43,6 @@ private: std::map> screenRegions_; std::mutex screenRegionsMtx_; std::string localDevId_; - std::string version_ = "2.0"; sptr GetDScreenSourceSA(const std::string &devId); int32_t NotifyRemoteScreenService(const std::string &remoteDevId, const std::string &dhId, diff --git a/services/screenservice/sinkservice/screenregionmgr/1.0/src/screenregion.cpp b/services/screenservice/sinkservice/screenregionmgr/1.0/src/screenregion.cpp index dfee0b80..4bcfa18d 100644 --- a/services/screenservice/sinkservice/screenregionmgr/1.0/src/screenregion.cpp +++ b/services/screenservice/sinkservice/screenregionmgr/1.0/src/screenregion.cpp @@ -130,17 +130,7 @@ int32_t ScreenRegion::SetUpWindow() return DH_SUCCESS; } -void ScreenRegion::SetScreenVersion(std::string version) -{ - version_ = version; -} - -std::string ScreenRegion::GetScreenVersion() -{ - return version_; -} - -int32_t ScreenRegion::SetUp() +int32_t ScreenRegion::SetUp(const std::string &version) { DHLOGI("ScreenRegion::SetUp, remoteDevId: %s", GetAnonyString(remoteDevId_).c_str()); int32_t ret = SetUpWindow(); @@ -152,7 +142,7 @@ int32_t ScreenRegion::SetUp() if (sinkTrans_ == nullptr) { sinkTrans_ = std::make_shared(); } - sinkTrans_->SetScreenVersion(version_); + sinkTrans_->SetScreenVersion(version); sinkTrans_->RegisterStateCallback(shared_from_this()); sinkTrans_->SetImageSurface(surface_); ret = sinkTrans_->SetUp(*videoParam_, *videoParam_, remoteDevId_); diff --git a/services/screenservice/sinkservice/screenregionmgr/1.0/src/screenregionmgr.cpp b/services/screenservice/sinkservice/screenregionmgr/1.0/src/screenregionmgr.cpp index f371657c..c01e820e 100644 --- a/services/screenservice/sinkservice/screenregionmgr/1.0/src/screenregionmgr.cpp +++ b/services/screenservice/sinkservice/screenregionmgr/1.0/src/screenregionmgr.cpp @@ -137,8 +137,9 @@ void ScreenRegionManager::HandleNotifySetUp(const std::string &remoteDevId, cons NotifyRemoteSourceSetUpResult(remoteDevId, "", ERR_DH_SCREEN_SA_SCREENREGION_SETUP_FAIL, ""); return; } + std::string version = "2.0"; if (IsString(eventContentJson, KEY_VERSION)) { - version_ = eventContentJson[KEY_VERSION].get(); + version = eventContentJson[KEY_VERSION].get(); } uint64_t screenId = eventContentJson[KEY_SCREEN_ID].get(); std::string dhId = eventContentJson[KEY_DH_ID].get(); @@ -168,8 +169,7 @@ void ScreenRegionManager::HandleNotifySetUp(const std::string &remoteDevId, cons } screenRegions_[remoteDevId] = screenRegion; } - screenRegion->SetScreenVersion(version_); - ret = screenRegion->SetUp(); + ret = screenRegion->SetUp(version); if (ret != DH_SUCCESS) { NotifyRemoteSourceSetUpResult(remoteDevId, dhId, ERR_DH_SCREEN_SA_SCREENREGION_SETUP_FAIL, ""); return; diff --git a/services/screenservice/sourceservice/dscreenmgr/1.0/include/dscreen.h b/services/screenservice/sourceservice/dscreenmgr/1.0/include/dscreen.h index 72bf959a..2266d35e 100644 --- a/services/screenservice/sourceservice/dscreenmgr/1.0/include/dscreen.h +++ b/services/screenservice/sourceservice/dscreenmgr/1.0/include/dscreen.h @@ -90,7 +90,7 @@ public: std::string GetDHId() const; std::string GetDevId() const; int32_t AddTask(const std::shared_ptr &task); - void SetScreenVersion(std::string &version); + void SetScreenVersion(const std::string &version); std::string GetScreenVersion(); private: diff --git a/services/screenservice/sourceservice/dscreenmgr/1.0/include/dscreen_manager.h b/services/screenservice/sourceservice/dscreenmgr/1.0/include/dscreen_manager.h index 26490b58..5505cd31 100644 --- a/services/screenservice/sourceservice/dscreenmgr/1.0/include/dscreen_manager.h +++ b/services/screenservice/sourceservice/dscreenmgr/1.0/include/dscreen_manager.h @@ -53,7 +53,7 @@ public: int32_t Init(); int32_t UnInit(); - int32_t EnableDistributedScreen(const std::string &devId, const std::string &dhId, const std::string &attrs, + int32_t EnableDistributedScreen(const std::string &devId, const std::string &dhId, const EnableParam ¶m, const std::string &reqId); int32_t DisableDistributedScreen(const std::string &devId, const std::string &dhId, const std::string &reqId); void HandleDScreenNotify(const std::string &devId, int32_t eventCode, const std::string &eventContent); @@ -64,8 +64,7 @@ public: int32_t RemoveFromGroup(const std::shared_ptr &changedScreen, uint64_t screenId); void GetScreenDumpInfo(std::string &result); void PublishMessage(const DHTopic topic, const std::shared_ptr &dScreen); - void SetScreenVersion(std::string &version); - std::string GetScreenVersion(); + private: ~DScreenManager(); DScreenManager(); diff --git a/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen.cpp b/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen.cpp index de78d72c..9e7f96f3 100644 --- a/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen.cpp @@ -107,10 +107,11 @@ uint64_t DScreen::GetScreenId() const return screenId_; } -void DScreen::SetScreenVersion(std::string &version) +void DScreen::SetScreenVersion(const std::string &version) { version_ = version; } + std::string DScreen::GetScreenVersion() { return version_; diff --git a/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp b/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp index 154ac45b..ef53c4c4 100644 --- a/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp @@ -242,7 +242,7 @@ void DScreenManager::OnUnregResult(const std::shared_ptr &dScreen, } int32_t DScreenManager::EnableDistributedScreen(const std::string &devId, const std::string &dhId, - const std::string &attrs, const std::string &reqId) + const EnableParam ¶m, const std::string &reqId) { DHLOGI("EnableDistributedScreen2.0, devId: %s, dhId:%s", GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str()); @@ -263,9 +263,9 @@ int32_t DScreenManager::EnableDistributedScreen(const std::string &devId, const DHLOGI("dScreen state Already is ENABLED or ENABLING."); return DH_SUCCESS; } - dScreen ->SetScreenVersion(version_); + dScreen ->SetScreenVersion(param.version); dScreens_[dScreenIdx] = dScreen; - int32_t ret = dScreen->AddTask(std::make_shared(TaskType::TASK_ENABLE, reqId, attrs)); + int32_t ret = dScreen->AddTask(std::make_shared(TaskType::TASK_ENABLE, reqId, param.attrs)); if (ret != DH_SUCCESS) { DHLOGE("EnableDistributedScreen, add task failed. devId: %s, dhId:%s", GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str()); @@ -540,16 +540,6 @@ void DScreenManager::HandleNotifySetUpResult(const std::string &remoteDevId, con dScreens_[dScreenIdx]->AddTask(std::make_shared(TaskType::TASK_CONNECT, "")); } - -void DScreenManager::SetScreenVersion(std::string &version) -{ - version_ = version; -} - -std::string DScreenManager::GetScreenVersion() -{ - return version_; -} } // namespace V1_0 } // namespace DistributedHardware } // namespace OHOS \ No newline at end of file diff --git a/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen_manager.h b/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen_manager.h index 6ae815af..e5e378a3 100644 --- a/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen_manager.h +++ b/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen_manager.h @@ -58,7 +58,7 @@ public: int32_t Initialize(); int32_t Release(); - int32_t EnableDistributedScreen(const std::string &devId, const std::string &dhId, const std::string &attrs, + int32_t EnableDistributedScreen(const std::string &devId, const std::string &dhId, const EnableParam ¶m, const std::string &reqId); int32_t DisableDistributedScreen(const std::string &devId, const std::string &dhId, const std::string &reqId); void RegisterDScreenCallback(const sptr &callback); diff --git a/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen_manager.cpp b/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen_manager.cpp index 13041621..944d69e7 100644 --- a/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen_manager.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen_manager.cpp @@ -235,7 +235,7 @@ void DScreenManager::OnUnregResult(const std::shared_ptr &dScreen, } int32_t DScreenManager::EnableDistributedScreen(const std::string &devId, const std::string &dhId, - const std::string &attrs, const std::string &reqId) + const EnableParam ¶m, const std::string &reqId) { DHLOGI("EnableDistributedScreen3.0, devId: %s, dhId:%s", GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str()); @@ -255,7 +255,7 @@ int32_t DScreenManager::EnableDistributedScreen(const std::string &devId, const return DH_SUCCESS; } dScreens_[dScreenIdx] = dScreen; - int32_t ret = dScreen->AddTask(std::make_shared(TaskType::TASK_ENABLE, reqId, attrs)); + int32_t ret = dScreen->AddTask(std::make_shared(TaskType::TASK_ENABLE, reqId, param.attrs)); if (ret != DH_SUCCESS) { DHLOGE("EnableDistributedScreen, add task failed. devId: %s, dhId:%s", GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str()); diff --git a/services/screenservice/sourceservice/dscreenservice/include/dscreen_source_service.h b/services/screenservice/sourceservice/dscreenservice/include/dscreen_source_service.h index 163a8b05..9cbd7e6f 100644 --- a/services/screenservice/sourceservice/dscreenservice/include/dscreen_source_service.h +++ b/services/screenservice/sourceservice/dscreenservice/include/dscreen_source_service.h @@ -49,7 +49,6 @@ protected: DISALLOW_COPY_AND_MOVE(DScreenSourceService); private: - std::string version_ = "2.0"; bool Init(); bool registerToService_ = false; diff --git a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp index 861ae8c5..83012207 100644 --- a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp +++ b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp @@ -95,8 +95,6 @@ int32_t DScreenSourceService::InitSource(const std::string ¶ms, const sptr& args) diff --git a/services/screenservice/test/unittest/sourceservice/dscreenmgr/src/dscreen_manager_test.cpp b/services/screenservice/test/unittest/sourceservice/dscreenmgr/src/dscreen_manager_test.cpp index 4f24bc98..dfe69538 100644 --- a/services/screenservice/test/unittest/sourceservice/dscreenmgr/src/dscreen_manager_test.cpp +++ b/services/screenservice/test/unittest/sourceservice/dscreenmgr/src/dscreen_manager_test.cpp @@ -170,7 +170,7 @@ HWTEST_F(DScreenManagerTest, EnableDistributedScreen_001, TestSize.Level1) int32_t ret = DScreenManager::GetInstance().UnInit(); EXPECT_EQ(DH_SUCCESS, ret); - ret = DScreenManager::GetInstance().EnableDistributedScreen("", "", "", ""); + ret = DScreenManager::GetInstance().EnableDistributedScreen("", "", EnableParam{"", ""}, ""); EXPECT_EQ(ERR_DH_SCREEN_SA_ENABLE_FAILED, ret); ret = DScreenManager::GetInstance().Init(); @@ -178,18 +178,18 @@ HWTEST_F(DScreenManagerTest, EnableDistributedScreen_001, TestSize.Level1) std::string devId = "devId000"; std::string dhId = "dhId000"; - std::string attrs = "attrs000"; + EnableParam param = {"2.0", "attrs000"}; std::string reqId = "reqId000"; - ret = DScreenManager::GetInstance().EnableDistributedScreen(devId, dhId, attrs, reqId); + ret = DScreenManager::GetInstance().EnableDistributedScreen(devId, dhId, param, reqId); EXPECT_EQ(DH_SUCCESS, ret); std::shared_ptr dScreen = DScreenManager::GetInstance().FindDScreenByScreenId(SCREEN_ID_INVALID); dScreen->SetState(DScreenState::ENABLED); - ret = DScreenManager::GetInstance().EnableDistributedScreen(devId, dhId, attrs, reqId); + ret = DScreenManager::GetInstance().EnableDistributedScreen(devId, dhId, param, reqId); EXPECT_EQ(DH_SUCCESS, ret); dScreen->SetState(DScreenState::ENABLING); - ret = DScreenManager::GetInstance().EnableDistributedScreen(devId, dhId, attrs, reqId); + ret = DScreenManager::GetInstance().EnableDistributedScreen(devId, dhId, param, reqId); EXPECT_EQ(DH_SUCCESS, ret); } diff --git a/services/screentransport/screensinktrans/include/iscreen_sink_trans.h b/services/screentransport/screensinktrans/include/iscreen_sink_trans.h index 9b3857d8..0dc3ce6f 100644 --- a/services/screentransport/screensinktrans/include/iscreen_sink_trans.h +++ b/services/screentransport/screensinktrans/include/iscreen_sink_trans.h @@ -34,7 +34,7 @@ public: virtual int32_t Stop() = 0; virtual int32_t RegisterStateCallback(const std::shared_ptr &callBack) = 0; virtual int32_t SetImageSurface(const sptr &surface) = 0; - virtual void SetScreenVersion(std::string &version) = 0; + virtual void SetScreenVersion(const std::string &version) = 0; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/screentransport/screensinktrans/include/screen_sink_trans.h b/services/screentransport/screensinktrans/include/screen_sink_trans.h index 8738684e..82334890 100644 --- a/services/screentransport/screensinktrans/include/screen_sink_trans.h +++ b/services/screentransport/screensinktrans/include/screen_sink_trans.h @@ -40,7 +40,7 @@ public: int32_t Stop() override; int32_t RegisterStateCallback(const std::shared_ptr &callback) override; int32_t SetImageSurface(const sptr &surface) override; - void SetScreenVersion(std::string &version) override; + void SetScreenVersion(const std::string &version) override; void OnSessionOpened() override; void OnSessionClosed() override; diff --git a/services/screentransport/screensinktrans/src/screen_sink_trans.cpp b/services/screentransport/screensinktrans/src/screen_sink_trans.cpp index 03d88dbb..50d31c92 100644 --- a/services/screentransport/screensinktrans/src/screen_sink_trans.cpp +++ b/services/screentransport/screensinktrans/src/screen_sink_trans.cpp @@ -324,7 +324,7 @@ void ScreenSinkTrans::OnDataReceived(const std::shared_ptr &data) } } -void ScreenSinkTrans::SetScreenVersion(std::string &version) +void ScreenSinkTrans::SetScreenVersion(const std::string &version) { version_ = version; } diff --git a/services/screentransport/screensourcetrans/include/iscreen_source_trans.h b/services/screentransport/screensourcetrans/include/iscreen_source_trans.h index 528d6730..9ef0d0c8 100644 --- a/services/screentransport/screensourcetrans/include/iscreen_source_trans.h +++ b/services/screentransport/screensourcetrans/include/iscreen_source_trans.h @@ -35,8 +35,7 @@ public: virtual int32_t RegisterStateCallback(const std::shared_ptr &callBack) = 0; virtual sptr GetImageSurface() = 0; virtual int32_t SetConsumerSurface() = 0; - virtual void SetScreenVersion(std::string &version) = 0; - virtual std::string GetScreenVersion() = 0; + virtual void SetScreenVersion(const std::string &version) = 0; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/screentransport/screensourcetrans/include/screen_source_trans.h b/services/screentransport/screensourcetrans/include/screen_source_trans.h index 45bd7c88..dbc0f6af 100644 --- a/services/screentransport/screensourcetrans/include/screen_source_trans.h +++ b/services/screentransport/screensourcetrans/include/screen_source_trans.h @@ -53,8 +53,7 @@ public: void OnProcessorStateNotify(int32_t state) override; void OnDamageProcessDone(sptr &surfaceBuffer, const std::vector &damages) override; int32_t SetConsumerSurface() override; - void SetScreenVersion(std::string &version) override; - std::string GetScreenVersion() override; + void SetScreenVersion(const std::string &version) override; private: int32_t CheckVideoParam(const VideoParam ¶m); diff --git a/services/screentransport/screensourcetrans/src/screen_source_trans.cpp b/services/screentransport/screensourcetrans/src/screen_source_trans.cpp index 8ec4fa7c..153c6d6b 100644 --- a/services/screentransport/screensourcetrans/src/screen_source_trans.cpp +++ b/services/screentransport/screensourcetrans/src/screen_source_trans.cpp @@ -200,16 +200,11 @@ sptr ScreenSourceTrans::GetImageSurface() return imageProcessor_->GetImageSurface(); } -void ScreenSourceTrans::SetScreenVersion(std::string &version) +void ScreenSourceTrans::SetScreenVersion(const std::string &version) { version_ = version; } -std::string ScreenSourceTrans::GetScreenVersion() -{ - return version_; -} - int32_t ScreenSourceTrans::CheckVideoParam(const VideoParam ¶m) { if ((param.GetCodecType() != VIDEO_CODEC_TYPE_VIDEO_H264) && -- Gitee From fe39137a0bdccb0b1b4ec39b6ab73b101675a5ec Mon Sep 17 00:00:00 2001 From: renguang1116 Date: Fri, 14 Jul 2023 15:38:17 +0800 Subject: [PATCH 05/13] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E9=80=82=E9=85=8D=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20Signed-off-by:=20renguang1116=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/src/dscreen_util.cpp | 2 +- .../sinkservice/dscreenservice/src/dscreen_sink_service.cpp | 2 +- .../dscreenservice/src/dscreen_source_service.cpp | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/common/src/dscreen_util.cpp b/common/src/dscreen_util.cpp index 690f4614..ac9a72a2 100644 --- a/common/src/dscreen_util.cpp +++ b/common/src/dscreen_util.cpp @@ -112,7 +112,7 @@ std::string GetInterruptString(const std::string &value) return res; } -bool GetSystemParam(const char *inName, int32_t outValue); +bool GetSystemParam(const char *inName, int32_t outValue) { if (inName == nullptr) { DHLOGE("get system parameter failed, input param name is nullptr."); diff --git a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp index e8f6928b..6793a2b8 100644 --- a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp +++ b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp @@ -69,7 +69,7 @@ bool DScreenSinkService::Init() int32_t DScreenSinkService::InitSink(const std::string ¶ms) { DHLOGI("Init sink dscreen region manager, params: %s", params.c_str()); - if(IsSupportAVTransEngine(params)) { + if (IsSupportAVTransEngine(params)) { int32_t ret = V2_0::ScreenRegionManager::GetInstance().Initialize(); if (ret != DH_SUCCESS) { DHLOGE("Initialize V2_0::ScreenRegionManage failed. err: %d", ret); diff --git a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp index 83012207..73a622eb 100644 --- a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp +++ b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp @@ -80,13 +80,13 @@ int32_t DScreenSourceService::InitSource(const std::string ¶ms, const sptr Date: Fri, 14 Jul 2023 16:27:42 +0800 Subject: [PATCH 06/13] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E9=80=82=E9=85=8D=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20Signed-off-by:=20renguang1116=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/include/dscreen_constants.h | 1 + 1 file changed, 1 insertion(+) diff --git a/common/include/dscreen_constants.h b/common/include/dscreen_constants.h index 60db57c7..c970e367 100644 --- a/common/include/dscreen_constants.h +++ b/common/include/dscreen_constants.h @@ -209,6 +209,7 @@ constexpr uint8_t TASK_WAIT_SECONDS = 1; constexpr int32_t JPEG_QUALITY = 80; constexpr uint32_t BIT_RATE = 12000000; constexpr int32_t WAIT_TIMEOUT_MS = 5000; +constexpr uint32_t SYSTEM_PARAM_VALUE_SIZE = 50; } // namespace DistributedHardware } // namespace OHOS #endif \ No newline at end of file -- Gitee From 695efe1c55fe16f630867209217b503ff3d18a9c Mon Sep 17 00:00:00 2001 From: renguang1116 Date: Fri, 14 Jul 2023 17:04:37 +0800 Subject: [PATCH 07/13] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E9=80=82=E9=85=8D=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20Signed-off-by:=20renguang1116=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dscreenmgr/1.0/include/dscreen_manager.h | 1 + .../dscreenmgr/1.0/src/dscreen_manager.cpp | 4 +--- .../dscreenmgr/2.0/include/dscreen_manager.h | 1 + .../src/dscreen_source_service.cpp | 16 ++++++++++++---- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/services/screenservice/sourceservice/dscreenmgr/1.0/include/dscreen_manager.h b/services/screenservice/sourceservice/dscreenmgr/1.0/include/dscreen_manager.h index 5505cd31..e17a6e4b 100644 --- a/services/screenservice/sourceservice/dscreenmgr/1.0/include/dscreen_manager.h +++ b/services/screenservice/sourceservice/dscreenmgr/1.0/include/dscreen_manager.h @@ -23,6 +23,7 @@ #include "dscreen.h" #include "dscreen_maprelation.h" +#include "idistributed_hardware_source.h" #include "idscreen_sink.h" #include "idscreen_source_callback.h" #include "video_param.h" diff --git a/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp b/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp index ef53c4c4..4cfac139 100644 --- a/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp @@ -70,11 +70,9 @@ int32_t DScreenManager::Init() return ret; } } - if (dScreenCallback_ == nullptr) { dScreenCallback_ = std::make_shared(); } - return DH_SUCCESS; } @@ -92,7 +90,7 @@ int32_t DScreenManager::UnInit() } dScreenCallback_ = nullptr; DHLOGI("DScreenManager::UnInit success"); - return ret; + return DH_SUCCESS; } void DScreenGroupListener::OnChange(const std::vector &screenIds, Rosen::ScreenGroupChangeEvent event) diff --git a/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen_manager.h b/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen_manager.h index e5e378a3..cb928f6c 100644 --- a/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen_manager.h +++ b/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen_manager.h @@ -24,6 +24,7 @@ #include "av_sender_engine_adapter.h" #include "dscreen.h" #include "dscreen_maprelation.h" +#include "idistributed_hardware_source.h" #include "idscreen_sink.h" #include "idscreen_source_callback.h" #include "video_param.h" diff --git a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp index 73a622eb..6973b588 100644 --- a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp +++ b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp @@ -147,10 +147,18 @@ int32_t DScreenSourceService::RegisterDistributedHardware(const std::string &dev int32_t DScreenSourceService::UnregisterDistributedHardware(const std::string &devId, const std::string &dhId, const std::string &reqId) { - int ret_v1 = V1_0::DScreenManager::GetInstance().DisableDistributedScreen(devId, dhId, reqId); - int ret_v2 = V2_0::DScreenManager::GetInstance().DisableDistributedScreen(devId, dhId, reqId); - if ((ret_v1 != DH_SUCCESS) || (ret_v2 != DH_SUCCESS)) { - DHLOGE("disable distributedScreen failed. devId: %s, dhId: %s, reqId: %s", + int ret = V1_0::DScreenManager::GetInstance().DisableDistributedScreen(devId, dhId, reqId); + if (ret != DH_SUCCESS) { + DHLOGE("V1_0::DScreenManager disable distributedScreen failed. devId: %s, dhId: %s, reqId: %s", + GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str(), reqId.c_str()); + ReportUnRegisterFail(DSCREEN_REGISTER_FAIL, ret, GetAnonyString(devId).c_str(), + GetAnonyString(dhId).c_str(), "disable distributedScreen failed."); + return ERR_DH_SCREEN_SA_DISABLE_FAILED; + } + + ret = V2_0::DScreenManager::GetInstance().DisableDistributedScreen(devId, dhId, reqId); + if (ret != DH_SUCCESS) { + DHLOGE("V2_0::DScreenManager disable distributedScreen failed. devId: %s, dhId: %s, reqId: %s", GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str(), reqId.c_str()); ReportUnRegisterFail(DSCREEN_REGISTER_FAIL, ret, GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str(), "disable distributedScreen failed."); -- Gitee From 7638cdc8671ed8580c45772232d9439284e3b9dc Mon Sep 17 00:00:00 2001 From: renguang1116 Date: Mon, 17 Jul 2023 10:45:58 +0800 Subject: [PATCH 08/13] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E9=80=82=E9=85=8D=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20Signed-off-by:=20renguang1116=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/include/dscreen_constants.h | 1 + common/test/unittest/BUILD.gn | 1 + .../sinkservice/screenregionmgr/1.0/include/screenregion.h | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/common/include/dscreen_constants.h b/common/include/dscreen_constants.h index c970e367..8083702d 100644 --- a/common/include/dscreen_constants.h +++ b/common/include/dscreen_constants.h @@ -134,6 +134,7 @@ constexpr int32_t INVALID_WINDOW_ID = -1; constexpr int32_t STRIDE_ALIGNMENT = 0x8; constexpr int32_t SURFACE_SYNC_FENCE_TIMEOUT = 100; +const std::string PARTIAL_REFRESH_VERSION = "2.0"; const std::string AV_TRANS_SUPPORTED_VERSION = "3.0"; const std::string DSCREEN_LOG_TITLE_TAG = "DSCREEN"; const std::string DSCREEN_PREFIX = "DISTRIBUTED_SCREEN"; diff --git a/common/test/unittest/BUILD.gn b/common/test/unittest/BUILD.gn index 61c43f8a..1ac48b3c 100644 --- a/common/test/unittest/BUILD.gn +++ b/common/test/unittest/BUILD.gn @@ -51,6 +51,7 @@ ohos_unittest("ScreenCommonTest") { "dsoftbus:softbus_client", "hilog:libhilog", "hisysevent:libhisysevent", + "init:libbegetutil", "ipc:ipc_core", ] } diff --git a/services/screenservice/sinkservice/screenregionmgr/1.0/include/screenregion.h b/services/screenservice/sinkservice/screenregionmgr/1.0/include/screenregion.h index 39870424..e9769a8f 100644 --- a/services/screenservice/sinkservice/screenregionmgr/1.0/include/screenregion.h +++ b/services/screenservice/sinkservice/screenregionmgr/1.0/include/screenregion.h @@ -52,7 +52,7 @@ public: std::shared_ptr GetVideoParam(); int32_t GetWindowId(); int32_t SetUpWindow(); - int32_t SetUp(const std::string &version); + int32_t SetUp(const std::string &version = PARTIAL_REFRESH_VERSION); int32_t Start(); int32_t Stop(); std::shared_ptr GetWindowProperty(); -- Gitee From 59128c0ab2639d70339565923f1582db2a9e3ddc Mon Sep 17 00:00:00 2001 From: renguang1116 Date: Mon, 17 Jul 2023 11:40:29 +0800 Subject: [PATCH 09/13] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E9=80=82=E9=85=8D=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20Signed-off-by:=20renguang1116=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/include/dscreen_constants.h | 1 + common/include/dscreen_util.h | 1 - common/src/dscreen_util.cpp | 22 +++++----------------- 3 files changed, 6 insertions(+), 18 deletions(-) diff --git a/common/include/dscreen_constants.h b/common/include/dscreen_constants.h index 8083702d..05a75cb5 100644 --- a/common/include/dscreen_constants.h +++ b/common/include/dscreen_constants.h @@ -187,6 +187,7 @@ const std::string SINK_WIN_SHOW_X = "sinkWinShowX"; const std::string SINK_WIN_SHOW_Y = "sinkWinShowY"; constexpr const char* PARTIAL_REFRESH_PARAM = "persist.distributedhardware.dscreen.partial.refresh.enable"; +constexpr int32_t PARTIAL_REFRESH_ENABLED_VALUE = 1; constexpr uint32_t MAX_MESSAGES_LEN = 40 * 1024 * 1024; constexpr float DEFAULT_DENSITY = 2.0; constexpr int32_t DEFAULT_SCREEN_FLAGS = 0; diff --git a/common/include/dscreen_util.h b/common/include/dscreen_util.h index 783926ea..ed634031 100644 --- a/common/include/dscreen_util.h +++ b/common/include/dscreen_util.h @@ -26,7 +26,6 @@ std::string GetRandomID(); std::string GetAnonyString(const std::string &value); std::string GetInterruptString(const std::string &value); -bool GetSystemParam(const char *inName, int32_t outValue); bool IsPartialRefreshEnabled(); bool IsSupportAVTransEngine(const std::string &version); } // namespace DistributedHardware diff --git a/common/src/dscreen_util.cpp b/common/src/dscreen_util.cpp index ac9a72a2..26419433 100644 --- a/common/src/dscreen_util.cpp +++ b/common/src/dscreen_util.cpp @@ -112,28 +112,16 @@ std::string GetInterruptString(const std::string &value) return res; } -bool GetSystemParam(const char *inName, int32_t outValue) +bool IsPartialRefreshEnabled() { - if (inName == nullptr) { - DHLOGE("get system parameter failed, input param name is nullptr."); - return false; - } - char tempValue[SYSTEM_PARAM_VALUE_SIZE] = {0}; - auto ret = GetParameter(inName, "-1", tempValue, sizeof(tempValue)); + auto ret = GetParameter(PARTIAL_REFRESH_PARAM, "-1", tempValue, sizeof(tempValue)); if (ret <= 0) { - DHLOGE("get system parameter %s failed, ret=%" PRId32, inName, ret); + DHLOGE("get system parameter (dscreen.partial.refresh.enable) failed, ret=%" PRId32, ret); return false; } - DHLOGI("get system parameter %s success, param value=%s", inName, tempValue); - outValue = std::atoi(tempValue); - return true; -} - -bool IsPartialRefreshEnabled() -{ - int32_t paramValue = 0; - return GetSystemParam(PARTIAL_REFRESH_PARAM, paramValue) && (paramValue == 1); + DHLOGI("get system parameter (dscreen.partial.refresh.enable) success, param value = %s", tempValue); + return (std::atoi(tempValue) == PARTIAL_REFRESH_ENABLED_VALUE); } bool IsSupportAVTransEngine(const std::string &version) -- Gitee From 149522659661757f799410477b63a9459a8bc298 Mon Sep 17 00:00:00 2001 From: renguang1116 Date: Mon, 17 Jul 2023 16:17:22 +0800 Subject: [PATCH 10/13] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E9=80=82=E9=85=8D=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20Signed-off-by:=20renguang1116=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/include/dscreen_constants.h | 9 +++---- common/src/dscreen_util.cpp | 3 ++- .../1.0/include/screenregion.h | 2 +- .../dscreenmgr/1.0/include/dscreen_manager.h | 1 - .../screenregionmgr/src/screenregion_test.cpp | 6 +++-- .../screensinktrans/src/screen_sink_trans.cpp | 2 +- .../src/screen_source_trans.cpp | 26 +++++-------------- 7 files changed, 18 insertions(+), 31 deletions(-) diff --git a/common/include/dscreen_constants.h b/common/include/dscreen_constants.h index 05a75cb5..9e37aa03 100644 --- a/common/include/dscreen_constants.h +++ b/common/include/dscreen_constants.h @@ -103,14 +103,11 @@ constexpr uint32_t THREE = 3; constexpr uint32_t ZERO = 0; constexpr uint32_t ALIGNEDBITS = 32; -/* Version */ -constexpr uint32_t OLD = 1; -constexpr uint32_t NEW = 2; - /* Screen session name max len */ constexpr uint32_t DSCREEN_MAX_SESSION_NAME_LEN = 50; constexpr uint32_t DSCREEN_MAX_DEVICE_ID_LEN = 100; + /* Screen data received max length */ constexpr uint32_t DSCREEN_MAX_RECV_DATA_LEN = 104857600; @@ -134,8 +131,6 @@ constexpr int32_t INVALID_WINDOW_ID = -1; constexpr int32_t STRIDE_ALIGNMENT = 0x8; constexpr int32_t SURFACE_SYNC_FENCE_TIMEOUT = 100; -const std::string PARTIAL_REFRESH_VERSION = "2.0"; -const std::string AV_TRANS_SUPPORTED_VERSION = "3.0"; const std::string DSCREEN_LOG_TITLE_TAG = "DSCREEN"; const std::string DSCREEN_PREFIX = "DISTRIBUTED_SCREEN"; const std::string SCREEN_PREFIX = "SCREEN"; @@ -187,6 +182,8 @@ const std::string SINK_WIN_SHOW_X = "sinkWinShowX"; const std::string SINK_WIN_SHOW_Y = "sinkWinShowY"; constexpr const char* PARTIAL_REFRESH_PARAM = "persist.distributedhardware.dscreen.partial.refresh.enable"; +constexpr int32_t DSCREEN_MIN_VERSION = 1; +constexpr int32_t AV_TRANS_SUPPORTED_VERSION = 3; constexpr int32_t PARTIAL_REFRESH_ENABLED_VALUE = 1; constexpr uint32_t MAX_MESSAGES_LEN = 40 * 1024 * 1024; constexpr float DEFAULT_DENSITY = 2.0; diff --git a/common/src/dscreen_util.cpp b/common/src/dscreen_util.cpp index 26419433..69ea423d 100644 --- a/common/src/dscreen_util.cpp +++ b/common/src/dscreen_util.cpp @@ -126,7 +126,8 @@ bool IsPartialRefreshEnabled() bool IsSupportAVTransEngine(const std::string &version) { - return (version == AV_TRANS_SUPPORTED_VERSION) && !IsPartialRefreshEnabled(); + + return (std::atoi(const_cast(version.c_str())) >= AV_TRANS_SUPPORTED_VERSION) && !IsPartialRefreshEnabled(); } } // namespace DistributedHardware } // namespace OHOS \ No newline at end of file diff --git a/services/screenservice/sinkservice/screenregionmgr/1.0/include/screenregion.h b/services/screenservice/sinkservice/screenregionmgr/1.0/include/screenregion.h index e9769a8f..39870424 100644 --- a/services/screenservice/sinkservice/screenregionmgr/1.0/include/screenregion.h +++ b/services/screenservice/sinkservice/screenregionmgr/1.0/include/screenregion.h @@ -52,7 +52,7 @@ public: std::shared_ptr GetVideoParam(); int32_t GetWindowId(); int32_t SetUpWindow(); - int32_t SetUp(const std::string &version = PARTIAL_REFRESH_VERSION); + int32_t SetUp(const std::string &version); int32_t Start(); int32_t Stop(); std::shared_ptr GetWindowProperty(); diff --git a/services/screenservice/sourceservice/dscreenmgr/1.0/include/dscreen_manager.h b/services/screenservice/sourceservice/dscreenmgr/1.0/include/dscreen_manager.h index e17a6e4b..8910cb64 100644 --- a/services/screenservice/sourceservice/dscreenmgr/1.0/include/dscreen_manager.h +++ b/services/screenservice/sourceservice/dscreenmgr/1.0/include/dscreen_manager.h @@ -77,7 +77,6 @@ private: sptr dScreenGroupListener_ = nullptr; std::shared_ptr dScreenCallback_ = nullptr; std::string localDevId_; - std::string version_ = "1.0"; sptr GetDScreenSinkSA(const std::string &devId); int32_t NotifyRemoteScreenService(const std::string &devId, int32_t eventCode, const std::string &eventContent); diff --git a/services/screenservice/test/unittest/sinkservice/screenregionmgr/src/screenregion_test.cpp b/services/screenservice/test/unittest/sinkservice/screenregionmgr/src/screenregion_test.cpp index 47edb234..140fbada 100644 --- a/services/screenservice/test/unittest/sinkservice/screenregionmgr/src/screenregion_test.cpp +++ b/services/screenservice/test/unittest/sinkservice/screenregionmgr/src/screenregion_test.cpp @@ -178,7 +178,8 @@ HWTEST_F(ScreenRegionTest, SetUp_001, TestSize.Level1) videoParam->videoFormat_ = VIDEO_DATA_FORMAT_YUVI420; videoParam->fps_ = 30; screenRegion_->SetVideoParam(videoParam); - int32_t ret = screenRegion_->SetUp(); + std::string version = "1.0"; + int32_t ret = screenRegion_->SetUp(version); EXPECT_EQ(ERR_DH_SCREEN_SA_DSCREEN_SCREENGION_SETUP_FAILED, ret); } @@ -192,7 +193,8 @@ HWTEST_F(ScreenRegionTest, SetUp_001, TestSize.Level1) HWTEST_F(ScreenRegionTest, SetUp_002, TestSize.Level1) { screenRegion_->mapRelation_ = nullptr; - int32_t ret = screenRegion_->SetUp(); + std::string version = "1.0"; + int32_t ret = screenRegion_->SetUp(version); EXPECT_EQ(ERR_DH_SCREEN_SA_DSCREEN_SCREENGION_SETUP_FAILED, ret); } diff --git a/services/screentransport/screensinktrans/src/screen_sink_trans.cpp b/services/screentransport/screensinktrans/src/screen_sink_trans.cpp index 50d31c92..1a1fedaf 100644 --- a/services/screentransport/screensinktrans/src/screen_sink_trans.cpp +++ b/services/screentransport/screensinktrans/src/screen_sink_trans.cpp @@ -209,7 +209,7 @@ int32_t ScreenSinkTrans::InitScreenTrans(const VideoParam &localParam, const Vid const std::string &peerDevId) { screenChannel_ = std::make_shared(peerDevId); - if (atoi(version_.c_str()) == TWO) { + if (std::atoi(version_.c_str()) > DSCREEN_MIN_VERSION) { screenChannel_->SetJpegSessionFlag(true); } int32_t ret = RegisterChannelListener(); diff --git a/services/screentransport/screensourcetrans/src/screen_source_trans.cpp b/services/screentransport/screensourcetrans/src/screen_source_trans.cpp index 153c6d6b..7802c84b 100644 --- a/services/screentransport/screensourcetrans/src/screen_source_trans.cpp +++ b/services/screentransport/screensourcetrans/src/screen_source_trans.cpp @@ -271,7 +271,7 @@ int32_t ScreenSourceTrans::InitScreenTrans(const VideoParam &localParam, const V { DHLOGI("%s:InitScreenTrans.", LOG_TAG); screenChannel_ = std::make_shared(peerDevId); - if (atoi(version_.c_str()) == TWO) { + if (std::atoi(version_.c_str()) > DSCREEN_MIN_VERSION) { screenChannel_->SetJpegSessionFlag(true); } int32_t ret = RegisterChannelListener(); @@ -392,24 +392,12 @@ void ScreenSourceTrans::OnDamageProcessDone(sptr &surfaceBuffer, DHLOGE("%s: Trans surfaceBuffer is null.", LOG_TAG); return; } - int32_t ret = DH_SUCCESS; - switch (atoi(version_.c_str())) { - case OLD: - DHLOGI("%s: ProcessFullImage.", LOG_TAG); - ret = imageProcessor_->ProcessFullImage(surfaceBuffer); - if (ret != DH_SUCCESS) { - DHLOGE("%s: ImageProcessor process full image failed.", LOG_TAG); - } - break; - case NEW: - DHLOGI("%s: InputBufferImage.", LOG_TAG); - ret = screenDecisionCenter_->InputBufferImage(surfaceBuffer, damages); - if (ret != DH_SUCCESS) { - DHLOGE("%s: DecisionCenter process full image failed.", LOG_TAG); - } - break; - default: - break; + if (std::atoi(version_.c_str()) == DSCREEN_MIN_VERSION) { + DHLOGI("%s: not support partial refresh, run full full image process.", LOG_TAG); + imageProcessor_->ProcessFullImage(surfaceBuffer); + } else { + DHLOGI("%s: run partial refresh image process.", LOG_TAG); + screenDecisionCenter_->InputBufferImage(surfaceBuffer, damages); } } -- Gitee From 6beb27125f2dc5c4b0bf39f05e8e739434aca00d Mon Sep 17 00:00:00 2001 From: renguang1116 Date: Mon, 17 Jul 2023 16:19:16 +0800 Subject: [PATCH 11/13] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E9=80=82=E9=85=8D=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20Signed-off-by:=20renguang1116=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/src/dscreen_util.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/common/src/dscreen_util.cpp b/common/src/dscreen_util.cpp index 69ea423d..248b2e24 100644 --- a/common/src/dscreen_util.cpp +++ b/common/src/dscreen_util.cpp @@ -126,7 +126,6 @@ bool IsPartialRefreshEnabled() bool IsSupportAVTransEngine(const std::string &version) { - return (std::atoi(const_cast(version.c_str())) >= AV_TRANS_SUPPORTED_VERSION) && !IsPartialRefreshEnabled(); } } // namespace DistributedHardware -- Gitee From 4d687dcaff63302a195f01b63b2ce16a708e3d52 Mon Sep 17 00:00:00 2001 From: renguang1116 Date: Mon, 17 Jul 2023 16:23:07 +0800 Subject: [PATCH 12/13] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E9=80=82=E9=85=8D=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20Signed-off-by:=20renguang1116=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sinkservice/screenregionmgr/1.0/src/screenregionmgr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/screenservice/sinkservice/screenregionmgr/1.0/src/screenregionmgr.cpp b/services/screenservice/sinkservice/screenregionmgr/1.0/src/screenregionmgr.cpp index c01e820e..f1b65a6a 100644 --- a/services/screenservice/sinkservice/screenregionmgr/1.0/src/screenregionmgr.cpp +++ b/services/screenservice/sinkservice/screenregionmgr/1.0/src/screenregionmgr.cpp @@ -137,7 +137,7 @@ void ScreenRegionManager::HandleNotifySetUp(const std::string &remoteDevId, cons NotifyRemoteSourceSetUpResult(remoteDevId, "", ERR_DH_SCREEN_SA_SCREENREGION_SETUP_FAIL, ""); return; } - std::string version = "2.0"; + std::string version = "1.0"; if (IsString(eventContentJson, KEY_VERSION)) { version = eventContentJson[KEY_VERSION].get(); } -- Gitee From d16351613b828788249143cacdef242fff9167f9 Mon Sep 17 00:00:00 2001 From: renguang1116 Date: Mon, 17 Jul 2023 16:41:02 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E9=80=82=E9=85=8D=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20Signed-off-by:=20renguang1116=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/src/dscreen_util.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/dscreen_util.cpp b/common/src/dscreen_util.cpp index 248b2e24..86782ea2 100644 --- a/common/src/dscreen_util.cpp +++ b/common/src/dscreen_util.cpp @@ -126,7 +126,7 @@ bool IsPartialRefreshEnabled() bool IsSupportAVTransEngine(const std::string &version) { - return (std::atoi(const_cast(version.c_str())) >= AV_TRANS_SUPPORTED_VERSION) && !IsPartialRefreshEnabled(); + return (std::atoi(version.c_str()) >= AV_TRANS_SUPPORTED_VERSION) && !IsPartialRefreshEnabled(); } } // namespace DistributedHardware } // namespace OHOS \ No newline at end of file -- Gitee