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/BufferQueue.cpp | |
| parent | a277b7a4d7fa162d2d88f4701d44cedbe6dbfc56 (diff) | |
| parent | f78575400977f644cf0b12beb2fa5fc278b6ed4c (diff) | |
Merge "Pass fences from BufferQueue to SurfaceTextureClient"
Diffstat (limited to 'libs/gui/BufferQueue.cpp')
| -rw-r--r-- | libs/gui/BufferQueue.cpp | 17 | 
1 files changed, 3 insertions, 14 deletions
diff --git a/libs/gui/BufferQueue.cpp b/libs/gui/BufferQueue.cpp index 23ac882120..40e43a18d1 100644 --- a/libs/gui/BufferQueue.cpp +++ b/libs/gui/BufferQueue.cpp @@ -294,8 +294,8 @@ status_t BufferQueue::requestBuffer(int slot, sp<GraphicBuffer>* buf) {      return NO_ERROR;  } -status_t BufferQueue::dequeueBuffer(int *outBuf, uint32_t w, uint32_t h, -        uint32_t format, uint32_t usage) { +status_t BufferQueue::dequeueBuffer(int *outBuf, sp<Fence>& outFence, +        uint32_t w, uint32_t h, uint32_t format, uint32_t usage) {      ATRACE_CALL();      ST_LOGV("dequeueBuffer: w=%d h=%d fmt=%#x usage=%#x", w, h, format, usage); @@ -307,7 +307,6 @@ status_t BufferQueue::dequeueBuffer(int *outBuf, uint32_t w, uint32_t h,      status_t returnFlags(OK);      EGLDisplay dpy = EGL_NO_DISPLAY;      EGLSyncKHR fence = EGL_NO_SYNC_KHR; -    sp<Fence> releaseFence;      { // Scope for the lock          Mutex::Autolock lock(mMutex); @@ -490,7 +489,7 @@ status_t BufferQueue::dequeueBuffer(int *outBuf, uint32_t w, uint32_t h,          dpy = mSlots[buf].mEglDisplay;          fence = mSlots[buf].mFence; -        releaseFence = mSlots[buf].mReleaseFence; +        outFence = mSlots[buf].mReleaseFence;          mSlots[buf].mFence = EGL_NO_SYNC_KHR;          mSlots[buf].mReleaseFence.clear();      }  // end lock scope @@ -508,16 +507,6 @@ status_t BufferQueue::dequeueBuffer(int *outBuf, uint32_t w, uint32_t h,          eglDestroySyncKHR(dpy, fence);      } -    if (releaseFence.get()) { -        int err = releaseFence->wait(1000); -        if (err == -ETIME) { -            ALOGE("dequeueBuffer: timeout waiting for release fence"); -        } else if (err != NO_ERROR) { -            ALOGE("dequeueBuffer: error waiting for sync fence: %d", err); -        } -        releaseFence.clear(); -    } -      ST_LOGV("dequeueBuffer: returning slot=%d buf=%p flags=%#x", *outBuf,              mSlots[*outBuf].mGraphicBuffer->handle, returnFlags);  |