From c5cd20733795a0fe1f1ba228ec099c4c7e6dbaa7 Mon Sep 17 00:00:00 2001 From: Jammy Yu Date: Wed, 22 Feb 2017 16:41:38 -0800 Subject: Fix error BufferQueue attaching flow. Fix error BufferQueue attaching flow. Because BufferQueue attaching buffer flow doesn't set mNeedsReallocation to false, it will case Surface client to request buffer for attached buffer to cause unsync buffer states with ACodec. So, for attaching buffer by Producer, we need to set mNeedsReallocation to false in BufferQueue. And Surface client will not request buffer again for attached buffer to cause some missing frames. Bug: 38238747 Issue: 34897483 Test: GTS Change-Id: I25f9fff4b5d1f7052ab3be612cf34879fd17c27c --- libs/gui/BufferQueueProducer.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'libs/gui/BufferQueueProducer.cpp') diff --git a/libs/gui/BufferQueueProducer.cpp b/libs/gui/BufferQueueProducer.cpp index 8159aefc08..6a5593cc1c 100644 --- a/libs/gui/BufferQueueProducer.cpp +++ b/libs/gui/BufferQueueProducer.cpp @@ -732,6 +732,7 @@ status_t BufferQueueProducer::attachBuffer(int* outSlot, mSlots[*outSlot].mFence = Fence::NO_FENCE; mSlots[*outSlot].mRequestBufferCalled = true; mSlots[*outSlot].mAcquireCalled = false; + mSlots[*outSlot].mNeedsReallocation = false; mCore->mActiveBuffers.insert(found); VALIDATE_CONSISTENCY(); -- cgit v1.2.3-59-g8ed1b