diff --git a/services/cameraservice/sourceservice/include/distributedcameramgr/dcamerahdf/dcamera_hdf_operate.h b/services/cameraservice/sourceservice/include/distributedcameramgr/dcamerahdf/dcamera_hdf_operate.h index f8e1ba47da503a5793081e23fe4eefb17a5891e9..198aca17d6dc1179fb0357197c4de5a038525bb0 100644 --- a/services/cameraservice/sourceservice/include/distributedcameramgr/dcamerahdf/dcamera_hdf_operate.h +++ b/services/cameraservice/sourceservice/include/distributedcameramgr/dcamerahdf/dcamera_hdf_operate.h @@ -32,7 +32,7 @@ using OHOS::HDI::ServiceManager::V1_0::ServStatListenerStub; const std::string CAMERA_SERVICE_NAME = "distributed_camera_service"; const std::string PROVIDER_SERVICE_NAME = "distributed_camera_provider_service"; constexpr uint16_t INVALID_VALUE = 0xffff; -constexpr int32_t WAIT_TIME = 500; +constexpr int32_t WAIT_TIME = 2000; namespace OHOS { namespace DistributedHardware { @@ -44,7 +44,8 @@ public: int32_t UnLoadDcameraHDFImpl(); private: - int32_t WaitLoadService(const uint16_t& servStatus, const std::string& servName); + int32_t WaitLoadCameraService(); + int32_t WaitLoadProviderService(); private: OHOS::sptr devmgr_; diff --git a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerahdf/dcamera_hdf_operate.cpp b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerahdf/dcamera_hdf_operate.cpp index 97f84abb2a2f959cc0d075f471db85f0570f3f63..a9acca8f250bcf913b17367057cb6346dd522253 100644 --- a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerahdf/dcamera_hdf_operate.cpp +++ b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerahdf/dcamera_hdf_operate.cpp @@ -65,21 +65,21 @@ int32_t DCameraHdfOperate::LoadDcameraHDFImpl() return DCAMERA_BAD_VALUE; } + DHLOGI("Load camera service."); if (devmgr_->LoadDevice(CAMERA_SERVICE_NAME) != 0) { DHLOGE("Load camera service failed!"); return DCAMERA_BAD_OPERATE; } - if (WaitLoadService(cameraServStatus_, CAMERA_SERVICE_NAME) != DCAMERA_OK) { - DHLOGE("Wait load camera service failed!"); + if (WaitLoadCameraService() != DCAMERA_OK) { return DCAMERA_BAD_OPERATE; } + DHLOGI("Load provider service."); if (devmgr_->LoadDevice(PROVIDER_SERVICE_NAME) != 0) { DHLOGE("Load provider service failed!"); return DCAMERA_BAD_OPERATE; } - if (WaitLoadService(providerServStatus_, PROVIDER_SERVICE_NAME) != DCAMERA_OK) { - DHLOGE("Wait load provider service failed!"); + if (WaitLoadProviderService() != DCAMERA_OK) { return DCAMERA_BAD_OPERATE; } @@ -89,15 +89,32 @@ int32_t DCameraHdfOperate::LoadDcameraHDFImpl() return DCAMERA_OK; } -int32_t DCameraHdfOperate::WaitLoadService(const uint16_t& servStatus, const std::string& servName) +int32_t DCameraHdfOperate::WaitLoadCameraService() { + DHLOGI("wait Load camera service."); std::unique_lock lock(hdfOperateMutex_); - hdfOperateCon_.wait_for(lock, std::chrono::milliseconds(WAIT_TIME), [servStatus] { - return (servStatus == OHOS::HDI::ServiceManager::V1_0::SERVIE_STATUS_START); + hdfOperateCon_.wait_for(lock, std::chrono::milliseconds(WAIT_TIME), [this] { + return (this->cameraServStatus_ == OHOS::HDI::ServiceManager::V1_0::SERVIE_STATUS_START); }); - if (servStatus != OHOS::HDI::ServiceManager::V1_0::SERVIE_STATUS_START) { - DHLOGE("wait load service %s failed, status %d", servName.c_str(), servStatus); + if (cameraServStatus_ != OHOS::HDI::ServiceManager::V1_0::SERVIE_STATUS_START) { + DHLOGE("wait load cameraService failed, status %d", cameraServStatus_); + return DCAMERA_BAD_OPERATE; + } + + return DCAMERA_OK; +} + +int32_t DCameraHdfOperate::WaitLoadProviderService() +{ + DHLOGI("wait Load provider service."); + std::unique_lock lock(hdfOperateMutex_); + hdfOperateCon_.wait_for(lock, std::chrono::milliseconds(WAIT_TIME), [this] { + return (this->providerServStatus_ == OHOS::HDI::ServiceManager::V1_0::SERVIE_STATUS_START); + }); + + if (providerServStatus_ != OHOS::HDI::ServiceManager::V1_0::SERVIE_STATUS_START) { + DHLOGE("wait load providerService failed, status %d", providerServStatus_); return DCAMERA_BAD_OPERATE; }