Merge "Camera: Use separate lock for mStreamingRequestId" into nyc-dev
am: c1e0154

* commit 'c1e0154940f84014967f9f611d22ad85a01be7cb':
  Camera: Use separate lock for mStreamingRequestId

Change-Id: Ic46790e70a89eee9e5bbfea514025109ba95b3f1
diff --git a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
index 63e44fd..dbec34e 100644
--- a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
+++ b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
@@ -234,6 +234,7 @@
             res = STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION,
                     msg.string());
         } else {
+            Mutex::Autolock idLock(mStreamingRequestIdLock);
             mStreamingRequestId = submitInfo->mRequestId;
         }
     } else {
@@ -271,6 +272,7 @@
         return STATUS_ERROR(CameraService::ERROR_DISCONNECTED, "Camera device no longer alive");
     }
 
+    Mutex::Autolock idLock(mStreamingRequestIdLock);
     if (mStreamingRequestId != requestId) {
         String8 msg = String8::format("Camera %d: Canceling request ID %d doesn't match "
                 "current request ID %d", mCameraId, requestId, mStreamingRequestId);
@@ -760,6 +762,7 @@
     }
 
     // FIXME: Also need check repeating burst.
+    Mutex::Autolock idLock(mStreamingRequestIdLock);
     if (mStreamingRequestId != REQUEST_ID_NONE) {
         String8 msg = String8::format(
             "Camera %d: Try to waitUntilIdle when there are active streaming requests",
@@ -792,6 +795,7 @@
         return STATUS_ERROR(CameraService::ERROR_DISCONNECTED, "Camera device no longer alive");
     }
 
+    Mutex::Autolock idLock(mStreamingRequestIdLock);
     mStreamingRequestId = REQUEST_ID_NONE;
     status_t err = mDevice->flush(lastFrameNumber);
     if (err != OK) {
@@ -982,7 +986,7 @@
         remoteCb->onRepeatingRequestError(lastFrameNumber);
     }
 
-    Mutex::Autolock icl(mBinderSerializationLock);
+    Mutex::Autolock idLock(mStreamingRequestIdLock);
     mStreamingRequestId = REQUEST_ID_NONE;
 }
 
diff --git a/services/camera/libcameraservice/api2/CameraDeviceClient.h b/services/camera/libcameraservice/api2/CameraDeviceClient.h
index 3660a18..d792b7d 100644
--- a/services/camera/libcameraservice/api2/CameraDeviceClient.h
+++ b/services/camera/libcameraservice/api2/CameraDeviceClient.h
@@ -208,6 +208,7 @@
 
     // Streaming request ID
     int32_t mStreamingRequestId;
+    Mutex mStreamingRequestIdLock;
     static const int32_t REQUEST_ID_NONE = -1;
 
     int32_t mRequestIdCounter;