From 7df0a74731c7f33b9cbe317d37706d5eea110657 Mon Sep 17 00:00:00 2001 From: zhuzhihui7 Date: Thu, 13 Mar 2025 16:54:31 +0800 Subject: [PATCH] =?UTF-8?q?allconnect=E9=9D=99=E6=80=81=E5=88=86=E6=9E=90?= =?UTF-8?q?=E5=87=BA=E9=94=99=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhuzhihui7 --- .../dcamera_sink_controller.h | 1 + .../dcamera_sink_controller.cpp | 41 +++++++++++-------- .../distributed_camera_allconnect_manager.cpp | 3 +- 3 files changed, 28 insertions(+), 17 deletions(-) diff --git a/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h b/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h index 3660d51e..3fa5ac36 100644 --- a/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h +++ b/services/cameraservice/sinkservice/include/distributedcameramgr/dcamera_sink_controller.h @@ -85,6 +85,7 @@ 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 5bed607c..4431c08d 100644 --- a/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp +++ b/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_controller.cpp @@ -567,22 +567,11 @@ void DCameraSinkController::OnSessionState(int32_t state, std::string networkId) } case DCAMERA_CHANNEL_STATE_DISCONNECTED: { DHLOGI("channel is disconnected"); - 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); - } - }); + std::shared_ptr events = std::make_shared(); + events->eventType_ = DCAMERA_SINK_STOP; + events->eventResult_ = DCAMERA_EVENT_SINK_STOP; + DCameraNotify(events); + HandleDisconnected(); break; } default: @@ -591,6 +580,26 @@ void DCameraSinkController::OnSessionState(int32_t state, std::string networkId) } } +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," diff --git a/services/channel/src/allconnect/distributed_camera_allconnect_manager.cpp b/services/channel/src/allconnect/distributed_camera_allconnect_manager.cpp index 6a10239b..5029608e 100644 --- a/services/channel/src/allconnect/distributed_camera_allconnect_manager.cpp +++ b/services/channel/src/allconnect/distributed_camera_allconnect_manager.cpp @@ -232,7 +232,8 @@ int32_t DCameraAllConnectManager::ApplyResult(int32_t errorcode, int32_t result, { DHLOGI("DCamera allconnect ApplyResult begin"); if (result != PASS) { - DHLOGE("DCamera allconnect Apply Result is Reject, errorcode is %{}d, reason is %{public}s", errorcode, reason); + DHLOGE("DCamera allconnect Apply Result is Reject, errorcode is %{public}d, reason is %{public}s", + errorcode, reason); applyResultBlock_->SetValue(false); return DistributedCameraErrno::DCAMERA_ERR_APPLY_RESULT; } -- Gitee