diff --git a/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h b/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h index 3fa5ac36976179f1ef31cc025066665b4737804e..3660d51ef58d181b05b89c8962d72d5af3d1f385 100644 --- a/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h +++ b/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h @@ -85,7 +85,6 @@ private: void ProcessPostAuthorization(const AppExecFwk::InnerEvent::Pointer &event); int32_t CreateCtrlSession(); int32_t CheckSensitive(); - void HandleDisconnected(); bool isInit_; int32_t sessionState_; diff --git a/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp b/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp index 4431c08dea4f3b8bb37fc8f081873e2271488d75..5fbf8d39dee267941c80b10ec056f1bc6d6a6b7b 100644 --- a/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp +++ b/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp @@ -565,41 +565,31 @@ void DCameraSinkController::OnSessionState(int32_t state, std::string networkId) CHECK_AND_RETURN_LOG(ret != DCAMERA_OK, "PullUpPage failed"); break; } - case DCAMERA_CHANNEL_STATE_DISCONNECTED: { + case DCAMERA_CHANNEL_STATE_DISCONNECTED: DHLOGI("channel is disconnected"); - std::shared_ptr events = std::make_shared(); - events->eventType_ = DCAMERA_SINK_STOP; - events->eventResult_ = DCAMERA_EVENT_SINK_STOP; - DCameraNotify(events); - HandleDisconnected(); + ffrt::submit([this]() { + DHLOGI("DCameraSinkController::OnSessionState %{public}s new thread session state: %{public}d", + GetAnonyString(dhId_).c_str(), sessionState_); + prctl(PR_SET_NAME, CHANNEL_DISCONNECTED.c_str()); + std::lock_guard autoLock(autoLock_); + int32_t ret = CloseChannel(); + if (ret != DCAMERA_OK) { + DHLOGE("session state: %{public}d, %{public}s close channel failed, ret: %{public}d", + sessionState_, GetAnonyString(dhId_).c_str(), ret); + } + ret = StopCapture(); + if (ret != DCAMERA_OK) { + DHLOGE("session state: %{public}d, %{public}s stop capture failed, ret: %{public}d", + sessionState_, GetAnonyString(dhId_).c_str(), ret); + } + }); break; - } default: DHLOGE("unknown session state"); break; } } -void DCameraSinkController::HandleDisconnected() -{ - ffrt::submit([this]() { - DHLOGI("DCameraSinkController::OnSessionState %{public}s new thread session state: %{public}d", - GetAnonyString(dhId_).c_str(), sessionState_); - prctl(PR_SET_NAME, CHANNEL_DISCONNECTED.c_str()); - std::lock_guard autoLock(autoLock_); - int32_t ret = CloseChannel(); - if (ret != DCAMERA_OK) { - DHLOGE("session state: %{public}d, %{public}s close channel failed, ret: %{public}d", - sessionState_, GetAnonyString(dhId_).c_str(), ret); - } - ret = StopCapture(); - if (ret != DCAMERA_OK) { - DHLOGE("session state: %{public}d, %{public}s stop capture failed, ret: %{public}d", - sessionState_, GetAnonyString(dhId_).c_str(), ret); - } - }); -} - void DCameraSinkController::OnSessionError(int32_t eventType, int32_t eventReason, std::string detail) { DHLOGI("DCameraSinkController::OnSessionError dhId: %{public}s, eventType: %{public}d, eventReason: %{public}d,"