From 53ec72523a4083b88eaa13e2e720976523a7ebf8 Mon Sep 17 00:00:00 2001 From: Greg Hackmann Date: Fri, 9 May 2014 21:36:48 +0000 Subject: Revert "Use asynchronous lock/unlock API" This reverts commit 378ef07760eda717367d9429428c42d54d54d9a7. Change-Id: I1de5ab973b5383633e75924fe90ac3ca8216c36a --- libs/gui/Surface.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'libs/gui/Surface.cpp') diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp index 21ffc06894..27dbc4eeea 100644 --- a/libs/gui/Surface.cpp +++ b/libs/gui/Surface.cpp @@ -740,6 +740,15 @@ status_t Surface::lock( ALOGE_IF(err, "dequeueBuffer failed (%s)", strerror(-err)); if (err == NO_ERROR) { sp backBuffer(GraphicBuffer::getSelf(out)); + sp fence(new Fence(fenceFd)); + + err = fence->waitForever("Surface::lock"); + if (err != OK) { + ALOGE("Fence::wait failed (%s)", strerror(-err)); + cancelBuffer(out, fenceFd); + return err; + } + const Rect bounds(backBuffer->width, backBuffer->height); Region newDirtyRegion; @@ -790,9 +799,9 @@ status_t Surface::lock( } void* vaddr; - status_t res = backBuffer->lockAsync( + status_t res = backBuffer->lock( GRALLOC_USAGE_SW_READ_OFTEN | GRALLOC_USAGE_SW_WRITE_OFTEN, - newDirtyRegion.bounds(), &vaddr, fenceFd); + newDirtyRegion.bounds(), &vaddr); ALOGW_IF(res, "failed locking buffer (handle = %p)", backBuffer->handle); @@ -818,11 +827,10 @@ status_t Surface::unlockAndPost() return INVALID_OPERATION; } - int fd = -1; - status_t err = mLockedBuffer->unlockAsync(&fd); + status_t err = mLockedBuffer->unlock(); ALOGE_IF(err, "failed unlocking buffer (%p)", mLockedBuffer->handle); - err = queueBuffer(mLockedBuffer.get(), fd); + err = queueBuffer(mLockedBuffer.get(), -1); ALOGE_IF(err, "queueBuffer (handle=%p) failed (%s)", mLockedBuffer->handle, strerror(-err)); -- cgit v1.2.3-59-g8ed1b