diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2014-10-23 21:52:52 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-10-23 21:52:52 +0000 |
commit | 4d8ae211ae2e2a5ae464931ce41ec5b1d6e6d51f (patch) | |
tree | 1970884c99a9aeec091d9572864c3a11e9bf21ef /services | |
parent | 2f368e57e58c6bc3ab291d6318b19c6698fc184b (diff) | |
parent | 661c21da5592ca48256747ec220efb2e599eeb72 (diff) | |
download | frameworks_av-4d8ae211ae2e2a5ae464931ce41ec5b1d6e6d51f.zip frameworks_av-4d8ae211ae2e2a5ae464931ce41ec5b1d6e6d51f.tar.gz frameworks_av-4d8ae211ae2e2a5ae464931ce41ec5b1d6e6d51f.tar.bz2 |
am 661c21da: CameraService: Disconnect: Release mutex while waiting for joins.
* commit '661c21da5592ca48256747ec220efb2e599eeb72':
CameraService: Disconnect: Release mutex while waiting for joins.
Diffstat (limited to 'services')
-rw-r--r-- | services/camera/libcameraservice/api1/Camera2Client.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/services/camera/libcameraservice/api1/Camera2Client.cpp b/services/camera/libcameraservice/api1/Camera2Client.cpp index 2a6aa7b..f3a88a1 100644 --- a/services/camera/libcameraservice/api1/Camera2Client.cpp +++ b/services/camera/libcameraservice/api1/Camera2Client.cpp @@ -419,12 +419,20 @@ void Camera2Client::disconnect() { ALOGV("Camera %d: Waiting for threads", mCameraId); - mStreamingProcessor->join(); - mFrameProcessor->join(); - mCaptureSequencer->join(); - mJpegProcessor->join(); - mZslProcessorThread->join(); - mCallbackProcessor->join(); + { + // Don't wait with lock held, in case the other threads need to + // complete callbacks that re-enter Camera2Client + mBinderSerializationLock.unlock(); + + mStreamingProcessor->join(); + mFrameProcessor->join(); + mCaptureSequencer->join(); + mJpegProcessor->join(); + mZslProcessorThread->join(); + mCallbackProcessor->join(); + + mBinderSerializationLock.lock(); + } ALOGV("Camera %d: Deleting streams", mCameraId); |