diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2012-10-04 17:01:25 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-10-05 16:14:48 -0700 |
commit | f6e09d200c3e043737adcdadd52310ebbd1b19da (patch) | |
tree | ffce307ae9ce6dbc4e9b36e0353f48f563818520 | |
parent | 7373cbe85e617345f7002256a4be389fe62af913 (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.cpp | 11 |
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); |