OSDN Git Service

camera: Fix deadlock when sending callbacks during disconnect
authorIgor Murashkin <iam@google.com>
Fri, 30 Aug 2013 00:43:01 +0000 (17:43 -0700)
committerIgor Murashkin <iam@google.com>
Fri, 30 Aug 2013 00:55:08 +0000 (17:55 -0700)
Bug: 10552448
Change-Id: Ie93ba744ae6705aa657f980ae8e08ec624feeb39

services/camera/libcameraservice/api2/CameraDeviceClient.cpp

index 289ba06..f147c06 100644 (file)
@@ -500,14 +500,12 @@ void CameraDeviceClient::onFrameAvailable(int32_t frameId,
     ATRACE_CALL();
     ALOGV("%s", __FUNCTION__);
 
-    Mutex::Autolock icl(mBinderSerializationLock);
-    SharedCameraCallbacks::Lock l(mSharedCameraCallbacks);
-
-    if (mRemoteCallback != NULL) {
+    // Thread-safe. No lock necessary.
+    sp<ICameraDeviceCallbacks> remoteCb = mRemoteCallback;
+    if (remoteCb != NULL) {
         ALOGV("%s: frame = %p ", __FUNCTION__, &frame);
-        mRemoteCallback->onResultReceived(frameId, frame);
+        remoteCb->onResultReceived(frameId, frame);
     }
-
 }
 
 // TODO: move to Camera2ClientBase