diff --git a/screenhandler/src/dscreen_handler.cpp b/screenhandler/src/dscreen_handler.cpp index 7432ff80ac140b4a940dc16db45d84e9f6df11cd..7d348710b4e375d4c7a54fac4be575d59983a27a 100644 --- a/screenhandler/src/dscreen_handler.cpp +++ b/screenhandler/src/dscreen_handler.cpp @@ -65,12 +65,12 @@ void ScreenListener::OnConnect(uint64_t screenId) { DHLOGI("on screen connect"); if (screenId != SCREEN_ID_DEFAULT) { - DHLOGI("screenId is invalid, screenId: %u", screenId); + DHLOGI("screenId is invalid, screenId is: %" PRIu64, screenId); return; } sptr screen = Rosen::ScreenManager::GetInstance().GetScreenById(screenId); if (screen == nullptr) { - DHLOGE("screen not found, screenId: %u", screenId); + DHLOGE("screen not found, screenId is: %" PRIu64, screenId); return; } diff --git a/services/screenservice/sinkservice/screenregionmgr/2.0/src/screenregion.cpp b/services/screenservice/sinkservice/screenregionmgr/2.0/src/screenregion.cpp index 4e21cda7b3575a44f388a89703e268cad74d1d9f..c0a5dbc8e28bd4bcaf5d7f1bcd3fc93ea22a6ebf 100644 --- a/services/screenservice/sinkservice/screenregionmgr/2.0/src/screenregion.cpp +++ b/services/screenservice/sinkservice/screenregionmgr/2.0/src/screenregion.cpp @@ -31,7 +31,7 @@ namespace OHOS { namespace DistributedHardware { namespace V2_0 { -ScreenRegion::ScreenRegion(const std::string &remoteDevId) : remoteDevId_(remoteDevId) +ScreenRegion::ScreenRegion(const std::string &remoteDevId) : screenId_(0), displayId_(0), remoteDevId_(remoteDevId) { DHLOGI("ScreenRegion ctor."); frameNumber_.store(0); @@ -113,7 +113,8 @@ int32_t ScreenRegion::StartReceiverEngine(const std::string &content) int32_t ScreenRegion::StopReceiverEngine() { - DHLOGI("StopReceiverEngine, remoteDevId: %s, screenId: %u", GetAnonyString(remoteDevId_).c_str(), screenId_); + DHLOGI("StopReceiverEngine, remoteDevId: %s, screenId is: %" PRIu64, + GetAnonyString(remoteDevId_).c_str(), screenId_); int32_t ret = ScreenClient::GetInstance().RemoveWindow(windowId_); if (ret != DH_SUCCESS) { diff --git a/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen.cpp b/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen.cpp index b75026b573557f1d00a03e29f42667874da84eda..de78d72c08bbf4aa3f95ad925145167e2332bd51 100644 --- a/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen.cpp @@ -217,6 +217,7 @@ void DScreen::HandleEnable(const std::string ¶m, const std::string &taskId) json attrJson = json::parse(param, nullptr, false); if (attrJson.is_discarded()) { DHLOGE("HandleEnable attrJson is invalid"); + SetState(DISABLED); return; } int32_t ret = CheckJsonData(attrJson); 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 4b1bd4aded943ecf7abef9072cab384b478cca86..8843ef5e858ff941f98e3cb2d44d9a03c71fa4ad 100644 --- a/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp @@ -107,7 +107,7 @@ void DScreenGroupListener::OnChange(const std::vector &screenIds, Rose for (uint64_t screenId : screenIds) { std::shared_ptr changedScreen = DScreenManager::GetInstance().FindDScreenByScreenId(screenId); if (changedScreen == nullptr) { - DHLOGD("screen change not about remote screen, screenId: %u", screenId); + DHLOGD("screen change not about remote screen, screenId: %" PRIu64, screenId); continue; } DScreenManager::GetInstance().HandleScreenChange(changedScreen, event); @@ -123,7 +123,7 @@ void DScreenManager::HandleScreenChange(const std::shared_ptr &changedS } uint64_t screenId = changedScreen->GetScreenId(); - DHLOGI("DScreenManager::HandleScreenChange, screenId: %u, changeEvent: %u", screenId, event); + DHLOGI("DScreenManager::HandleScreenChange, screenId: %" PRIu64", changeEvent: %" PRIu64, screenId, event); if (event == Rosen::ScreenGroupChangeEvent::ADD_TO_GROUP) { if (AddToGroup(changedScreen, screenId) != DH_SUCCESS) { DHLOGE("AddToGroup failed."); @@ -145,7 +145,7 @@ void DScreenManager::HandleScreenChange(const std::shared_ptr &changedS int32_t DScreenManager::AddToGroup(const std::shared_ptr &changedScreen, uint64_t screenId) { - DHLOGI("DScreenManager::ADDToGroup, screenId: %u", screenId); + DHLOGI("DScreenManager::ADDToGroup, screenId: %" PRIu64, screenId); if (changedScreen == nullptr) { DHLOGE("DScreenManager::ADDToGroup, dScreen is null."); return ERR_DH_SCREEN_SA_VALUE_NOT_INIT; @@ -157,7 +157,7 @@ int32_t DScreenManager::AddToGroup(const std::shared_ptr &changedScreen } std::shared_ptr mapRelation = ScreenMgrAdapter::GetInstance().GetMapRelation(screenId); if (mapRelation == nullptr) { - DHLOGE("mapRelation construct failed. screenId: %u", screenId); + DHLOGE("mapRelation construct failed. screenId: %" PRIu64, screenId); return ERR_DH_SCREEN_SA_VALUE_NOT_INIT; } @@ -180,7 +180,7 @@ int32_t DScreenManager::AddToGroup(const std::shared_ptr &changedScreen int32_t DScreenManager::RemoveFromGroup(const std::shared_ptr &changedScreen, uint64_t screenId) { - DHLOGI("DScreenManager::RemoveFromGroup, screenId: %u", screenId); + DHLOGI("DScreenManager::RemoveFromGroup, screenId: %" PRIu64, screenId); if (changedScreen == nullptr) { DHLOGE("DScreenManager::RemoveFromGroup, dScreen is null."); return ERR_DH_SCREEN_SA_VALUE_NOT_INIT; @@ -329,7 +329,7 @@ void DScreenManager::RegisterDScreenCallback(const sptr std::shared_ptr DScreenManager::FindDScreenByScreenId(uint64_t screenId) { - DHLOGD("FindDScreenByScreenId, screenId: %u", screenId); + DHLOGD("FindDScreenByScreenId, screenId: %" PRIu64, screenId); std::lock_guard lock(dScreenMapMtx_); for (const auto &iter : dScreens_) { std::shared_ptr dScreen = iter.second; @@ -341,7 +341,7 @@ std::shared_ptr DScreenManager::FindDScreenByScreenId(uint64_t screenId return dScreen; } } - DHLOGD("DScreen not found, screenId: %u", screenId); + DHLOGD("DScreen not found, screenId: %" PRIu64, screenId); return nullptr; } diff --git a/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen.h b/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen.h index 486c5a919bf2ffdbb8960486f57eb678550ccdbf..5cf6aecf080b973dbecf6dc963230554bd8e6e72 100644 --- a/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen.h +++ b/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen.h @@ -52,15 +52,15 @@ public: taskId_(""), taskParam_(taskParam) {}; ~Task() {}; - TaskType GetTaskType() + TaskType GetTaskType() const { return taskType_; }; - std::string GetTaskId() + std::string GetTaskId() const { return taskId_; }; - std::string GetTaskParam() + std::string GetTaskParam() const { return taskParam_; }; @@ -121,7 +121,7 @@ private: int32_t RemoveSurface(); int32_t SetUp(); void ChooseParameter(std::string &codecType, std::string &pixelFormat); - bool CheckJsonData(json &attrJson); + bool CheckJsonData(const json &attrJson); void SetState(DScreenState state); int32_t WaitForSinkStarted(); @@ -131,7 +131,7 @@ private: std::shared_ptr videoParam_ = nullptr; std::shared_ptr dscreenCallback_ = nullptr; sptr consumerSurface_ = nullptr; - sptr consumerBufferListener_; + sptr consumerBufferListener_ = nullptr; DScreenState curState_; std::mutex stateMtx_; 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 fa5c4cb3471b2738dae7ba41d79ba6ca9949b32a..6ae815af89c8d6d3a3194372dd6c9bb4b6e27465 100644 --- a/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen_manager.h +++ b/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen_manager.h @@ -52,13 +52,13 @@ public: ~DScreenManager(); void OnRegResult(const std::shared_ptr &dScreen, const std::string &reqId, - const int32_t status, const std::string &data); + int32_t status, const std::string &data); void OnUnregResult(const std::shared_ptr &dScreen, const std::string &reqId, - const int32_t status, const std::string &data); + int32_t status, const std::string &data); 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 std::string &attrs, 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/av_sender_engine_adapter.cpp b/services/screenservice/sourceservice/dscreenmgr/2.0/src/av_sender_engine_adapter.cpp index 57962692fd879f0e4212631fe1058d796af138f0..95b8eb0c1e4f359b3e753c18a6c55a14943cf466 100644 --- a/services/screenservice/sourceservice/dscreenmgr/2.0/src/av_sender_engine_adapter.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/2.0/src/av_sender_engine_adapter.cpp @@ -49,9 +49,9 @@ int32_t AVTransSenderAdapter::Release() if (ret != DH_AVT_SUCCESS) { DHLOGE("release av transport sender engine failed"); } + senderEngine_ = nullptr; } initialized_ = false; - senderEngine_ = nullptr; chnCreateSuccess_ = false; transStartSuccess_ = false; return DH_SUCCESS; diff --git a/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen.cpp b/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen.cpp index 22a201b2aabfd269219b78ff4f9fb5382d724d9e..9b53d9efda63cacf5a6b43af7b1a8968e1f21ef3 100644 --- a/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen.cpp @@ -129,6 +129,7 @@ void DScreen::HandleEnable(const std::string ¶m, const std::string &taskId) "enable param json is invalid."); ReportRegisterFail(DSCREEN_REGISTER_FAIL, ERR_DH_SCREEN_SA_ENABLE_FAILED, GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str(), "check json data failed."); + SetState(DISABLED); return; } if (videoParam_ == nullptr) { @@ -188,6 +189,10 @@ void DScreen::HandleDisable(const std::string &taskId) void DScreen::HandleConnect() { DHLOGI("HandleConnect, devId: %s, dhId: %s", GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str()); + if (GetState() != ENABLED) { + DHLOGE("GetState is not ENABLED, HandleConnect failed."); + return; + } SetState(CONNECTING); int32_t ret = StartSenderEngine(); if (ret != DH_SUCCESS) { @@ -568,7 +573,7 @@ void DScreen::TaskThreadLoop() } } -bool DScreen::CheckJsonData(json &attrJson) +bool DScreen::CheckJsonData(const json &attrJson) { if (attrJson.is_discarded()) { DHLOGE("enable param json is invalid."); 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 2278288f184dcfd40741dcc4039f2fd99981f04c..4596920586735ddfb7926ef0beada9af40435765 100644 --- a/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen_manager.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen_manager.cpp @@ -114,7 +114,7 @@ void DScreenGroupListener::OnChange(const std::vector &screenIds, Rose for (uint64_t screenId : screenIds) { std::shared_ptr changedScreen = DScreenManager::GetInstance().FindDScreenById(screenId); if (changedScreen == nullptr) { - DHLOGD("screen change not about remote screen, screenId: %u", screenId); + DHLOGD("screen change not about remote screen, screenId: %" PRIu64, screenId); continue; } DScreenManager::GetInstance().HandleScreenChange(changedScreen, event); @@ -128,7 +128,8 @@ void DScreenManager::HandleScreenChange(const std::shared_ptr &changedS DHLOGE("DScreenManager::HandleScreenChange, dScreen is null."); return; } - DHLOGI("DScreenManager::HandleScreenChange, screenId: %u, changeEvent: %", changedScreen->GetScreenId(), event); + DHLOGI("DScreenManager::HandleScreenChange, screenId: %" PRIu64" changeEvent: %" PRIu64, + changedScreen->GetScreenId(), event); if (event == Rosen::ScreenGroupChangeEvent::ADD_TO_GROUP) { if (StartDScreenMirror(changedScreen) != DH_SUCCESS) { DHLOGE("start dScreen mirror failed."); @@ -154,7 +155,7 @@ int32_t DScreenManager::StartDScreenMirror(const std::shared_ptr &dScre return ERR_DH_SCREEN_SA_VALUE_NOT_INIT; } uint64_t screenId = dScreen->GetScreenId(); - DHLOGI("DScreenManager::StartDScreenMirror, screenId: %u", screenId); + DHLOGI("DScreenManager::StartDScreenMirror, screenId: %" PRIu64, screenId); if (dScreen->GetState() == CONNECTING) { DHLOGD("screen is connecting, no need handle change"); return DH_SUCCESS; @@ -165,7 +166,7 @@ int32_t DScreenManager::StartDScreenMirror(const std::shared_ptr &dScre return ret; } dScreen->AddTask(std::make_shared(TaskType::TASK_CONNECT, "")); - DHLOGI("StartDScreenMirror success, screenId:%u, peerDeviceId:%s", screenId, + DHLOGI("StartDScreenMirror success, screenId:%", PRIu64" peerDeviceId:%s", screenId, GetAnonyString(dScreen->GetDevId()).c_str()); return DH_SUCCESS; } @@ -176,7 +177,7 @@ int32_t DScreenManager::StopDScreenMirror(const std::shared_ptr &dScree DHLOGE("DScreenManager::StopDScreenMirror, dScreen is null."); return ERR_DH_SCREEN_SA_VALUE_NOT_INIT; } - DHLOGI("DScreenManager::StopDScreenMirror, screenId: %u", dScreen->GetScreenId()); + DHLOGI("DScreenManager::StopDScreenMirror, screenId: %" PRIu64, dScreen->GetScreenId()); if (dScreen->GetState() == DISCONNECTING) { DHLOGD("screen is disconnecting, no need handle change"); return DH_SUCCESS; @@ -210,7 +211,7 @@ void DScreenCallback::OnUnregResult(const std::shared_ptr &dScreen, } void DScreenManager::OnRegResult(const std::shared_ptr &dScreen, - const std::string &reqId, const int32_t status, const std::string &data) + const std::string &reqId, int32_t status, const std::string &data) { DHLOGI("DScreenManager::OnRegResult, devId: %s, dhId: %s, reqId: %s", GetAnonyString(dScreen->GetDevId()).c_str(), GetAnonyString(dScreen->GetDHId()).c_str(), reqId.c_str()); @@ -222,7 +223,7 @@ void DScreenManager::OnRegResult(const std::shared_ptr &dScreen, } void DScreenManager::OnUnregResult(const std::shared_ptr &dScreen, - const std::string &reqId, const int32_t status, const std::string &data) + const std::string &reqId, int32_t status, const std::string &data) { DHLOGI("DScreenManager::OnUnregResult, devId: %s, dhId: %s, reqId: %s", GetAnonyString(dScreen->GetDevId()).c_str(), GetAnonyString(dScreen->GetDHId()).c_str(), reqId.c_str()); @@ -308,7 +309,7 @@ void DScreenManager::RegisterDScreenCallback(const sptr std::shared_ptr DScreenManager::FindDScreenById(uint64_t screenId) { - DHLOGD("FindDScreenById, screenId: %u", screenId); + DHLOGD("FindDScreenById, screenId: %" PRIu64, screenId); std::lock_guard lock(dScreenMapMtx_); for (const auto &iter : dScreens_) { std::shared_ptr dScreen = iter.second; @@ -319,7 +320,7 @@ std::shared_ptr DScreenManager::FindDScreenById(uint64_t screenId) return dScreen; } } - DHLOGD("DScreen not found, screenId: %u", screenId); + DHLOGD("DScreen not found, screenId: %" PRIu64, screenId); return nullptr; } diff --git a/services/screenservice/sourceservice/dscreenmgr/common/src/screen_manager_adapter.cpp b/services/screenservice/sourceservice/dscreenmgr/common/src/screen_manager_adapter.cpp index bbd51dc7ce7460b3a5da7171b0da462875dadd7a..480229a52ea37c4d90daf6520af37d4e0058837a 100644 --- a/services/screenservice/sourceservice/dscreenmgr/common/src/screen_manager_adapter.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/common/src/screen_manager_adapter.cpp @@ -52,7 +52,7 @@ uint64_t ScreenMgrAdapter::CreateVirtualScreen(const std::string &devId, const s DHLOGI("remove an exist virtual screen."); Rosen::DMError err = Rosen::ScreenManager::GetInstance().DestroyVirtualScreen(iter->second); if (err != Rosen::DMError::DM_OK) { - DHLOGE("remove virtual screen failed, screenId:%u", iter->second); + DHLOGE("remove virtual screen failed, screenId:%", PRIu64, iter->second); return SCREEN_ID_INVALID; } screenIdMap_.erase(screenName); @@ -116,7 +116,7 @@ int32_t ScreenMgrAdapter::UnregisterScreenGroupListener(sptr screenIds; screenIds.push_back(screenId); Rosen::ScreenManager::GetInstance().RemoveVirtualScreenFromGroup(screenIds); @@ -124,10 +124,10 @@ void ScreenMgrAdapter::RemoveScreenFromGroup(uint64_t screenId) int32_t ScreenMgrAdapter::RemoveVirtualScreen(uint64_t screenId) { - DHLOGI("remove virtual screen, screenId: %u", screenId); + DHLOGI("remove virtual screen, screenId: %" PRIu64, screenId); Rosen::DMError err = Rosen::ScreenManager::GetInstance().DestroyVirtualScreen(screenId); if (err != Rosen::DMError::DM_OK) { - DHLOGE("remove virtual screen failed, screenId:%u", screenId); + DHLOGE("remove virtual screen failed, screenId:%" PRIu64, screenId); return ERR_DH_SCREEN_SA_REMOVE_VIRTUALSCREEN_FAIL; } return DH_SUCCESS; @@ -139,14 +139,14 @@ int32_t ScreenMgrAdapter::SetImageSurface(uint64_t screenId, sptr DHLOGE("ScreenMgrAdapter::SetImageSurface, surface is nullptr"); return ERR_DH_SCREEN_SA_SET_IMAGESURFACE_FAIL; } - DHLOGI("SetImageSurface for virtualscreen, screenId: %u", screenId); + DHLOGI("SetImageSurface for virtualscreen, screenId: %" PRIu64, screenId); Rosen::ScreenManager::GetInstance().SetVirtualScreenSurface(screenId, surface); return DH_SUCCESS; } std::shared_ptr ScreenMgrAdapter::GetMapRelation(uint64_t screenId) { - DHLOGI("GetMapRelation screenId: %u", screenId); + DHLOGI("GetMapRelation screenId: %" PRIu64, screenId); std::shared_ptr mapRelation = std::make_shared(); sptr screen = Rosen::ScreenManager::GetInstance().GetScreenById(screenId); if (screen == nullptr) { diff --git a/services/screentransport/test/fuzztest/screensourceprocessor/onoutputbufferavailable_fuzzer/onoutputbufferavailable_fuzzer.cpp b/services/screentransport/test/fuzztest/screensourceprocessor/onoutputbufferavailable_fuzzer/onoutputbufferavailable_fuzzer.cpp index fd0d7bd98a99c171f0d275cdbaef1fc263a49fbc..ad7f052a2d4444088874df112372e33762996178 100644 --- a/services/screentransport/test/fuzztest/screensourceprocessor/onoutputbufferavailable_fuzzer/onoutputbufferavailable_fuzzer.cpp +++ b/services/screentransport/test/fuzztest/screensourceprocessor/onoutputbufferavailable_fuzzer/onoutputbufferavailable_fuzzer.cpp @@ -33,7 +33,7 @@ void OnOutputBufferAvailableFuzzTest(const uint8_t* data, size_t size) std::shared_ptr encoder = std::make_shared(listener); std::shared_ptr encoderCallback = std::make_shared(encoder); uint32_t index = *(reinterpret_cast(data)); - Media::AVCodecBufferInfo info = *(reinterpret_cast(data)); + Media::AVCodecBufferInfo info; Media::AVCodecBufferFlag flag = Media::AVCODEC_BUFFER_FLAG_NONE; encoderCallback->OnOutputBufferAvailable(index, info, flag); }