summaryrefslogtreecommitdiffstats
path: root/libs/gui
diff options
context:
space:
mode:
authorGreg Hackmann <ghackmann@google.com>2014-05-12 18:12:34 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-05-12 18:12:34 +0000
commit38c9e1327a5b24267c3dab5293bc9d7ada6e9fc9 (patch)
tree665a1221c69da1a2aed8773c2fb25aab5fab39bc /libs/gui
parent9493d4924a59f14b698389386337a9c07a7ea3c4 (diff)
parentc1ffd351bc44483369271c11dd4c6391bba8c64c (diff)
downloadframeworks_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.cpp18
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));