diff options
author | Jesse Hall <jessehall@google.com> | 2012-06-28 12:52:05 -0700 |
---|---|---|
committer | Jesse Hall <jessehall@google.com> | 2012-06-30 21:38:51 -0700 |
commit | c777b0b3b9b0ea5d8e378fccde6935765e28e329 (patch) | |
tree | 83ef3d6288766dc474bb9a77ebc947b0857865df /libs/gui/SurfaceTextureClient.cpp | |
parent | 02a7be74dd0c4eb47a522cb0f646736cb6d0de01 (diff) | |
download | frameworks_native-c777b0b3b9b0ea5d8e378fccde6935765e28e329.tar.gz frameworks_native-c777b0b3b9b0ea5d8e378fccde6935765e28e329.tar.bz2 frameworks_native-c777b0b3b9b0ea5d8e378fccde6935765e28e329.zip |
Pass fences with buffers from SurfaceTextureClient
Change-Id: I09b49433788d01e8b2b3684bb4d0112be29538d3
Diffstat (limited to 'libs/gui/SurfaceTextureClient.cpp')
-rw-r--r-- | libs/gui/SurfaceTextureClient.cpp | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/libs/gui/SurfaceTextureClient.cpp b/libs/gui/SurfaceTextureClient.cpp index 84f2ff4e9..718fe8441 100644 --- a/libs/gui/SurfaceTextureClient.cpp +++ b/libs/gui/SurfaceTextureClient.cpp @@ -237,7 +237,8 @@ int SurfaceTextureClient::dequeueBuffer(android_native_buffer_t** buffer, return OK; } -int SurfaceTextureClient::cancelBuffer(android_native_buffer_t* buffer, int fenceFd) { +int SurfaceTextureClient::cancelBuffer(android_native_buffer_t* buffer, + int fenceFd) { ATRACE_CALL(); ALOGV("SurfaceTextureClient::cancelBuffer"); Mutex::Autolock lock(mMutex); @@ -245,13 +246,8 @@ int SurfaceTextureClient::cancelBuffer(android_native_buffer_t* buffer, int fenc if (i < 0) { return i; } - sp<Fence> fence(new Fence(fenceFd)); - status_t err = fence->wait(Fence::TIMEOUT_NEVER); - if (err != OK) { - ALOGE("queueBuffer: Fence::wait returned an error: %d", err); - return err; - } - mSurfaceTexture->cancelBuffer(i); + sp<Fence> fence(fenceFd >= 0 ? new Fence(fenceFd) : NULL); + mSurfaceTexture->cancelBuffer(i, fence); return OK; } @@ -291,21 +287,16 @@ int SurfaceTextureClient::queueBuffer(android_native_buffer_t* buffer, int fence return i; } - sp<Fence> fence(new Fence(fenceFd)); - status_t err = fence->wait(Fence::TIMEOUT_NEVER); - if (err != OK) { - ALOGE("queueBuffer: Fence::wait returned an error: %d", err); - return err; - } // Make sure the crop rectangle is entirely inside the buffer. Rect crop; mCrop.intersect(Rect(buffer->width, buffer->height), &crop); + sp<Fence> fence(fenceFd >= 0 ? new Fence(fenceFd) : NULL); ISurfaceTexture::QueueBufferOutput output; ISurfaceTexture::QueueBufferInput input(timestamp, crop, mScalingMode, - mTransform); - err = mSurfaceTexture->queueBuffer(i, input, &output); + mTransform, fence); + status_t err = mSurfaceTexture->queueBuffer(i, input, &output); if (err != OK) { ALOGE("queueBuffer: error queuing buffer to SurfaceTexture, %d", err); } |