diff options
| author | 2016-06-02 17:14:00 +0000 | |
|---|---|---|
| committer | 2016-06-02 17:14:01 +0000 | |
| commit | eb6377eb133f902e737fab370df7679430a1d8d1 (patch) | |
| tree | d04b3b4ea59c358e4156059174475b0aab16a331 /libs/gui/BufferQueueProducer.cpp | |
| parent | 08588dd76073a8635aa4175d5b98fc5db86afec4 (diff) | |
| parent | 28c65ad1a1bc2cfd232044e9ea704197483cf250 (diff) | |
Merge "BQ: Don't return fences from dequeue in shared buffer mode" into nyc-dev
Diffstat (limited to 'libs/gui/BufferQueueProducer.cpp')
| -rw-r--r-- | libs/gui/BufferQueueProducer.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/libs/gui/BufferQueueProducer.cpp b/libs/gui/BufferQueueProducer.cpp index 3e26e058fb..69a408c075 100644 --- a/libs/gui/BufferQueueProducer.cpp +++ b/libs/gui/BufferQueueProducer.cpp @@ -444,14 +444,6 @@ status_t BufferQueueProducer::dequeueBuffer(int *outSlot, mSlots[found].mBufferState.dequeue(); - // If shared buffer mode has just been enabled, cache the slot of the - // first buffer that is dequeued and mark it as the shared buffer. - if (mCore->mSharedBufferMode && mCore->mSharedBufferSlot == - BufferQueueCore::INVALID_BUFFER_SLOT) { - mCore->mSharedBufferSlot = found; - mSlots[found].mBufferState.mShared = true; - } - if ((buffer == NULL) || buffer->needsReallocation(width, height, format, usage)) { @@ -483,9 +475,21 @@ status_t BufferQueueProducer::dequeueBuffer(int *outSlot, eglDisplay = mSlots[found].mEglDisplay; eglFence = mSlots[found].mEglFence; - *outFence = mSlots[found].mFence; + // Don't return a fence in shared buffer mode, except for the first + // frame. + *outFence = (mCore->mSharedBufferMode && + mCore->mSharedBufferSlot == found) ? + Fence::NO_FENCE : mSlots[found].mFence; mSlots[found].mEglFence = EGL_NO_SYNC_KHR; mSlots[found].mFence = Fence::NO_FENCE; + + // If shared buffer mode has just been enabled, cache the slot of the + // first buffer that is dequeued and mark it as the shared buffer. + if (mCore->mSharedBufferMode && mCore->mSharedBufferSlot == + BufferQueueCore::INVALID_BUFFER_SLOT) { + mCore->mSharedBufferSlot = found; + mSlots[found].mBufferState.mShared = true; + } } // Autolock scope if (returnFlags & BUFFER_NEEDS_REALLOCATION) { |