summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2012-10-04 17:01:25 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-10-05 16:14:48 -0700
commitf6e09d200c3e043737adcdadd52310ebbd1b19da (patch)
treeffce307ae9ce6dbc4e9b36e0353f48f563818520
parent7373cbe85e617345f7002256a4be389fe62af913 (diff)
Camera2: Unconditionally shut down streams on disconnect.
stopPreviewL may do nothing in certain states. Stop streams directly to avoid those failures, so that we always maintain the HAL interface invariant that streams referenced by in-flight requests are never deleted. Bug: 7276954 Change-Id: Ic4cffc43036f4944684d941981a43d6dd1dce7af
-rw-r--r--services/camera/libcameraservice/Camera2Client.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/services/camera/libcameraservice/Camera2Client.cpp b/services/camera/libcameraservice/Camera2Client.cpp
index 90cba46f..32394837 100644
--- a/services/camera/libcameraservice/Camera2Client.cpp
+++ b/services/camera/libcameraservice/Camera2Client.cpp
@@ -378,7 +378,16 @@ void Camera2Client::disconnect() {
ALOGV("Camera %d: Shutting down", mCameraId);
- stopPreviewL();
+ res = mStreamingProcessor->stopStream();
+ if (res != OK) {
+ ALOGE("%s: Problem stopping streaming: %s (%d)",
+ __FUNCTION__, strerror(-res), res);
+ }
+ res = mDevice->waitUntilDrained();
+ if (res != OK) {
+ ALOGE("%s: Problem waiting for HAL: %s (%d)",
+ __FUNCTION__, strerror(-res), res);
+ }
{
SharedParameters::Lock l(mParameters);