diff options
author | James Dong <jdong@google.com> | 2012-08-09 17:43:46 -0700 |
---|---|---|
committer | James Dong <jdong@google.com> | 2012-08-09 17:46:53 -0700 |
commit | 31d377b7622279034326fbd8b9803a738a39fb30 (patch) | |
tree | e9bec6bf0588eb4fbb68a84a0a7720d20e90001c /services/camera/libcameraservice/Camera2Device.cpp | |
parent | 9352d1168c09903d4ea27b695ef683316c544ae5 (diff) | |
download | frameworks_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/camera/libcameraservice/Camera2Device.cpp')
-rw-r--r-- | services/camera/libcameraservice/Camera2Device.cpp | 16 |
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, |