diff --git a/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen.cpp b/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen.cpp index 801a3614ff44b0a845c54b2f17d12fa160d9a9db..631b584f4f53d679fc0d410ab92bfe34dd2ef0de 100644 --- a/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen.cpp @@ -200,6 +200,11 @@ void DScreen::HandleTask(const std::shared_ptr &task) 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"); + return; + } if (dscreenCallback_ == nullptr) { DHLOGE("DScreen::HandleEnable, dscreenCallback_ is nullptr"); return; @@ -209,18 +214,11 @@ void DScreen::HandleEnable(const std::string ¶m, const std::string &taskId) dscreenCallback_->OnRegResult(shared_from_this(), taskId, DH_SUCCESS, "dscreen enable success."); return; } - SetState(ENABLING); if (videoParam_ == nullptr) { videoParam_ = std::make_shared(); } - json attrJson = json::parse(param, nullptr, false); - if (attrJson.is_discarded()) { - DHLOGE("HandleEnable attrJson is invalid"); - SetState(DISABLED); - return; - } int32_t ret = CheckJsonData(attrJson); if (ret != DH_SUCCESS) { dscreenCallback_->OnRegResult(shared_from_this(), taskId, ERR_DH_SCREEN_SA_ENABLE_FAILED, @@ -243,15 +241,14 @@ void DScreen::HandleEnable(const std::string ¶m, const std::string &taskId) return; } - uint64_t screenId = ScreenMgrAdapter::GetInstance().CreateVirtualScreen(devId_, dhId_, videoParam_); - if (screenId == SCREEN_ID_INVALID) { + screenId_ = ScreenMgrAdapter::GetInstance().CreateVirtualScreen(devId_, dhId_, videoParam_); + if (screenId_ == SCREEN_ID_INVALID) { dscreenCallback_->OnRegResult(shared_from_this(), taskId, ERR_DH_SCREEN_SA_ENABLE_FAILED, "create virtual screen failed."); ReportRegisterFail(DSCREEN_REGISTER_FAIL, ERR_DH_SCREEN_SA_ENABLE_FAILED, GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str(), "create virtual screen failed."); return; } - screenId_ = screenId; SetState(ENABLED); dscreenCallback_->OnRegResult(shared_from_this(), taskId, DH_SUCCESS, "dscreen enable success."); ReportRegisterScreenEvent(DSCREEN_REGISTER, GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str(),