diff --git a/common/BUILD.gn b/common/BUILD.gn index e3ec2a2..efa365c 100644 --- a/common/BUILD.gn +++ b/common/BUILD.gn @@ -33,6 +33,7 @@ ohos_shared_library("distributed_camera_utils") { sources = [ "src/utils/data_buffer.cpp", "src/utils/dcamera_utils_tools.cpp", + "src/utils/dcamera_sa_process_state.cpp", ] deps = [ diff --git a/services/cameraservice/base/include/dcamera_sa_process_state.h b/common/include/utils/dcamera_sa_process_state.h similarity index 57% rename from services/cameraservice/base/include/dcamera_sa_process_state.h rename to common/include/utils/dcamera_sa_process_state.h index 442f7ae..789fac2 100644 --- a/services/cameraservice/base/include/dcamera_sa_process_state.h +++ b/common/include/utils/dcamera_sa_process_state.h @@ -16,30 +16,10 @@ #ifndef DCAMERA_SA_PROCESS_STATE_H #define DCAMERA_SA_PROCESS_STATE_H -#include "single_instance.h" - -#include - namespace OHOS { namespace DistributedHardware { -class DCameraSAProcessState { -DECLARE_SINGLE_INSTANCE_BASE(DCameraSAProcessState); - -public: - void SetSinkProcessExit(); - void SetSourceProcessExit(); -private: - typedef enum { - DCAMERA_SA_EXIT_STATE_START = 0, - DCAMERA_SA_EXIT_STATE_STOP = 1 - } DCameraSAState; - DCameraSAProcessState() = default; - ~DCameraSAProcessState(); - void CheckSAProcessState(); - DCameraSAState sinkSAState_ = DCAMERA_SA_EXIT_STATE_START; - DCameraSAState sourceSAState_ = DCAMERA_SA_EXIT_STATE_START; - std::mutex saProcessState_; -}; +void SetSinkProcessExit(); +void SetSourceProcessExit(); } // namespace DistributedHardware } // namespace OHOS #endif // DCAMERA_SA_EXIT_STATE_H diff --git a/services/cameraservice/base/src/dcamera_sa_process_state.cpp b/common/src/utils/dcamera_sa_process_state.cpp similarity index 69% rename from services/cameraservice/base/src/dcamera_sa_process_state.cpp rename to common/src/utils/dcamera_sa_process_state.cpp index 9e38cca..46d0ed6 100644 --- a/services/cameraservice/base/src/dcamera_sa_process_state.cpp +++ b/common/src/utils/dcamera_sa_process_state.cpp @@ -15,43 +15,47 @@ #include "dcamera_sa_process_state.h" +#include + #include "distributed_hardware_log.h" namespace OHOS { namespace DistributedHardware { -IMPLEMENT_SINGLE_INSTANCE(DCameraSAProcessState); -DCameraSAProcessState::~DCameraSAProcessState() -{ - DHLOGI("DCameraSAProcessState Delete"); -} +typedef enum { + DCAMERA_SA_EXIT_STATE_START = 0, + DCAMERA_SA_EXIT_STATE_STOP = 1 +} DCameraSAState; -void DCameraSAProcessState::SetSinkProcessExit() +DCameraSAState sinkSAState_ = DCAMERA_SA_EXIT_STATE_START; +DCameraSAState sourceSAState_ = DCAMERA_SA_EXIT_STATE_START; +std::mutex saProcessState_; + +void SetSinkProcessExit() { DHLOGI("set sink process exit."); std::lock_guard autoLock(saProcessState_); sinkSAState_ = DCAMERA_SA_EXIT_STATE_STOP; - CheckSAProcessState(); -} - -void DCameraSAProcessState::SetSourceProcessExit() -{ - DHLOGI("set sources process exit."); - std::lock_guard autoLock(saProcessState_); - sourceSAState_ = DCAMERA_SA_EXIT_STATE_STOP; - CheckSAProcessState(); -} - -void DCameraSAProcessState::CheckSAProcessState() -{ - DHLOGI("start exit sa process."); DHLOGI("sourceSAState_ = %d sinkSAState_ = %d", sourceSAState_, sinkSAState_); if (sourceSAState_ == DCAMERA_SA_EXIT_STATE_START || sinkSAState_ == DCAMERA_SA_EXIT_STATE_START) { - DHLOGI("=============DCAMERA_SA_EXIT_STATE_START=============="); return; } DHLOGI("exit sa process success."); exit(0); } + +void SetSourceProcessExit() +{ + DHLOGI("set sources process exit."); + std::lock_guard autoLock(saProcessState_); + sourceSAState_ = DCAMERA_SA_EXIT_STATE_STOP; + DHLOGI("sourceSAState_ = %d sinkSAState_ = %d", sourceSAState_, sinkSAState_); + if (sourceSAState_ == DCAMERA_SA_EXIT_STATE_START || sinkSAState_ == DCAMERA_SA_EXIT_STATE_START) { + return; + } + DHLOGI("exit sa process success."); + exit(0); +} + } // namespace DistributedHardware } // namespace OHOS \ No newline at end of file diff --git a/services/cameraservice/sinkservice/BUILD.gn b/services/cameraservice/sinkservice/BUILD.gn index 6d3318e..ca6b9c4 100644 --- a/services/cameraservice/sinkservice/BUILD.gn +++ b/services/cameraservice/sinkservice/BUILD.gn @@ -71,7 +71,6 @@ ohos_shared_library("distributed_camera_sink") { "${services_path}/cameraservice/base/src/dcamera_info_cmd.cpp", "${services_path}/cameraservice/base/src/dcamera_metadata_setting_cmd.cpp", "${services_path}/cameraservice/base/src/dcamera_open_info_cmd.cpp", - "${services_path}/cameraservice/base/src/dcamera_sa_process_state.cpp", "src/distributedcamera/distributed_camera_sink_service.cpp", "src/distributedcamera/distributed_camera_sink_stub.cpp", "src/distributedcameramgr/callback/dcamera_sink_controller_state_callback.cpp", diff --git a/services/cameraservice/sinkservice/src/distributedcamera/distributed_camera_sink_service.cpp b/services/cameraservice/sinkservice/src/distributedcamera/distributed_camera_sink_service.cpp index 3d3f23f..41ea35c 100644 --- a/services/cameraservice/sinkservice/src/distributedcamera/distributed_camera_sink_service.cpp +++ b/services/cameraservice/sinkservice/src/distributedcamera/distributed_camera_sink_service.cpp @@ -117,8 +117,8 @@ int32_t DistributedCameraSinkService::ReleaseSink() } } camerasMap_.clear(); - DHLOGI("check source sa state."); - DCameraSAProcessState::GetInstance().SetSinkProcessExit(); + DHLOGI("check sink sa state."); + SetSinkProcessExit(); return DCAMERA_OK; } diff --git a/services/cameraservice/sourceservice/BUILD.gn b/services/cameraservice/sourceservice/BUILD.gn index 4724802..8f53c80 100644 --- a/services/cameraservice/sourceservice/BUILD.gn +++ b/services/cameraservice/sourceservice/BUILD.gn @@ -60,7 +60,6 @@ ohos_shared_library("distributed_camera_source") { "${services_path}/cameraservice/base/src/dcamera_info_cmd.cpp", "${services_path}/cameraservice/base/src/dcamera_metadata_setting_cmd.cpp", "${services_path}/cameraservice/base/src/dcamera_open_info_cmd.cpp", - "${services_path}/cameraservice/base/src/dcamera_sa_process_state.cpp", "src/distributedcamera/dcamera_service_state_listener.cpp", "src/distributedcamera/dcamera_source_callback_proxy.cpp", "src/distributedcamera/distributed_camera_source_service.cpp", 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 9ac40be..e02d965 100644 --- a/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_service.cpp +++ b/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_service.cpp @@ -104,7 +104,7 @@ int32_t DistributedCameraSourceService::ReleaseSource() } listener_ = nullptr; DHLOGI("check source sa state."); - DCameraSAProcessState::GetInstance().SetSourceProcessExit(); + SetSourceProcessExit(); return DCAMERA_OK; }