Camera3: Allow register_stream_buffers while requests are in flight

Change-Id: I6dba0d282887c20ee683d8eaafd8bf81241f4767
diff --git a/camera/EmulatedFakeCamera3.cpp b/camera/EmulatedFakeCamera3.cpp
index cdfb597..3c34777 100644
--- a/camera/EmulatedFakeCamera3.cpp
+++ b/camera/EmulatedFakeCamera3.cpp
@@ -350,7 +350,9 @@
      * Sanity checks
      */
 
-    if (mStatus != STATUS_READY) {
+    // OK: register streams at any time during configure
+    // (but only once per stream)
+    if (mStatus != STATUS_READY && mStatus != STATUS_ACTIVE) {
         ALOGE("%s: Cannot register buffers in state %d",
                 __FUNCTION__, mStatus);
         return NO_INIT;
@@ -378,6 +380,12 @@
 
     PrivateStreamInfo *privStream =
             static_cast<PrivateStreamInfo*>((*s)->priv);
+
+    if (privStream->registered) {
+        ALOGE("%s: Illegal to register buffer more than once", __FUNCTION__);
+        return BAD_VALUE;
+    }
+
     privStream->registered = true;
 
     return OK;