diff options
author | Alan Newberger <alann@google.com> | 2014-09-11 10:25:54 -0700 |
---|---|---|
committer | The Android Automerger <android-build@google.com> | 2014-09-11 13:23:39 -0700 |
commit | 7109b77159a9bc8d8e420fab0204acda939dc997 (patch) | |
tree | 366c2bff1f9f176ead6bba888cef45f797962d76 | |
parent | f208a2dd188965eb8160417af52d6c497895075d (diff) | |
download | android_packages_apps_Camera2-7109b77159a9bc8d8e420fab0204acda939dc997.tar.gz android_packages_apps_Camera2-7109b77159a9bc8d8e420fab0204acda939dc997.tar.bz2 android_packages_apps_Camera2-7109b77159a9bc8d8e420fab0204acda939dc997.zip |
Establish synchronous camera closing when app utilizes API1/API2
To ensure API1 and API2 portability implementations coordinate together,
if app uses API2 for any mode, lock both modes into synchronouse camera
closing.
Bug: 17464089
Change-Id: If4cf1eb02053ec9e56b7b8df97c21e012467aa3a
-rw-r--r-- | src/com/android/camera/app/CameraController.java | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/com/android/camera/app/CameraController.java b/src/com/android/camera/app/CameraController.java index feb988204..c87df91d5 100644 --- a/src/com/android/camera/app/CameraController.java +++ b/src/com/android/camera/app/CameraController.java @@ -22,6 +22,7 @@ import android.os.Handler; import com.android.camera.CameraDisabledException; import com.android.camera.debug.Log; import com.android.camera.util.CameraUtil; +import com.android.camera.util.GservicesHelper; import com.android.ex.camera2.portability.CameraAgent; import com.android.ex.camera2.portability.CameraAgent.CameraExceptionCallback; import com.android.ex.camera2.portability.CameraDeviceInfo; @@ -230,12 +231,14 @@ public class CameraController implements CameraAgent.CameraOpenCallback, CameraP // No camera yet. checkAndOpenCamera(mContext, cameraManager, id, mCallbackHandler, this); } else if (mCameraProxy.getCameraId() != id || mUsingNewApi != useNewApi) { + boolean syncClose = GservicesHelper.useCamera2ApiThroughPortabilityLayer(mContext); Log.v(TAG, "different camera already opened, closing then reopening"); // Already has camera opened, and is switching cameras and/or APIs. if (mUsingNewApi) { - mCameraAgentNg.closeCamera(mCameraProxy, false); + mCameraAgentNg.closeCamera(mCameraProxy, true); } else { - mCameraAgent.closeCamera(mCameraProxy, false); + // if using API2 ensure API1 usage is also synced + mCameraAgent.closeCamera(mCameraProxy, syncClose); } checkAndOpenCamera(mContext, cameraManager, id, mCallbackHandler, this); } else { |