Camera: fix invalid torch flash status
If the camera is restricted by MDM, the Camera HAL is initialized and
then the connection is rejected by startCameraOps.
However, for some AP vendors, the Camera HAL will post a torch status
callback when the HAL is initialized but not when it is disconnected.
Under the above circumstances, FlashlightTile receives only
onTorchModeUnavailable callback and torch flash control is disabled
until the device is rebooted.
This patch addresses the issue by adjusting the order of startCameraOps.
Bug: 325562820
Test: Manual test with MDM policy applied
Change-Id: I47b59ac12fbd735fdfc1ba66cb34a77a7e2d4640
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
index de3fe97..ae94882 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -202,6 +202,8 @@
return res;
}
+ setCameraMuteLocked(mCameraMuteInitial);
+
mPreparerThread = new PreparerThread();
internalUpdateStatusLocked(STATUS_UNCONFIGURED);
@@ -5447,10 +5449,19 @@
ATRACE_CALL();
Mutex::Autolock il(mInterfaceLock);
Mutex::Autolock l(mLock);
+ return setCameraMuteLocked(enabled);
+}
- if (mRequestThread == nullptr || !mSupportCameraMute) {
+status_t Camera3Device::setCameraMuteLocked(bool enabled) {
+ if (mRequestThread == nullptr) {
+ mCameraMuteInitial = enabled;
+ return OK;
+ }
+
+ if (!mSupportCameraMute) {
return INVALID_OPERATION;
}
+
int32_t muteMode =
!enabled ? ANDROID_SENSOR_TEST_PATTERN_MODE_OFF :
mSupportTestPatternSolidColor ? ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR :