Loading include/gui/ConsumerBase.h +3 −2 Original line number Diff line number Diff line Loading @@ -150,16 +150,17 @@ protected: // Derived classes should override this method to perform any cleanup that // must take place when a buffer is released back to the BufferQueue. If // it is overridden the derived class's implementation must call // ConsumerBase::acquireBufferLocked. // ConsumerBase::releaseBufferLocked. virtual status_t releaseBufferLocked(int buf, EGLDisplay display, EGLSyncKHR eglFence); // addReleaseFence adds the sync points associated with a fence to the set // addReleaseFence* adds the sync points associated with a fence to the set // of sync points that must be reached before the buffer in the given slot // may be used after the slot has been released. This should be called by // derived classes each time some asynchronous work is kicked off that // references the buffer. status_t addReleaseFence(int slot, const sp<Fence>& fence); status_t addReleaseFenceLocked(int slot, const sp<Fence>& fence); // Slot contains the information and object references that // ConsumerBase maintains about a BufferQueue buffer slot. Loading libs/gui/BufferItemConsumer.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -82,7 +82,7 @@ status_t BufferItemConsumer::releaseBuffer(const BufferItem &item, Mutex::Autolock _l(mMutex); err = addReleaseFence(item.mBuf, releaseFence); err = addReleaseFenceLocked(item.mBuf, releaseFence); err = releaseBufferLocked(item.mBuf, EGL_NO_DISPLAY, EGL_NO_SYNC_KHR); Loading libs/gui/ConsumerBase.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -193,7 +193,12 @@ status_t ConsumerBase::acquireBufferLocked(BufferQueue::BufferItem *item) { } status_t ConsumerBase::addReleaseFence(int slot, const sp<Fence>& fence) { CB_LOGV("addReleaseFence: slot=%d", slot); Mutex::Autolock lock(mMutex); return addReleaseFenceLocked(slot, fence); } status_t ConsumerBase::addReleaseFenceLocked(int slot, const sp<Fence>& fence) { CB_LOGV("addReleaseFenceLocked: slot=%d", slot); if (!mSlots[slot].mFence.get()) { mSlots[slot].mFence = fence; Loading libs/gui/SurfaceTexture.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -484,7 +484,7 @@ status_t SurfaceTexture::syncForReleaseLocked(EGLDisplay dpy) { return UNKNOWN_ERROR; } sp<Fence> fence(new Fence(fenceFd)); status_t err = addReleaseFence(mCurrentTexture, fence); status_t err = addReleaseFenceLocked(mCurrentTexture, fence); if (err != OK) { ST_LOGE("syncForReleaseLocked: error adding release fence: " "%s (%d)", strerror(-err), err); Loading Loading
include/gui/ConsumerBase.h +3 −2 Original line number Diff line number Diff line Loading @@ -150,16 +150,17 @@ protected: // Derived classes should override this method to perform any cleanup that // must take place when a buffer is released back to the BufferQueue. If // it is overridden the derived class's implementation must call // ConsumerBase::acquireBufferLocked. // ConsumerBase::releaseBufferLocked. virtual status_t releaseBufferLocked(int buf, EGLDisplay display, EGLSyncKHR eglFence); // addReleaseFence adds the sync points associated with a fence to the set // addReleaseFence* adds the sync points associated with a fence to the set // of sync points that must be reached before the buffer in the given slot // may be used after the slot has been released. This should be called by // derived classes each time some asynchronous work is kicked off that // references the buffer. status_t addReleaseFence(int slot, const sp<Fence>& fence); status_t addReleaseFenceLocked(int slot, const sp<Fence>& fence); // Slot contains the information and object references that // ConsumerBase maintains about a BufferQueue buffer slot. Loading
libs/gui/BufferItemConsumer.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -82,7 +82,7 @@ status_t BufferItemConsumer::releaseBuffer(const BufferItem &item, Mutex::Autolock _l(mMutex); err = addReleaseFence(item.mBuf, releaseFence); err = addReleaseFenceLocked(item.mBuf, releaseFence); err = releaseBufferLocked(item.mBuf, EGL_NO_DISPLAY, EGL_NO_SYNC_KHR); Loading
libs/gui/ConsumerBase.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -193,7 +193,12 @@ status_t ConsumerBase::acquireBufferLocked(BufferQueue::BufferItem *item) { } status_t ConsumerBase::addReleaseFence(int slot, const sp<Fence>& fence) { CB_LOGV("addReleaseFence: slot=%d", slot); Mutex::Autolock lock(mMutex); return addReleaseFenceLocked(slot, fence); } status_t ConsumerBase::addReleaseFenceLocked(int slot, const sp<Fence>& fence) { CB_LOGV("addReleaseFenceLocked: slot=%d", slot); if (!mSlots[slot].mFence.get()) { mSlots[slot].mFence = fence; Loading
libs/gui/SurfaceTexture.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -484,7 +484,7 @@ status_t SurfaceTexture::syncForReleaseLocked(EGLDisplay dpy) { return UNKNOWN_ERROR; } sp<Fence> fence(new Fence(fenceFd)); status_t err = addReleaseFence(mCurrentTexture, fence); status_t err = addReleaseFenceLocked(mCurrentTexture, fence); if (err != OK) { ST_LOGE("syncForReleaseLocked: error adding release fence: " "%s (%d)", strerror(-err), err); Loading