diff --git a/interfaces/innerkits/native_cpp/screen_sink/src/dscreen_sink_handler.cpp b/interfaces/innerkits/native_cpp/screen_sink/src/dscreen_sink_handler.cpp index c6bc4f3b062c9db0162f770eefaf92b1a950880c..31b8d8335709957ceaa259c5ea81439bbee062ab 100644 --- a/interfaces/innerkits/native_cpp/screen_sink/src/dscreen_sink_handler.cpp +++ b/interfaces/innerkits/native_cpp/screen_sink/src/dscreen_sink_handler.cpp @@ -63,6 +63,7 @@ int32_t DScreenSinkHandler::InitSink(const std::string ¶ms) DISTRIBUTED_HARDWARE_SCREEN_SINK_SA_ID, ret); ReportSaFail(DSCREEN_INIT_FAIL, ret, DISTRIBUTED_HARDWARE_SCREEN_SINK_SA_ID, "dscreen sink LoadSystemAbility call failed."); + FinishTrace(DSCREEN_HITRACE_LABEL); return ERR_DH_SCREEN_SA_GET_SINKPROXY_FAIL; } } @@ -73,6 +74,7 @@ int32_t DScreenSinkHandler::InitSink(const std::string ¶ms) DHLOGE("screen load sa timeout"); ReportSaFail(DSCREEN_INIT_FAIL, ERR_DH_SCREEN_SA_LOAD_TIMEOUT, DISTRIBUTED_HARDWARE_SCREEN_SINK_SA_ID, "dscreen sink sa load timeout."); + FinishTrace(DSCREEN_HITRACE_LABEL); return ERR_DH_SCREEN_SA_LOAD_TIMEOUT; } diff --git a/interfaces/innerkits/native_cpp/screen_source/src/dscreen_source_handler.cpp b/interfaces/innerkits/native_cpp/screen_source/src/dscreen_source_handler.cpp index 06894f941cd051bc3b5064eaf6287394410a0e88..646b55e97f7a02fb48c7dfbdf1c901a652f4a293 100644 --- a/interfaces/innerkits/native_cpp/screen_source/src/dscreen_source_handler.cpp +++ b/interfaces/innerkits/native_cpp/screen_source/src/dscreen_source_handler.cpp @@ -68,6 +68,7 @@ int32_t DScreenSourceHandler::InitSource(const std::string ¶ms) DISTRIBUTED_HARDWARE_SCREEN_SOURCE_SA_ID, ret); ReportSaFail(DSCREEN_INIT_FAIL, ret, DISTRIBUTED_HARDWARE_SCREEN_SOURCE_SA_ID, "dscreen source LoadSystemAbility call failed."); + FinishTrace(DSCREEN_HITRACE_LABEL); return ERR_DH_SCREEN_SA_GET_SOURCEPROXY_FAIL; } } @@ -78,6 +79,7 @@ int32_t DScreenSourceHandler::InitSource(const std::string ¶ms) DHLOGE("screen load sa timeout."); ReportSaFail(DSCREEN_INIT_FAIL, ERR_DH_SCREEN_SA_LOAD_TIMEOUT, DISTRIBUTED_HARDWARE_SCREEN_SOURCE_SA_ID, "dscreen source sa load timeout."); + FinishTrace(DSCREEN_HITRACE_LABEL); return ERR_DH_SCREEN_SA_LOAD_TIMEOUT; } diff --git a/screenhandler/src/dscreen_handler.cpp b/screenhandler/src/dscreen_handler.cpp index 1e51bd301246506d1d63c733dfc2f8094bce08c2..b154a507150167052bb2f24d9471a97d1845fe31 100644 --- a/screenhandler/src/dscreen_handler.cpp +++ b/screenhandler/src/dscreen_handler.cpp @@ -163,7 +163,7 @@ std::string DScreenHandler::QueryCodecInfo() std::shared_ptr codecList = Media::AVCodecListFactory::CreateAVCodecList(); std::vector> caps = codecList->GetVideoEncoderCaps(); json codecTypeArray = json::array(); - + for (const auto &cap : caps) { std::shared_ptr codecInfo = cap->GetCodecInfo(); codecTypeArray.push_back(codecInfo->GetName()); diff --git a/services/screenclient/src/screen_client_window_adapter.cpp b/services/screenclient/src/screen_client_window_adapter.cpp index 8b61b2f69bb033e113e98fc530de945eccf9ba98..8b0f17f6f59726ae97bca8c7be94b766f65692ed 100644 --- a/services/screenclient/src/screen_client_window_adapter.cpp +++ b/services/screenclient/src/screen_client_window_adapter.cpp @@ -198,18 +198,30 @@ int32_t ScreenClientWindowAdapter::RemoveWindow(int32_t windowId) void ScreenClientInputEventListener::OnInputEvent(std::shared_ptr pointerEvent) const { DHLOGI("onInputEvent, pointerEvent"); + if (pointerEvent == nullptr) { + DHLOGE("pointerEvent is nullptr"); + return; + } pointerEvent->MarkProcessed(); } void ScreenClientInputEventListener::OnInputEvent(std::shared_ptr keyEvent) const { DHLOGI("onInputEvent, keyEvent"); + if (keyEvent == nullptr) { + DHLOGE("keyEvent is nullptr"); + return; + } keyEvent->MarkProcessed(); } void ScreenClientInputEventListener::OnInputEvent(std::shared_ptr axisEvent) const { DHLOGI("onInputEvent, axisEvent"); + if (axisEvent == nullptr) { + DHLOGE("axisEvent is nullptr"); + return; + } axisEvent->MarkProcessed(); } } // namespace DistributedHardware diff --git a/services/screenservice/sourceservice/dscreenmgr/src/dscreen_manager.cpp b/services/screenservice/sourceservice/dscreenmgr/src/dscreen_manager.cpp index 461f580541ebdc7bbc930a7e7c102780ce180d99..dec098b2b933d1d265d2e438f12c5f588fdb5911 100644 --- a/services/screenservice/sourceservice/dscreenmgr/src/dscreen_manager.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/src/dscreen_manager.cpp @@ -169,6 +169,10 @@ void DScreenManager::HandleScreenChange(const std::shared_ptr &changedS void DScreenCallback::OnRegResult(const std::shared_ptr &dScreen, const std::string &reqId, int32_t status, const std::string &data) { + if (dScreen == nullptr) { + DHLOGE("dScreen is nullptr."); + return; + } DHLOGI("DScreenCallback::OnRegResult, devId: %s, dhId: %s, reqId: %s", GetAnonyString(dScreen->GetDevId()).c_str(), GetAnonyString(dScreen->GetDHId()).c_str(), reqId.c_str()); DScreenManager::GetInstance().OnRegResult(dScreen, reqId, status, data); @@ -177,6 +181,10 @@ void DScreenCallback::OnRegResult(const std::shared_ptr &dScreen, void DScreenCallback::OnUnregResult(const std::shared_ptr &dScreen, const std::string &reqId, int32_t status, const std::string &data) { + if (dScreen == nullptr) { + DHLOGE("dScreen is nullptr."); + return; + } DHLOGI("DScreenCallback::OnUnregResult, devId: %s, dhId: %s, reqId: %s", GetAnonyString(dScreen->GetDevId()).c_str(), GetAnonyString(dScreen->GetDHId()).c_str(), reqId.c_str()); DScreenManager::GetInstance().OnUnregResult(dScreen, reqId, status, data); diff --git a/services/screentransport/screensinkprocessor/src/image_sink_processor.cpp b/services/screentransport/screensinkprocessor/src/image_sink_processor.cpp index e692bff818b970e0014678e0cd226fb2c0972193..4624f5cb70826beaa847fe5c26151d77221e5ec5 100644 --- a/services/screentransport/screensinkprocessor/src/image_sink_processor.cpp +++ b/services/screentransport/screensinkprocessor/src/image_sink_processor.cpp @@ -56,13 +56,14 @@ int32_t ImageSinkProcessor::ReleaseImageProcessor() StartTrace(DSCREEN_HITRACE_LABEL, DSCREEN_RELEASE_DECODER_START); int32_t ret = imageDecoder_->ReleaseDecoder(); - FinishTrace(DSCREEN_HITRACE_LABEL); if (ret != DH_SUCCESS) { DHLOGE("%s: ReleaseDecoder failed.", LOG_TAG); ReportOptFail(DSCREEN_OPT_FAIL, ret, "ReleaseDecoder failed."); + FinishTrace(DSCREEN_HITRACE_LABEL); return ret; } + FinishTrace(DSCREEN_HITRACE_LABEL); return DH_SUCCESS; } @@ -77,13 +78,14 @@ int32_t ImageSinkProcessor::StartImageProcessor() StartTrace(DSCREEN_HITRACE_LABEL, DSCREEN_START_DECODER_START); int32_t ret = imageDecoder_->StartDecoder(); - FinishTrace(DSCREEN_HITRACE_LABEL); if (ret != DH_SUCCESS) { DHLOGE("%s: StartDecoder failed ret:%d.", LOG_TAG, ret); ReportOptFail(DSCREEN_OPT_FAIL, ret, "StartDecoder failed."); + FinishTrace(DSCREEN_HITRACE_LABEL); return ret; } + FinishTrace(DSCREEN_HITRACE_LABEL); return DH_SUCCESS; } @@ -98,13 +100,14 @@ int32_t ImageSinkProcessor::StopImageProcessor() StartTrace(DSCREEN_HITRACE_LABEL, DSCREEN_STOP_DECODER_START); int32_t ret = imageDecoder_->StopDecoder(); - FinishTrace(DSCREEN_HITRACE_LABEL); if (ret != DH_SUCCESS) { DHLOGE("%s: StopDecoder failed ret:%d.", LOG_TAG, ret); ReportOptFail(DSCREEN_OPT_FAIL, ret, "StopDecoder failed."); + FinishTrace(DSCREEN_HITRACE_LABEL); return ret; } + FinishTrace(DSCREEN_HITRACE_LABEL); return DH_SUCCESS; } diff --git a/services/screentransport/screensinktrans/src/screen_sink_trans.cpp b/services/screentransport/screensinktrans/src/screen_sink_trans.cpp index 8a7395f5ea96001b96d5c26ec8923fb4517c8a76..1ef13ef862cd3601b1c66db5a61cb2c5d173038f 100644 --- a/services/screentransport/screensinktrans/src/screen_sink_trans.cpp +++ b/services/screentransport/screensinktrans/src/screen_sink_trans.cpp @@ -60,13 +60,13 @@ int32_t ScreenSinkTrans::Release() StartTrace(DSCREEN_HITRACE_LABEL, DSCREEN_SINK_RELEASE_SESSION_START); ret = screenChannel_->ReleaseSession(); - FinishTrace(DSCREEN_HITRACE_LABEL); if (ret != DH_SUCCESS) { DHLOGD("%s: Release channel session failed ret: %d.", LOG_TAG, ret); } screenChannel_ = nullptr; DHLOGI("%s: Release success.", LOG_TAG); + FinishTrace(DSCREEN_HITRACE_LABEL); return DH_SUCCESS; } @@ -105,7 +105,6 @@ int32_t ScreenSinkTrans::Stop() StartTrace(DSCREEN_HITRACE_LABEL, DSCREEN_SINK_CLOSE_SESSION_START); ret = screenChannel_->CloseSession(); - FinishTrace(DSCREEN_HITRACE_LABEL); if (ret != DH_SUCCESS && ret != ERR_DH_SCREEN_TRANS_SESSION_NOT_OPEN) { DHLOGD("%s: Close Session failed ret: %d.", LOG_TAG, ret); stopStatus = false; @@ -113,10 +112,12 @@ int32_t ScreenSinkTrans::Stop() if (!stopStatus) { DHLOGE("%s: Stop sink trans failed.", LOG_TAG); + FinishTrace(DSCREEN_HITRACE_LABEL); return ERR_DH_SCREEN_TRANS_ERROR; } DHLOGI("%s: Stop success.", LOG_TAG); + FinishTrace(DSCREEN_HITRACE_LABEL); return DH_SUCCESS; } @@ -265,6 +266,10 @@ int32_t ScreenSinkTrans::RegisterProcessorListener(const VideoParam &localParam, return ERR_DH_SCREEN_TRANS_NULL_VALUE; } + if (!imageProcessor_) { + DHLOGE("%s: Create image processor failed.", LOG_TAG); + return ERR_DH_SCREEN_TRANS_NULL_VALUE; + } int32_t ret = imageProcessor_->ConfigureImageProcessor(localParam, remoteParam, listener); if (ret != DH_SUCCESS) { DHLOGE("%s: Config image processor failed ret: %d.", LOG_TAG, ret); @@ -299,9 +304,14 @@ void ScreenSinkTrans::OnSessionClosed() void ScreenSinkTrans::OnDataReceived(const std::shared_ptr &data) { DHLOGD("%s: OnChannelDataReceived.", LOG_TAG); + if (!imageProcessor_) { + DHLOGE("%s: Create image processor failed.", LOG_TAG); + return; + } int32_t ret = imageProcessor_->ProcessImage(data); if (ret != DH_SUCCESS) { DHLOGE("%s: send data to image processor failed ret: %d.", LOG_TAG, ret); + return; } } diff --git a/services/screentransport/screensourceprocessor/src/image_source_processor.cpp b/services/screentransport/screensourceprocessor/src/image_source_processor.cpp index 4181d895c450aaf5c2fcd865cc757530d5a1c578..18d2379ef6842c22c83a126393f1a331fa330535 100644 --- a/services/screentransport/screensourceprocessor/src/image_source_processor.cpp +++ b/services/screentransport/screensourceprocessor/src/image_source_processor.cpp @@ -54,13 +54,14 @@ int32_t ImageSourceProcessor::ReleaseImageProcessor() StartTrace(DSCREEN_HITRACE_LABEL, DSCREEN_RELESSE_ENCODER_START); int32_t ret = imageEncoder_->ReleaseEncoder(); - FinishTrace(DSCREEN_HITRACE_LABEL); if (ret != DH_SUCCESS) { DHLOGE("%s: Release screen encoder failed ret: %d.", LOG_TAG, ret); ReportOptFail(DSCREEN_OPT_FAIL, ret, "Release screen encoder failed."); + FinishTrace(DSCREEN_HITRACE_LABEL); return ret; } + FinishTrace(DSCREEN_HITRACE_LABEL); return DH_SUCCESS; } @@ -75,13 +76,14 @@ int32_t ImageSourceProcessor::StartImageProcessor() StartTrace(DSCREEN_HITRACE_LABEL, DSCREEN_START_ENCODER_START); int32_t ret = imageEncoder_->StartEncoder(); - FinishTrace(DSCREEN_HITRACE_LABEL); if (ret != DH_SUCCESS) { DHLOGE("%s: Start screen encoder failed ret: %d.", LOG_TAG, ret); ReportOptFail(DSCREEN_OPT_FAIL, ret, "Start screen encoder failed."); + FinishTrace(DSCREEN_HITRACE_LABEL); return ret; } + FinishTrace(DSCREEN_HITRACE_LABEL); return DH_SUCCESS; } @@ -96,13 +98,14 @@ int32_t ImageSourceProcessor::StopImageProcessor() StartTrace(DSCREEN_HITRACE_LABEL, DSCREEN_STOP_ENCODER_START); int32_t ret = imageEncoder_->StopEncoder(); - FinishTrace(DSCREEN_HITRACE_LABEL); if (ret != DH_SUCCESS) { DHLOGE("%s: Stop screen encoder failed ret: %d.", LOG_TAG, ret); ReportOptFail(DSCREEN_OPT_FAIL, ret, "Stop screen encoder failed."); + FinishTrace(DSCREEN_HITRACE_LABEL); return ret; } + FinishTrace(DSCREEN_HITRACE_LABEL); return DH_SUCCESS; } diff --git a/services/screentransport/screensourcetrans/src/screen_source_trans.cpp b/services/screentransport/screensourcetrans/src/screen_source_trans.cpp index 2ad9f920a308cc616a4b65d7e378f732641ae2f1..c7bbad0517a538d199f12446ba8b651d11b3ff1f 100644 --- a/services/screentransport/screensourcetrans/src/screen_source_trans.cpp +++ b/services/screentransport/screensourcetrans/src/screen_source_trans.cpp @@ -89,6 +89,7 @@ int32_t ScreenSourceTrans::Start() int32_t ret = screenChannel_->OpenSession(); if (ret != DH_SUCCESS) { DHLOGE("%s: Open channel session failed ret: %d.", LOG_TAG, ret); + FinishTrace(DSCREEN_HITRACE_LABEL); return ret; } @@ -98,6 +99,7 @@ int32_t ScreenSourceTrans::Start() sessionCond_.wait_for(lck, std::chrono::seconds(SESSION_WAIT_SECONDS), [this]() { return isChannelReady_; }); if (!status) { DHLOGE("%s: Open channel session timeout(%ds).", LOG_TAG, SESSION_WAIT_SECONDS); + FinishTrace(DSCREEN_HITRACE_LABEL); return ERR_DH_SCREEN_TRANS_TIMEOUT; } @@ -123,7 +125,6 @@ int32_t ScreenSourceTrans::Stop() StartTrace(DSCREEN_HITRACE_LABEL, DSCREEN_SOURCE_CLOSE_SESSION_START); ret = screenChannel_->CloseSession(); - FinishTrace(DSCREEN_HITRACE_LABEL); if (ret != DH_SUCCESS) { DHLOGD("%s: Close Session failed ret: %d.", LOG_TAG, ret); stopStatus = false; @@ -135,9 +136,12 @@ int32_t ScreenSourceTrans::Stop() if (!stopStatus) { DHLOGE("%s: Stop source trans failed.", LOG_TAG); + FinishTrace(DSCREEN_HITRACE_LABEL); return ERR_DH_SCREEN_TRANS_ERROR; } + DHLOGI("%s: Stop success.", LOG_TAG); + FinishTrace(DSCREEN_HITRACE_LABEL); return DH_SUCCESS; }