Camera3: Fix metadata result not being rewritten after capture

Generally this problem manifested itself as the Frame Count not being set,
which then errored out ProFrameProcessor with a "Success" error.

Change-Id: Ifa927f43d0ce92100651ad3f714099a2f1ec4c2a
diff --git a/services/camera/libcameraservice/Camera3Device.cpp b/services/camera/libcameraservice/Camera3Device.cpp
index 6cf652c..f2c8c04 100644
--- a/services/camera/libcameraservice/Camera3Device.cpp
+++ b/services/camera/libcameraservice/Camera3Device.cpp
@@ -899,11 +899,19 @@
 
         // Push result metadata into queue
         mResultQueue.push_back(CameraMetadata());
-        CameraMetadata &captureResult = *(mResultQueue.end());
+        // Lets avoid copies! Too bad there's not a #back method
+        CameraMetadata &captureResult = *(--mResultQueue.end());
 
         captureResult = result->result;
-        captureResult.update(ANDROID_REQUEST_FRAME_COUNT,
-                (int32_t*)&result->frame_number, 1);
+        if (captureResult.update(ANDROID_REQUEST_FRAME_COUNT,
+                (int32_t*)&result->frame_number, 1) != OK) {
+            ALOGE("%s: Camera %d: Failed to set frame# in metadata (%d)",
+                  __FUNCTION__, mId, result->frame_number);
+            // TODO: Report error upstream
+        } else {
+            ALOGVV("%s: Camera %d: Set frame# in metadata (%d)",
+                  __FUNCTION__, mId, result->frame_number);
+        }
 
         // Get timestamp from result metadata