diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2015-05-28 15:15:54 -0700 |
---|---|---|
committer | Eino-Ville Talvala <etalvala@google.com> | 2015-05-28 15:21:48 -0700 |
commit | 0ec23d3f89d804cc1d9dea8f0585dc6d57bfd5c2 (patch) | |
tree | ce0acecdfdb3f8903acfcf8541944ed3676546ad /services/camera | |
parent | e74c228e83906e0e317c4eb6eac20815ff839c04 (diff) | |
download | frameworks_av-0ec23d3f89d804cc1d9dea8f0585dc6d57bfd5c2.zip frameworks_av-0ec23d3f89d804cc1d9dea8f0585dc6d57bfd5c2.tar.gz frameworks_av-0ec23d3f89d804cc1d9dea8f0585dc6d57bfd5c2.tar.bz2 |
Camera3Device: Do not call cleanUpFailedRequest with mutex held
Double-acquiring a non-recursive mutex tends to work poorly.
Bug: 21498811
Change-Id: I1d59959fca69c97684522195808019797f7a6a7d
Diffstat (limited to 'services/camera')
-rw-r--r-- | services/camera/libcameraservice/device3/Camera3Device.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp index e2a53a2..0bc8ed1 100644 --- a/services/camera/libcameraservice/device3/Camera3Device.cpp +++ b/services/camera/libcameraservice/device3/Camera3Device.cpp @@ -2765,11 +2765,13 @@ bool Camera3Device::RequestThread::threadLoop() { // error ALOGE("RequestThread: Can't get input buffer, skipping request:" " %s (%d)", strerror(-res), res); - Mutex::Autolock l(mRequestLock); - if (mListener != NULL) { - mListener->notifyError( - ICameraDeviceCallbacks::ERROR_CAMERA_REQUEST, - nextRequest->mResultExtras); + { + Mutex::Autolock l(mRequestLock); + if (mListener != NULL) { + mListener->notifyError( + ICameraDeviceCallbacks::ERROR_CAMERA_REQUEST, + nextRequest->mResultExtras); + } } cleanUpFailedRequest(request, nextRequest, outputBuffers); return true; @@ -2792,11 +2794,13 @@ bool Camera3Device::RequestThread::threadLoop() { // error ALOGE("RequestThread: Can't get output buffer, skipping request:" " %s (%d)", strerror(-res), res); - Mutex::Autolock l(mRequestLock); - if (mListener != NULL) { - mListener->notifyError( - ICameraDeviceCallbacks::ERROR_CAMERA_REQUEST, - nextRequest->mResultExtras); + { + Mutex::Autolock l(mRequestLock); + if (mListener != NULL) { + mListener->notifyError( + ICameraDeviceCallbacks::ERROR_CAMERA_REQUEST, + nextRequest->mResultExtras); + } } cleanUpFailedRequest(request, nextRequest, outputBuffers); return true; |