summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2012-08-09 17:43:46 -0700
committerJames Dong <jdong@google.com>2012-08-09 17:46:53 -0700
commit31d377b7622279034326fbd8b9803a738a39fb30 (patch)
treee9bec6bf0588eb4fbb68a84a0a7720d20e90001c /services
parent9352d1168c09903d4ea27b695ef683316c544ae5 (diff)
downloadframeworks_av-31d377b7622279034326fbd8b9803a738a39fb30.zip
frameworks_av-31d377b7622279034326fbd8b9803a738a39fb30.tar.gz
frameworks_av-31d377b7622279034326fbd8b9803a738a39fb30.tar.bz2
Update state only if calls to native window are successful
Change-Id: I7a20f3ca787e11ca9c8c904b257e3c8a4e529136
Diffstat (limited to 'services')
-rw-r--r--services/camera/libcameraservice/Camera2Device.cpp16
1 files changed, 13 insertions, 3 deletions
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 @@ int Camera2Device::StreamAdapter::enqueue_buffer(const camera2_stream_ops_t* w,
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 @@ int Camera2Device::StreamAdapter::cancel_buffer(const camera2_stream_ops_t* w,
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,