diff options
author | 2012-06-22 19:58:47 -0700 | |
---|---|---|
committer | 2012-06-22 19:58:47 -0700 | |
commit | b7c839b1103f72f8eb89fc0e19f7805969fc622f (patch) | |
tree | 075c491472c6584c30920dbb26f8c97811e2f882 /libs/gui/SurfaceTextureClient.cpp | |
parent | a277b7a4d7fa162d2d88f4701d44cedbe6dbfc56 (diff) | |
parent | f78575400977f644cf0b12beb2fa5fc278b6ed4c (diff) |
Merge "Pass fences from BufferQueue to SurfaceTextureClient"
Diffstat (limited to 'libs/gui/SurfaceTextureClient.cpp')
-rw-r--r-- | libs/gui/SurfaceTextureClient.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libs/gui/SurfaceTextureClient.cpp b/libs/gui/SurfaceTextureClient.cpp index 8195de972e..57bc604f14 100644 --- a/libs/gui/SurfaceTextureClient.cpp +++ b/libs/gui/SurfaceTextureClient.cpp @@ -198,7 +198,8 @@ int SurfaceTextureClient::dequeueBuffer(android_native_buffer_t** buffer, int buf = -1; int reqW = mReqWidth ? mReqWidth : mUserWidth; int reqH = mReqHeight ? mReqHeight : mUserHeight; - status_t result = mSurfaceTexture->dequeueBuffer(&buf, reqW, reqH, + sp<Fence> fence; + status_t result = mSurfaceTexture->dequeueBuffer(&buf, fence, reqW, reqH, mReqFormat, mReqUsage); if (result < 0) { ALOGV("dequeueBuffer: ISurfaceTexture::dequeueBuffer(%d, %d, %d, %d)" @@ -219,6 +220,15 @@ int SurfaceTextureClient::dequeueBuffer(android_native_buffer_t** buffer, return result; } } + + if (fence.get()) { + status_t err = fence->wait(Fence::TIMEOUT_NEVER); + if (err != OK) { + ALOGE("dequeueBuffer: error waiting for fence: %d", err); + } + fence.clear(); + } + *buffer = gbuf.get(); *fenceFd = -1; return OK; |