summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Newberger <alann@google.com>2014-09-11 10:25:54 -0700
committerThe Android Automerger <android-build@google.com>2014-09-11 13:23:39 -0700
commit7109b77159a9bc8d8e420fab0204acda939dc997 (patch)
tree366c2bff1f9f176ead6bba888cef45f797962d76
parentf208a2dd188965eb8160417af52d6c497895075d (diff)
downloadandroid_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.java7
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 {