diff --git a/services/cameraservice/sourceservice/include/distributedcameramgr/dcamera_source_dev.h b/services/cameraservice/sourceservice/include/distributedcameramgr/dcamera_source_dev.h index 4d6376681d2643b218c76873ceeb7f05c7c3e04e..d9581285c5e66c525910820382517e2c85dbf047 100644 --- a/services/cameraservice/sourceservice/include/distributedcameramgr/dcamera_source_dev.h +++ b/services/cameraservice/sourceservice/include/distributedcameramgr/dcamera_source_dev.h @@ -71,6 +71,7 @@ public: int32_t GetFullCaps(); void SetTokenId(uint64_t token); int32_t UpdateDCameraWorkMode(const WorkModeParam& param); + bool GetForceSwitchFlag(); class DCameraSourceDevEventHandler : public AppExecFwk::EventHandler { public: @@ -123,6 +124,7 @@ private: sptr hdiCallback_; int32_t sceneMode_ = 0; uint64_t tokenId_ = 0; + bool isForceSwitch_ = false; std::map memberFuncMap_; std::map eventResultMap_; diff --git a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_dev.cpp b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_dev.cpp index b0fd4bc61aa5c4565995c16571f81d07e111c003..3f6404c3da8a248a0f6a5b788e4d7290e7666938 100644 --- a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_dev.cpp +++ b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_dev.cpp @@ -532,6 +532,7 @@ int32_t DCameraSourceDev::CloseCamera() } CHECK_AND_RETURN_RET_LOG(stateListener_ == nullptr, DCAMERA_BAD_VALUE, "stateListener_ is nullptr."); stateListener_->OnHardwareStateChanged(devId_, dhId_, DcameraBusinessState::IDLE); + isForceSwitch_ = false; return DCAMERA_OK; } @@ -541,6 +542,7 @@ int32_t DCameraSourceDev::ConfigStreams(std::vectormode_; + isForceSwitch_ = info->isForceSwitch_; break; } int32_t ret = input_->ConfigStreams(streamInfos); @@ -891,6 +893,9 @@ int32_t DCameraSourceDev::UpdateDCameraWorkMode(const WorkModeParam& param) int32_t ret = input_->UpdateWorkMode(param); DHLOGI("update dcamera workmode by input_ done, ret %{public}d", ret); return ret; +bool DCameraSourceDev::GetForceSwitchFlag() +{ + return isForceSwitch_; } } // namespace DistributedHardware } // namespace OHOS diff --git a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerahdf/dcamera_provider_callback_impl.cpp b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerahdf/dcamera_provider_callback_impl.cpp index 4162fad7b3720463ef6850113cc0cc254b501c97..21f06cf153219915f228e42eaa4a913e7fd2e6ed 100644 --- a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerahdf/dcamera_provider_callback_impl.cpp +++ b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerahdf/dcamera_provider_callback_impl.cpp @@ -128,6 +128,7 @@ int32_t DCameraProviderCallbackImpl::ConfigureStreams(const DHBase& dhBase, stream->encodeType_ = iter->encodeType_; stream->type_ = iter->type_; stream->mode_ = iter->mode_; + stream->isForceSwitch_ = iter->isForceSwitch_; streams.push_back(stream); } int32_t ret = sourceDev->ConfigCameraStreams(streams);