Camera: ProClient add asynchronous locks and such

Change-Id: I551e5e5e76d9be733fab5224beaa7309268c0f38
diff --git a/include/camera/IProCameraCallbacks.h b/include/camera/IProCameraCallbacks.h
index ac1d5eb..e5be099 100644
--- a/include/camera/IProCameraCallbacks.h
+++ b/include/camera/IProCameraCallbacks.h
@@ -39,6 +39,14 @@
     virtual void            dataCallbackTimestamp(nsecs_t timestamp,
                                                   int32_t msgType,
                                                   const sp<IMemory>& data) = 0;
+
+    enum LockStatus {
+        LOCK_ACQUIRED,
+        LOCK_RELEASED,
+        LOCK_STOLEN,
+    };
+
+    virtual void            onLockStatusChanged(LockStatus newLockStatus) = 0;
 };
 
 // ----------------------------------------------------------------------------
diff --git a/include/camera/ProCamera.h b/include/camera/ProCamera.h
index ba5fdc0..2dd01e3 100644
--- a/include/camera/ProCamera.h
+++ b/include/camera/ProCamera.h
@@ -34,9 +34,10 @@
 public:
     // Lock has been acquired. Write operations now available.
     virtual void onLockAcquired() = 0;
-    // Lock has been released with exclusiveUnlock, or has been stolen by
-    // another client.
+    // Lock has been released with exclusiveUnlock.
     virtual void onLockReleased() = 0;
+    // Lock has been stolen by another client.
+    virtual void onLockStolen() = 0;
 
     // Lock free.
     virtual void onTriggerNotify(int32_t msgType, int32_t ext1, int32_t ext2)
@@ -129,6 +130,8 @@
     virtual void        dataCallbackTimestamp(nsecs_t timestamp,
                                               int32_t msgType,
                                               const sp<IMemory>& dataPtr);
+    virtual void        onLockStatusChanged(
+                                IProCameraCallbacks::LockStatus newLockStatus);
 
     class DeathNotifier: public IBinder::DeathRecipient
     {