diff options
author | Greg Hackmann <ghackmann@google.com> | 2014-05-12 18:12:34 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-05-12 18:12:34 +0000 |
commit | 38c9e1327a5b24267c3dab5293bc9d7ada6e9fc9 (patch) | |
tree | 665a1221c69da1a2aed8773c2fb25aab5fab39bc /libs/gui | |
parent | 9493d4924a59f14b698389386337a9c07a7ea3c4 (diff) | |
parent | c1ffd351bc44483369271c11dd4c6391bba8c64c (diff) | |
download | frameworks_native-38c9e1327a5b24267c3dab5293bc9d7ada6e9fc9.zip frameworks_native-38c9e1327a5b24267c3dab5293bc9d7ada6e9fc9.tar.gz frameworks_native-38c9e1327a5b24267c3dab5293bc9d7ada6e9fc9.tar.bz2 |
am c1ffd351: am bd20e551: Merge "Use asynchronous lock/unlock API"
* commit 'c1ffd351bc44483369271c11dd4c6391bba8c64c':
Use asynchronous lock/unlock API
Diffstat (limited to 'libs/gui')
-rw-r--r-- | libs/gui/Surface.cpp | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp index 27dbc4e..21ffc06 100644 --- a/libs/gui/Surface.cpp +++ b/libs/gui/Surface.cpp @@ -740,15 +740,6 @@ 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; @@ -799,9 +790,9 @@ status_t Surface::lock( } void* vaddr; - status_t res = backBuffer->lock( + status_t res = backBuffer->lockAsync( GRALLOC_USAGE_SW_READ_OFTEN | GRALLOC_USAGE_SW_WRITE_OFTEN, - newDirtyRegion.bounds(), &vaddr); + newDirtyRegion.bounds(), &vaddr, fenceFd); ALOGW_IF(res, "failed locking buffer (handle = %p)", backBuffer->handle); @@ -827,10 +818,11 @@ status_t Surface::unlockAndPost() return INVALID_OPERATION; } - status_t err = mLockedBuffer->unlock(); + int fd = -1; + status_t err = mLockedBuffer->unlockAsync(&fd); ALOGE_IF(err, "failed unlocking buffer (%p)", mLockedBuffer->handle); - err = queueBuffer(mLockedBuffer.get(), -1); + err = queueBuffer(mLockedBuffer.get(), fd); ALOGE_IF(err, "queueBuffer (handle=%p) failed (%s)", mLockedBuffer->handle, strerror(-err)); |