diff --git a/interfaces/inner_kits/native_cpp/camera_sink/src/callback/dcamera_sink_callback_stub.cpp b/interfaces/inner_kits/native_cpp/camera_sink/src/callback/dcamera_sink_callback_stub.cpp index 8d32f64d65d475cc5b0a3a0b37c9b48af805f203..2df1db9fd496d551ff63881fe54cda4bfa7b86f6 100644 --- a/interfaces/inner_kits/native_cpp/camera_sink/src/callback/dcamera_sink_callback_stub.cpp +++ b/interfaces/inner_kits/native_cpp/camera_sink/src/callback/dcamera_sink_callback_stub.cpp @@ -41,13 +41,15 @@ int32_t DCameraSinkCallbackStub::OnRemoteRequest(uint32_t code, MessageParcel &d DHLOGE("remoteDesc is invalid!"); return ERR_INVALID_DATA; } - auto itFunc = memberFuncMap_.find(code); - if (itFunc == memberFuncMap_.end()) { - return IPCObjectStub::OnRemoteRequest(code, data, reply, option); - } - auto memberFunc = itFunc->second; - return (this->*memberFunc)(data, reply); + switch (code) { + case NOTIFY_RESOURCEINFO: + return OnNotifyResourceInfoInner(data, reply); + default: + DHLOGE("Invalid OnRemoteRequest code=%{public}d", code); + return IPCObjectStub::OnRemoteRequest(code, data, reply, option); + } + return DCAMERA_NOT_FOUND; } int32_t DCameraSinkCallbackStub::OnNotifyResourceInfoInner(MessageParcel &data, MessageParcel &reply) diff --git a/interfaces/inner_kits/native_cpp/camera_source/src/callback/dcamera_source_callback_stub.cpp b/interfaces/inner_kits/native_cpp/camera_source/src/callback/dcamera_source_callback_stub.cpp index d7d5fa64f660f844f2900abc10e5ab0182f18d51..79b6b7868cad2d96d413a4b74031e5354dd1d1da 100644 --- a/interfaces/inner_kits/native_cpp/camera_source/src/callback/dcamera_source_callback_stub.cpp +++ b/interfaces/inner_kits/native_cpp/camera_source/src/callback/dcamera_source_callback_stub.cpp @@ -44,13 +44,21 @@ int32_t DCameraSourceCallbackStub::OnRemoteRequest(uint32_t code, MessageParcel DHLOGE("remoteDesc is invalid!"); return ERR_INVALID_DATA; } - auto itFunc = memberFuncMap_.find(code); - if (itFunc == memberFuncMap_.end()) { - return IPCObjectStub::OnRemoteRequest(code, data, reply, option); - } - auto memberFunc = itFunc->second; - return (this->*memberFunc)(data, reply); + switch (code) { + case NOTIFY_REG_RESULT: + return NotifyRegResultInner(data, reply); + case NOTIFY_UNREG_RESULT: + return NotifyUnregResultInner(data, reply); + case NOTIFY_STATE_CHANGED: + return OnHardwareStateChangedInner(data, reply); + case NOTIFY_DATASYNC_TRIGGER: + return OnDataSyncTriggerInner(data, reply); + default: + DHLOGE("Invalid OnRemoteRequest code=%{public}d", code); + return IPCObjectStub::OnRemoteRequest(code, data, reply, option); + } + return DCAMERA_NOT_FOUND; } int32_t DCameraSourceCallbackStub::NotifyRegResultInner(MessageParcel &data, MessageParcel &reply) diff --git a/services/cameraservice/sinkservice/src/distributedcamera/distributed_camera_sink_stub.cpp b/services/cameraservice/sinkservice/src/distributedcamera/distributed_camera_sink_stub.cpp index 4c208ecd44d54e8ce759d609fcea738c7807da2e..be87cebdfc9482517e8027b525e8073eacfcb88b 100644 --- a/services/cameraservice/sinkservice/src/distributedcamera/distributed_camera_sink_stub.cpp +++ b/services/cameraservice/sinkservice/src/distributedcamera/distributed_camera_sink_stub.cpp @@ -73,13 +73,37 @@ int32_t DistributedCameraSinkStub::OnRemoteRequest(uint32_t code, MessageParcel DHLOGE("remoteDesc is invalid!"); return ERR_INVALID_DATA; } - auto itFunc = memberFuncMap_.find(code); - if (itFunc == memberFuncMap_.end()) { - return IPCObjectStub::OnRemoteRequest(code, data, reply, option); - } - auto memberFunc = itFunc->second; - return (this->*memberFunc)(data, reply); + switch (code) { + case static_cast(IDCameraSinkInterfaceCode::INIT_SINK): + return InitSinkInner(data, reply); + case static_cast(IDCameraSinkInterfaceCode::RELEASE_SINK): + return ReleaseSinkInner(data, reply); + case static_cast(IDCameraSinkInterfaceCode::SUBSCRIBE_LOCAL_HARDWARE): + return SubscribeLocalHardwareInner(data, reply); + case static_cast(IDCameraSinkInterfaceCode::UNSUBSCRIBE_LOCAL_HARDWARE): + return UnsubscribeLocalHardwareInner(data, reply); + case static_cast(IDCameraSinkInterfaceCode::STOP_CAPTURE): + return StopCaptureInner(data, reply); + case static_cast(IDCameraSinkInterfaceCode::CHANNEL_NEG): + return ChannelNegInner(data, reply); + case static_cast(IDCameraSinkInterfaceCode::GET_CAMERA_INFO): + return GetCameraInfoInner(data, reply); + case static_cast(IDCameraSinkInterfaceCode::OPEN_CHANNEL): + return OpenChannelInner(data, reply); + case static_cast(IDCameraSinkInterfaceCode::CLOSE_CHANNEL): + return CloseChannelInner(data, reply); + case static_cast(IDCameraSinkInterfaceCode::PAUSE_DISTRIBUTED_HARDWARE): + return PauseDistributedHardwareInner(data, reply); + case static_cast(IDCameraSinkInterfaceCode::RESUME_DISTRIBUTED_HARDWARE): + return ResumeDistributedHardwareInner(data, reply); + case static_cast(IDCameraSinkInterfaceCode::STOP_DISTRIBUTED_HARDWARE): + return StopDistributedHardwareInner(data, reply); + default: + DHLOGE("Invalid OnRemoteRequest code=%{public}d", code); + return IPCObjectStub::OnRemoteRequest(code, data, reply, option); + } + return DCAMERA_NOT_FOUND; } int32_t DistributedCameraSinkStub::InitSinkInner(MessageParcel &data, MessageParcel &reply) diff --git a/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_data_process.cpp b/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_data_process.cpp index ff5da5bb1b09f4c4feb4fc1729832413ddd7973c..c63985e15dd5b833d7fd8d86896f1587386ecf32 100644 --- a/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_data_process.cpp +++ b/services/cameraservice/sinkservice/src/distributedcameramgr/dcamera_sink_data_process.cpp @@ -49,7 +49,7 @@ DCameraSinkDataProcess::~DCameraSinkDataProcess() void DCameraSinkDataProcess::Init() { DHLOGI("DCameraSinkDataProcess Init dhId: %{public}s", GetAnonyString(dhId_).c_str()); - eventThread_ = std::thread(&DCameraSinkDataProcess::StartEventHandler, this); + eventThread_ = std::thread([this]() { this->StartEventHandler(); }); std::unique_lock lock(eventMutex_); eventCon_.wait(lock, [this] { return eventHandler_ != nullptr; diff --git a/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_service.cpp b/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_service.cpp index c3eb318697b55146e8639284f36a300d1d3f8203..686964a62bbe4df7f9df251e5b4cb9b199d1f410 100644 --- a/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_service.cpp +++ b/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_service.cpp @@ -82,7 +82,7 @@ bool DistributedCameraSourceService::Init() listener_ = std::make_shared(); if (!isHicollieRunning_.load()) { isHicollieRunning_.store(true); - hicollieThread_ = std::thread(&DistributedCameraSourceService::StartHicollieThread, this); + hicollieThread_ = std::thread([this]() { this->StartHicollieThread(); }); } DHLOGI("DistributedCameraSourceService init success"); return true; diff --git a/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_stub.cpp b/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_stub.cpp index e93b6e973f5a89aa05b682be7020642d0a8b1531..41b41e7a08718e1f02200baf5c3269e2034d75be 100644 --- a/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_stub.cpp +++ b/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_stub.cpp @@ -60,13 +60,23 @@ int32_t DistributedCameraSourceStub::OnRemoteRequest(uint32_t code, MessageParce DHLOGE("remoteDesc is invalid!"); return ERR_INVALID_DATA; } - auto itFunc = memberFuncMap_.find(code); - if (itFunc == memberFuncMap_.end()) { - return IPCObjectStub::OnRemoteRequest(code, data, reply, option); - } - auto memberFunc = itFunc->second; - return (this->*memberFunc)(data, reply); + switch (code) { + case static_cast(IDCameraSourceInterfaceCode::INIT_SOURCE): + return InitSourceInner(data, reply); + case static_cast(IDCameraSourceInterfaceCode::RELEASE_SOURCE): + return ReleaseSourceInner(data, reply); + case static_cast(IDCameraSourceInterfaceCode::REGISTER_DISTRIBUTED_HARDWARE): + return RegisterDistributedHardwareInner(data, reply); + case static_cast(IDCameraSourceInterfaceCode::UNREGISTER_DISTRIBUTED_HARDWARE): + return UnregisterDistributedHardwareInner(data, reply); + case static_cast(IDCameraSourceInterfaceCode::CAMERA_NOTIFY): + return DCameraNotifyInner(data, reply); + default: + DHLOGE("Invalid OnRemoteRequest code=%{public}d", code); + return IPCObjectStub::OnRemoteRequest(code, data, reply, option); + } + return DCAMERA_NOT_FOUND; } int32_t DistributedCameraSourceStub::InitSourceInner(MessageParcel &data, MessageParcel &reply) diff --git a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_dev.cpp b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_dev.cpp index ca1d5e047d0f598031a083d3e2347e5f3402a537..e55a1f2419eff85fc951c65cd9ddf05c0f8c24c0 100644 --- a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_dev.cpp +++ b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_dev.cpp @@ -703,16 +703,26 @@ int32_t DCameraSourceDev::CameraEventNotify(std::shared_ptr& event void DCameraSourceDev::NotifyResult(DCAMERA_EVENT eventType, DCameraSourceEvent& event, int32_t result) { - auto itFunc = memberFuncMap_.find(eventType); - if (itFunc == memberFuncMap_.end()) { - DHLOGE("Notify func map not find, execute %{public}d notify, devId: %{public}s dhId: %{public}s", eventType, - GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str()); - return; + DHLOGI("Notify func map, execute %{public}d notify", eventType); + switch (eventType) { + case DCAMERA_EVENT_REGIST: + case DCAMERA_EVENT_UNREGIST: + NotifyRegisterResult(eventType, event, result); + break; + case DCAMERA_EVENT_OPEN: + case DCAMERA_EVENT_CLOSE: + case DCAMERA_EVENT_CONFIG_STREAMS: + case DCAMERA_EVENT_RELEASE_STREAMS: + case DCAMERA_EVENT_START_CAPTURE: + case DCAMERA_EVENT_STOP_CAPTURE: + case DCAMERA_EVENT_UPDATE_SETTINGS: + NotifyHalResult(eventType, event, result); + break; + default: + DHLOGE("Notify func map not find, execute %{public}d notify, devId: %{public}s dhId: %{public}s", eventType, + GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str()); + break; } - - auto memberFunc = itFunc->second; - (this->*memberFunc)(eventType, event, result); - return; } void DCameraSourceDev::NotifyRegisterResult(DCAMERA_EVENT eventType, DCameraSourceEvent& event, int32_t result) diff --git a/services/cameraservice/sourceservice/src/distributedcameramgr/dcameradata/dcamera_stream_data_process_producer.cpp b/services/cameraservice/sourceservice/src/distributedcameramgr/dcameradata/dcamera_stream_data_process_producer.cpp index a9f9253da1c9c14d07630d145612adab62123e44..68f48271019e7f20df6147e269247cf68be3f2bb 100644 --- a/services/cameraservice/sourceservice/src/distributedcameramgr/dcameradata/dcamera_stream_data_process_producer.cpp +++ b/services/cameraservice/sourceservice/src/distributedcameramgr/dcameradata/dcamera_stream_data_process_producer.cpp @@ -62,7 +62,7 @@ void DCameraStreamDataProcessProducer::Start() } state_ = DCAMERA_PRODUCER_STATE_START; if (streamType_ == CONTINUOUS_FRAME) { - eventThread_ = std::thread(&DCameraStreamDataProcessProducer::StartEvent, this); + eventThread_ = std::thread([this]() { this->StartEvent(); }); std::unique_lock lock(eventMutex_); eventCon_.wait(lock, [this] { return eventHandler_ != nullptr; @@ -72,7 +72,7 @@ void DCameraStreamDataProcessProducer::Start() smoother_->RegisterListener(smootherListener_); smoother_->StartSmooth(); } else { - producerThread_ = std::thread(&DCameraStreamDataProcessProducer::LooperSnapShot, this); + producerThread_ = std::thread([this]() { this->LooperSnapShot(); }); } } diff --git a/services/cameraservice/sourceservice/src/distributedcameramgr/dcameradata/feedingsmoother/base/ifeeding_smoother.cpp b/services/cameraservice/sourceservice/src/distributedcameramgr/dcameradata/feedingsmoother/base/ifeeding_smoother.cpp index 620db87f53852f685b24db275ea243371493f35e..1aeff239f37380357fb5e8aa2882c97e12bc320e 100644 --- a/services/cameraservice/sourceservice/src/distributedcameramgr/dcameradata/feedingsmoother/base/ifeeding_smoother.cpp +++ b/services/cameraservice/sourceservice/src/distributedcameramgr/dcameradata/feedingsmoother/base/ifeeding_smoother.cpp @@ -61,7 +61,7 @@ int32_t IFeedingSmoother::StartSmooth() } InitTimeStatistician(); PrepareSmooth(); - smoothThread_ = std::thread(&IFeedingSmoother::LooperSmooth, this); + smoothThread_ = std::thread([this]() { this->LooperSmooth(); }); return SMOOTH_SUCCESS; } diff --git a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_capture_state.cpp b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_capture_state.cpp index e908cca4ef0e6683dd42ad7c32383e955f0ed918..cb79c5565038e7231ae3889ebde0c6d55105a788 100644 --- a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_capture_state.cpp +++ b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_capture_state.cpp @@ -38,14 +38,37 @@ DCameraSourceCaptureState::DCameraSourceCaptureState(std::shared_ptr& camDev, DCAMERA_EVENT eventType, DCameraSourceEvent& event) { - auto itFunc = memberFuncMap_.find(eventType); - if (itFunc == memberFuncMap_.end()) { - DHLOGE("DCameraSourceCaptureState execute %{public}d in wrong state", eventType); - return DCAMERA_WRONG_STATE; + DHLOGI("DCameraSourceCaptureState execute %{public}d", eventType); + int32_t ret = DCAMERA_NOT_FOUND; + switch (eventType) { + case DCAMERA_EVENT_REGIST: + ret = DoRegisterTask(camDev, event); + break; + case DCAMERA_EVENT_UNREGIST: + ret = DoUnregisterTask(camDev, event); + break; + case DCAMERA_EVENT_OPEN: + ret = DoOpenTask(camDev, event); + break; + case DCAMERA_EVENT_CLOSE: + ret = DoCloseTask(camDev, event); + break; + case DCAMERA_EVENT_START_CAPTURE: + ret = DoStartCaptureTask(camDev, event); + break; + case DCAMERA_EVENT_STOP_CAPTURE: + ret = DoStopCaptureTask(camDev, event); + break; + case DCAMERA_EVENT_UPDATE_SETTINGS: + ret = DoUpdateSettingsTask(camDev, event); + break; + case DCAMERA_EVENT_NOFIFY: + ret = DoEventNofityTask(camDev, event); + break; + default: + DHLOGE("DCameraSourceCaptureState execute %{public}d in wrong state", eventType); + return DCAMERA_WRONG_STATE; } - - auto memberFunc = itFunc->second; - int32_t ret = (this->*memberFunc)(camDev, event); if (ret != DCAMERA_OK) { DHLOGE("DCameraSourceCaptureState execute %{public}d failed, ret: %{public}d", eventType, ret); } diff --git a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_config_stream_state.cpp b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_config_stream_state.cpp index 4a67d04e0a3f602024adb187a0228fca7df8519b..c76804efacc325302fabb46cfa8d417cfa014c16 100644 --- a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_config_stream_state.cpp +++ b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_config_stream_state.cpp @@ -40,14 +40,43 @@ DCameraSourceConfigStreamState::DCameraSourceConfigStreamState(std::shared_ptr& camDev, DCAMERA_EVENT eventType, DCameraSourceEvent& event) { - auto itFunc = memberFuncMap_.find(eventType); - if (itFunc == memberFuncMap_.end()) { - DHLOGE("DCameraSourceConfigStreamState execute %{public}d in wrong state", eventType); - return DCAMERA_WRONG_STATE; + DHLOGI("DCameraSourceConfigStreamState execute %{public}d", eventType); + int32_t ret = DCAMERA_NOT_FOUND; + switch (eventType) { + case DCAMERA_EVENT_REGIST: + ret = DoRegisterTask(camDev, event); + break; + case DCAMERA_EVENT_UNREGIST: + ret = DoUnregisterTask(camDev, event); + break; + case DCAMERA_EVENT_OPEN: + ret = DoOpenTask(camDev, event); + break; + case DCAMERA_EVENT_CLOSE: + ret = DoCloseTask(camDev, event); + break; + case DCAMERA_EVENT_CONFIG_STREAMS: + ret = DoConfigStreamsTask(camDev, event); + break; + case DCAMERA_EVENT_RELEASE_STREAMS: + ret = DoReleaseStreamsTask(camDev, event); + break; + case DCAMERA_EVENT_START_CAPTURE: + ret = DoStartCaptureTask(camDev, event); + break; + case DCAMERA_EVENT_STOP_CAPTURE: + ret = DoStopCaptureTask(camDev, event); + break; + case DCAMERA_EVENT_UPDATE_SETTINGS: + ret = DoUpdateSettingsTask(camDev, event); + break; + case DCAMERA_EVENT_NOFIFY: + ret = DoEventNofityTask(camDev, event); + break; + default: + DHLOGE("DCameraSourceConfigStreamState execute %{public}d in wrong state", eventType); + return DCAMERA_WRONG_STATE; } - - auto memberFunc = itFunc->second; - int32_t ret = (this->*memberFunc)(camDev, event); if (ret != DCAMERA_OK) { DHLOGE("DCameraSourceConfigStreamState execute %{public}d failed, ret: %{public}d", eventType, ret); } diff --git a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_init_state.cpp b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_init_state.cpp index df4a5d5de7eae310bcca5566e570e459e0b0887b..ca54607449de081ebed1c9bbb25b4ba81a7bd1db 100644 --- a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_init_state.cpp +++ b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_init_state.cpp @@ -32,14 +32,19 @@ DCameraSourceInitState::DCameraSourceInitState(std::shared_ptr& camDev, DCAMERA_EVENT eventType, DCameraSourceEvent& event) { - auto itFunc = memberFuncMap_.find(eventType); - if (itFunc == memberFuncMap_.end()) { - DHLOGE("DCameraSourceInitState execute %{public}d in wrong state", eventType); - return DCAMERA_WRONG_STATE; + DHLOGI("DCameraSourceInitState execute %{public}d", eventType); + int32_t ret = DCAMERA_NOT_FOUND; + switch (eventType) { + case DCAMERA_EVENT_REGIST: + ret = DoRegisterTask(camDev, event); + break; + case DCAMERA_EVENT_UNREGIST: + ret = DoUnregisterTask(camDev, event); + break; + default: + DHLOGE("DCameraSourceInitState execute %{public}d in wrong state", eventType); + return DCAMERA_WRONG_STATE; } - - auto memberFunc = itFunc->second; - int32_t ret = (this->*memberFunc)(camDev, event); if (ret != DCAMERA_OK) { DHLOGE("DCameraSourceInitState execute %{public}d failed, ret: %{public}d", eventType, ret); } diff --git a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_opened_state.cpp b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_opened_state.cpp index eae218e33858d3a7cb06bce3008b9e6b36d21364..1703c3ed871c43a6fb15540776056364ba60cb8a 100644 --- a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_opened_state.cpp +++ b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_opened_state.cpp @@ -38,14 +38,37 @@ DCameraSourceOpenedState::DCameraSourceOpenedState(std::shared_ptr& camDev, DCAMERA_EVENT eventType, DCameraSourceEvent& event) { - auto itFunc = memberFuncMap_.find(eventType); - if (itFunc == memberFuncMap_.end()) { - DHLOGE("DCameraSourceOpenedState execute %{public}d in wrong state", eventType); - return DCAMERA_WRONG_STATE; + DHLOGI("DCameraSourceOpenedState execute %{public}d", eventType); + int32_t ret = DCAMERA_NOT_FOUND; + switch (eventType) { + case DCAMERA_EVENT_REGIST: + ret = DoRegisterTask(camDev, event); + break; + case DCAMERA_EVENT_UNREGIST: + ret = DoUnregisterTask(camDev, event); + break; + case DCAMERA_EVENT_OPEN: + ret = DoOpenTask(camDev, event); + break; + case DCAMERA_EVENT_CLOSE: + ret = DoCloseTask(camDev, event); + break; + case DCAMERA_EVENT_CONFIG_STREAMS: + ret = DoConfigStreamsTask(camDev, event); + break; + case DCAMERA_EVENT_RELEASE_STREAMS: + ret = DoReleaseStreamsTask(camDev, event); + break; + case DCAMERA_EVENT_UPDATE_SETTINGS: + ret = DoUpdateSettingsTask(camDev, event); + break; + case DCAMERA_EVENT_NOFIFY: + ret = DoEventNofityTask(camDev, event); + break; + default: + DHLOGE("DCameraSourceOpenedState execute %{public}d in wrong state", eventType); + return DCAMERA_WRONG_STATE; } - - auto memberFunc = itFunc->second; - int32_t ret = (this->*memberFunc)(camDev, event); if (ret != DCAMERA_OK) { DHLOGE("DCameraSourceOpenedState execute %{public}d failed, ret: %{public}d", eventType, ret); } diff --git a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_regist_state.cpp b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_regist_state.cpp index 45329404d98ee450f907179dee5af91684c3540e..79d3d7ab61edaf8c70d8d1c418255747caf1bc8b 100644 --- a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_regist_state.cpp +++ b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerastate/dcamera_source_regist_state.cpp @@ -36,14 +36,31 @@ DCameraSourceRegistState::DCameraSourceRegistState(std::shared_ptr& camDev, DCAMERA_EVENT eventType, DCameraSourceEvent& event) { - auto itFunc = memberFuncMap_.find(eventType); - if (itFunc == memberFuncMap_.end()) { - DHLOGE("DCameraSourceRegistState execute %{public}d in wrong state", eventType); - return DCAMERA_WRONG_STATE; + DHLOGI("DCameraSourceRegistState execute %{public}d", eventType); + int32_t ret = DCAMERA_NOT_FOUND; + switch (eventType) { + case DCAMERA_EVENT_REGIST: + ret = DoRegisterTask(camDev, event); + break; + case DCAMERA_EVENT_UNREGIST: + ret = DoUnregisterTask(camDev, event); + break; + case DCAMERA_EVENT_OPEN: + ret = DoOpenTask(camDev, event); + break; + case DCAMERA_EVENT_CLOSE: + ret = DoCloseTask(camDev, event); + break; + case DCAMERA_EVENT_NOFIFY: + ret = DoEventNofityTask(camDev, event); + break; + case DCAMERA_EVENT_GET_FULLCAPS: + ret = DoGetFullCaps(camDev, event); + break; + default: + DHLOGE("DCameraSourceRegistState execute %{public}d in wrong state", eventType); + return DCAMERA_WRONG_STATE; } - - auto memberFunc = itFunc->second; - int32_t ret = (this->*memberFunc)(camDev, event); if (ret != DCAMERA_OK) { DHLOGE("DCameraSourceRegistState execute %{public}d failed, ret: %{public}d", eventType, ret); } diff --git a/services/channel/src/dcamera_softbus_session.cpp b/services/channel/src/dcamera_softbus_session.cpp index 4f2d8debe047d5707df3d8a81c885cf03b996a48..2f54df095c0317e63424c3d2f1a9330077031e2e 100644 --- a/services/channel/src/dcamera_softbus_session.cpp +++ b/services/channel/src/dcamera_softbus_session.cpp @@ -296,11 +296,16 @@ int32_t DCameraSoftbusSession::SendData(DCameraSessionMode mode, std::shared_ptr return DCAMERA_NOT_FOUND; } auto memberFunc = itFunc->second; - if (mode == DCAMERA_SESSION_MODE_VIDEO) { - return (this->*memberFunc)(buffer); + switch (mode) { + case DCAMERA_SESSION_MODE_VIDEO: + return SendStream(buffer); + case DCAMERA_SESSION_MODE_CTRL: + case DCAMERA_SESSION_MODE_JPEG: + return UnPackSendData(buffer, memberFunc); + default: + return UnPackSendData(buffer, memberFunc); } - - return UnPackSendData(buffer, memberFunc); + return DCAMERA_NOT_FOUND; } int32_t DCameraSoftbusSession::UnPackSendData(std::shared_ptr& buffer, DCameraSendFuc memberFunc) @@ -321,7 +326,7 @@ int32_t DCameraSoftbusSession::UnPackSendData(std::shared_ptr& buffe "peerSess: %{public}s", ret, mySessionName_.c_str(), peerSessionName_.c_str()); return ret; } - return (this->*memberFunc)(unpackData); + return SendBytes(unpackData); } uint32_t offset = 0; while (totalLen > offset) { @@ -339,7 +344,7 @@ int32_t DCameraSoftbusSession::UnPackSendData(std::shared_ptr& buffe "%{public}s", ret, mySessionName_.c_str(), peerSessionName_.c_str()); return ret; } - ret = (this->*memberFunc)(unpackData); + ret = SendBytes(unpackData); if (ret != DCAMERA_OK) { DHLOGE("DCameraSoftbusSession sendData failed, ret: %{public}d, sess: %{public}s peerSess: %{public}s", ret, mySessionName_.c_str(), peerSessionName_.c_str()); diff --git a/services/data_process/src/pipeline/dcamera_pipeline_source.cpp b/services/data_process/src/pipeline/dcamera_pipeline_source.cpp index f9a3366d6a783da369b8dd41cd4440871ee7dfbd..387f102a7316a04da344ecada86d8675877c62d7 100644 --- a/services/data_process/src/pipeline/dcamera_pipeline_source.cpp +++ b/services/data_process/src/pipeline/dcamera_pipeline_source.cpp @@ -84,7 +84,7 @@ bool DCameraPipelineSource::IsInRange(const VideoConfigParams& curConfig) void DCameraPipelineSource::InitDCameraPipEvent() { DHLOGD("Init source DCamera pipeline event to asynchronously process data."); - eventThread_ = std::thread(&DCameraPipelineSource::StartEventHandler, this); + eventThread_ = std::thread([this]() { this->StartEventHandler(); }); std::unique_lock lock(eventMutex_); eventCon_.wait(lock, [this] { return pipeEventHandler_ != nullptr; diff --git a/services/data_process/src/pipeline_node/multimedia_codec/decoder/decode_data_process.cpp b/services/data_process/src/pipeline_node/multimedia_codec/decoder/decode_data_process.cpp index 7129d857625a2db24e1cf31f1b328563711a2155..4e9cc9264ba9aad26263e2bfd6cb1b369ce71f4a 100644 --- a/services/data_process/src/pipeline_node/multimedia_codec/decoder/decode_data_process.cpp +++ b/services/data_process/src/pipeline_node/multimedia_codec/decoder/decode_data_process.cpp @@ -95,7 +95,7 @@ bool DecodeDataProcess::IsConvertible(const VideoConfigParams& sourceConfig, con void DecodeDataProcess::InitCodecEvent() { DHLOGD("Init DecodeNode eventBus, and add handler for it."); - eventThread_ = std::thread(&DecodeDataProcess::StartEventHandler, this); + eventThread_ = std::thread([this]() { this->StartEventHandler(); }); std::unique_lock lock(eventMutex_); eventCon_.wait(lock, [this] { return decEventHandler_ != nullptr; diff --git a/services/data_process/src/pipeline_node/multimedia_codec/decoder/decode_data_process_common.cpp b/services/data_process/src/pipeline_node/multimedia_codec/decoder/decode_data_process_common.cpp index 8e4abf45befe5f6ab16faf6571167e862f58ddbe..9fb3c12492e3f176e56d8e4077e610e89fb735ac 100644 --- a/services/data_process/src/pipeline_node/multimedia_codec/decoder/decode_data_process_common.cpp +++ b/services/data_process/src/pipeline_node/multimedia_codec/decoder/decode_data_process_common.cpp @@ -95,7 +95,7 @@ bool DecodeDataProcess::IsConvertible(const VideoConfigParams& sourceConfig, con void DecodeDataProcess::InitCodecEvent() { DHLOGD("Init DecodeNode eventBus, and add handler for it."); - eventThread_ = std::thread(&DecodeDataProcess::StartEventHandler, this); + eventThread_ = std::thread([this]() { this->StartEventHandler(); }); std::unique_lock lock(eventMutex_); eventCon_.wait(lock, [this] { return decEventHandler_ != nullptr; @@ -238,7 +238,7 @@ int32_t DecodeDataProcess::SetDecoderOutputSurface() if (ret != GSERROR_OK || decodeConsumerSurface_ == nullptr) { DHLOGE("Set Usage failed."); } - + decodeSurfaceListener_ = new DecodeSurfaceListener(decodeConsumerSurface_, shared_from_this()); if (decodeConsumerSurface_->RegisterConsumerListener(decodeSurfaceListener_) != SURFACE_ERROR_OK) {