diff options
| author | 2014-05-09 22:00:04 +0000 | |
|---|---|---|
| committer | 2014-05-09 22:00:04 +0000 | |
| commit | 2f3dca149a2bcae96f18e38f7ba99a95c3e1b08c (patch) | |
| tree | c42170cdac8e30c84813a2723fbb89689b7d2463 /libs/gui/Surface.cpp | |
| parent | 02528cf6aaedbbfec55be57d33389e1c57d88245 (diff) | |
| parent | 9493d4924a59f14b698389386337a9c07a7ea3c4 (diff) | |
am 9493d492: am 9eb142e3: am a9d49f99: Merge "Revert "Use asynchronous lock/unlock API""
* commit '9493d4924a59f14b698389386337a9c07a7ea3c4':
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 88c45b2d1e..d1ef503f83 100644 --- a/libs/gui/Surface.cpp +++ b/libs/gui/Surface.cpp @@ -764,6 +764,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; @@ -814,9 +823,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); @@ -842,11 +851,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)); |