diff options
author | Dan Stoza <stoza@google.com> | 2015-05-01 16:42:55 -0700 |
---|---|---|
committer | Dan Stoza <stoza@google.com> | 2015-05-01 16:48:35 -0700 |
commit | 24056507af3873431b58fa3859cec77cb24c701e (patch) | |
tree | c84b1a6a68398fd9bad47fe7912486ffb1e4a5d2 /libs | |
parent | dfe7e7e63fa80a8a9050ea47f69a340e2f7e342d (diff) | |
download | frameworks_native-24056507af3873431b58fa3859cec77cb24c701e.zip frameworks_native-24056507af3873431b58fa3859cec77cb24c701e.tar.gz frameworks_native-24056507af3873431b58fa3859cec77cb24c701e.tar.bz2 |
libgui: Clear frame number while freeing slot
Clears the frame number of a slot when it is freed, since it is used
to determine if a released buffer is stale.
Bug: 20445852
Change-Id: I02415e7b25a1eafe7414d6eb1cedf62ac5543cd9
(cherry picked from commit 52937cd9a543fe66696c38ae50ec141aa70ec1e4)
Diffstat (limited to 'libs')
-rw-r--r-- | libs/gui/BufferQueueConsumer.cpp | 4 | ||||
-rw-r--r-- | libs/gui/BufferQueueCore.cpp | 1 |
2 files changed, 4 insertions, 1 deletions
diff --git a/libs/gui/BufferQueueConsumer.cpp b/libs/gui/BufferQueueConsumer.cpp index 2deef0e..336ddb6 100644 --- a/libs/gui/BufferQueueConsumer.cpp +++ b/libs/gui/BufferQueueConsumer.cpp @@ -306,6 +306,8 @@ status_t BufferQueueConsumer::releaseBuffer(int slot, uint64_t frameNumber, if (slot < 0 || slot >= BufferQueueDefs::NUM_BUFFER_SLOTS || releaseFence == NULL) { + BQ_LOGE("releaseBuffer: slot %d out of range or fence %p NULL", slot, + releaseFence.get()); return BAD_VALUE; } @@ -344,7 +346,7 @@ status_t BufferQueueConsumer::releaseBuffer(int slot, uint64_t frameNumber, mSlots[slot].mNeedsCleanupOnRelease = false; return STALE_BUFFER_SLOT; } else { - BQ_LOGV("releaseBuffer: attempted to release buffer slot %d " + BQ_LOGE("releaseBuffer: attempted to release buffer slot %d " "but its state was %d", slot, mSlots[slot].mBufferState); return BAD_VALUE; } diff --git a/libs/gui/BufferQueueCore.cpp b/libs/gui/BufferQueueCore.cpp index d0f7afa..37171ed 100644 --- a/libs/gui/BufferQueueCore.cpp +++ b/libs/gui/BufferQueueCore.cpp @@ -214,6 +214,7 @@ void BufferQueueCore::freeBufferLocked(int slot) { } mSlots[slot].mBufferState = BufferSlot::FREE; mSlots[slot].mAcquireCalled = false; + mSlots[slot].mFrameNumber = 0; // Destroy fence as BufferQueue now takes ownership if (mSlots[slot].mEglFence != EGL_NO_SYNC_KHR) { |