Update state only if calls to native window are successful

Change-Id: I7a20f3ca787e11ca9c8c904b257e3c8a4e529136
diff --git a/services/camera/libcameraservice/Camera2Device.cpp b/services/camera/libcameraservice/Camera2Device.cpp
index 6eca7c0..d48c163 100644
--- a/services/camera/libcameraservice/Camera2Device.cpp
+++ b/services/camera/libcameraservice/Camera2Device.cpp
@@ -982,11 +982,13 @@
     if (err != OK) {
         ALOGE("%s: Error queueing buffer to native window: %s (%d)",
                 __FUNCTION__, strerror(-err), err);
+        return err;
     }
+
     stream->mActiveBuffers--;
     stream->mFrameCount++;
     stream->mLastTimestamp = timestamp;
-    return err;
+    return OK;
 }
 
 int Camera2Device::StreamAdapter::cancel_buffer(const camera2_stream_ops_t* w,
@@ -999,10 +1001,18 @@
         ALOGE("%s: Called when in bad state: %d", __FUNCTION__, stream->mState);
         return INVALID_OPERATION;
     }
-    stream->mActiveBuffers--;
+
     ANativeWindow *a = toANW(w);
-    return a->cancelBuffer(a,
+    int err = a->cancelBuffer(a,
             container_of(buffer, ANativeWindowBuffer, handle), -1);
+    if (err != OK) {
+        ALOGE("%s: Error canceling buffer to native window: %s (%d)",
+                __FUNCTION__, strerror(-err), err);
+        return err;
+    }
+
+    stream->mActiveBuffers--;
+    return OK;
 }
 
 int Camera2Device::StreamAdapter::set_crop(const camera2_stream_ops_t* w,