diff options
| author | 2011-06-27 14:19:53 -0700 | |
|---|---|---|
| committer | 2011-06-27 14:19:53 -0700 | |
| commit | 72d6d650f30ee304c15311b3fbec4627c7d190d2 (patch) | |
| tree | 925ec4cd750ceb76fac7aee057b3dbf9497d1d12 | |
| parent | 5a99645c382ef43c4acd26119b258083eac34bfd (diff) | |
| parent | ed9bbf27babc7e90a81b229cade498e931ff3dd2 (diff) | |
Merge "CameraService: Decouple dequeue and lock"
| -rw-r--r-- | services/camera/libcameraservice/CameraHardwareInterface.h | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/services/camera/libcameraservice/CameraHardwareInterface.h b/services/camera/libcameraservice/CameraHardwareInterface.h index a3749cf401eb..a583aad01e9f 100644 --- a/services/camera/libcameraservice/CameraHardwareInterface.h +++ b/services/camera/libcameraservice/CameraHardwareInterface.h @@ -559,13 +559,8 @@ private: ANativeWindowBuffer* anb; rc = a->dequeueBuffer(a, &anb); if (!rc) { - rc = a->lockBuffer(a, anb); - if (!rc) { - *buffer = &anb->handle; - *stride = anb->stride; - } - else - a->cancelBuffer(a, anb); + *buffer = &anb->handle; + *stride = anb->stride; } return rc; } @@ -576,6 +571,14 @@ private: (type *) ((char *) __mptr - (char *)(&((type *)0)->member)); }) #endif + static int __lock_buffer(struct preview_stream_ops* w, + buffer_handle_t* buffer) + { + ANativeWindow *a = anw(w); + return a->lockBuffer(a, + container_of(buffer, ANativeWindowBuffer, handle)); + } + static int __enqueue_buffer(struct preview_stream_ops* w, buffer_handle_t* buffer) { @@ -641,6 +644,7 @@ private: void initHalPreviewWindow() { mHalPreviewWindow.nw.cancel_buffer = __cancel_buffer; + mHalPreviewWindow.nw.lock_buffer = __lock_buffer; mHalPreviewWindow.nw.dequeue_buffer = __dequeue_buffer; mHalPreviewWindow.nw.enqueue_buffer = __enqueue_buffer; mHalPreviewWindow.nw.set_buffer_count = __set_buffer_count; |