From f5e6f16486b1d1f657f3d143fae49b71c176f608 Mon Sep 17 00:00:00 2001 From: Shuzhen Wang Date: Tue, 16 Apr 2013 16:08:11 -0700 Subject: Camera: Call cancel_buffers on min undequeued buffers Call cancel_buffers on min undequeued buffers after dequeuing all buffers before stating prewview. Bug: 8371899 Change-Id: I9cf911f57044b034f77e185a827953d260ac1786 Signed-off-by: Iliyan Malchev --- camera/QCameraHWI_Preview.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'camera') diff --git a/camera/QCameraHWI_Preview.cpp b/camera/QCameraHWI_Preview.cpp index 302afac..cc85c3d 100644 --- a/camera/QCameraHWI_Preview.cpp +++ b/camera/QCameraHWI_Preview.cpp @@ -232,6 +232,13 @@ status_t QCameraStream_preview::getBufferFromSurface() mHalCamCtrl->mPreviewMemory.private_buffer_handle[cnt]->offset); } + //Cancel min_undequeued_buffer buffers back to the window + for (int i = 0; i < numMinUndequeuedBufs; i ++) { + if( mHalCamCtrl->mPreviewMemory.local_flag[i] != BUFFER_NOT_OWNED) { + err = mPreviewWindow->cancel_buffer(mPreviewWindow, mHalCamCtrl->mPreviewMemory.buffer_handle[i]); + } + mHalCamCtrl->mPreviewMemory.local_flag[i] = BUFFER_NOT_OWNED; + } memset(&mHalCamCtrl->mMetadata, 0, sizeof(mHalCamCtrl->mMetadata)); memset(mHalCamCtrl->mFace, 0, sizeof(mHalCamCtrl->mFace)); @@ -920,8 +927,8 @@ status_t QCameraStream_preview::processPreviewFrameWithDisplay( } } else { ALOGE("%s: buffer to be enqueued is not locked", __FUNCTION__); - //mHalCamCtrl->mPreviewMemoryLock.unlock(); - //return -EINVAL; + mHalCamCtrl->mPreviewMemoryLock.unlock(); + return -EINVAL; } #ifdef USE_ION -- cgit v1.2.3