diff --git a/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen.h b/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen.h index eb09e2ba0125a5263c7fb70565c637c34fe6d0fe..00c439fa297005a87ff7599f3908870ec760c967 100644 --- a/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen.h +++ b/services/screenservice/sourceservice/dscreenmgr/2.0/include/dscreen.h @@ -139,6 +139,7 @@ private: DScreenState curState_; std::mutex stateMtx_; + std::mutex ableMtx_; std::thread taskQueueThread_; std::condition_variable taskQueueCond_; std::mutex taskQueueMtx_; 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 02ad243fcad553114bd12f4ccae71434e350c429..d708c4217247845e4211c34efac19fe668c80afc 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 @@ -80,11 +80,6 @@ int32_t AVTransSenderAdapter::Start() DHLOGE("start av transport sender engine failed, ret:%" PRId32, ret); return ERR_DH_AV_TRANS_START_FAILED; } - ret = WaitForAVTransStarted(); - if (ret != DH_SUCCESS) { - DHLOGE("wait for start av transport sender engine failed, ret:%" PRId32, ret); - return ERR_DH_AV_TRANS_START_FAILED; - } DHLOGI("Start Success"); 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 c93f59dcbcd302660d88519a1b7655504d69f955..7515f38a72b5ffea9f11ee5c90455e781f3338cd 100644 --- a/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen.cpp @@ -129,7 +129,9 @@ void DScreen::HandleEnable(const std::string ¶m, const std::string &taskId) DHLOGE("DScreen::HandleEnable, dscreenCallback_ is nullptr"); return; } - if ((curState_ == ENABLED) || (curState_ == ENABLING) || (curState_ == CONNECTING) || (curState_ == CONNECTED)) { + std::lock_guard lock(ableMtx_); + if ((curState_ == ENABLED) || (curState_ == ENABLING) || (curState_ == CONNECTING) || + (curState_ == CONNECTED)) { dscreenCallback_->OnRegResult(shared_from_this(), taskId, DH_SUCCESS, "dscreen enable success."); return; }