diff options
author | Greg Hackmann <ghackmann@google.com> | 2014-05-09 21:39:07 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-05-09 21:39:07 +0000 |
commit | a9d49f99e69d8fc0e60b492b131322c96f47a232 (patch) | |
tree | f317098bde8b4c9ac66f77499f8b74964373404e /libs/gui/Surface.cpp | |
parent | f60564a13e917877c76c99294194a621d872076b (diff) | |
parent | 53ec72523a4083b88eaa13e2e720976523a7ebf8 (diff) | |
download | frameworks_native-a9d49f99e69d8fc0e60b492b131322c96f47a232.zip frameworks_native-a9d49f99e69d8fc0e60b492b131322c96f47a232.tar.gz frameworks_native-a9d49f99e69d8fc0e60b492b131322c96f47a232.tar.bz2 |
Merge "Revert "Use asynchronous lock/unlock API""
Diffstat (limited to 'libs/gui/Surface.cpp')
-rw-r--r-- | libs/gui/Surface.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp index 21ffc06..27dbc4e 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<GraphicBuffer> backBuffer(GraphicBuffer::getSelf(out)); + sp<Fence> 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)); |