diff options
author | Sungtak Lee <taklee@google.com> | 2019-05-28 13:38:23 -0700 |
---|---|---|
committer | Sungtak Lee <taklee@google.com> | 2019-05-28 16:47:33 -0700 |
commit | 45e9e0b133576dbfaf354ada2ab4179e9e4118b8 (patch) | |
tree | f74ecfea3cdb18bde5e0adbea9059fda762b38a9 | |
parent | b35167c9eb56823dca5a7b707fe903f35c1bb37e (diff) | |
download | android_frameworks_native-45e9e0b133576dbfaf354ada2ab4179e9e4118b8.tar.gz android_frameworks_native-45e9e0b133576dbfaf354ada2ab4179e9e4118b8.tar.bz2 android_frameworks_native-45e9e0b133576dbfaf354ada2ab4179e9e4118b8.zip |
Drop buffers for SurfaceFlinger properly
Drop buffers restrictively when consumer is SurfaceFlinger. When both
producer and consumer are controlled by app and timeout is not positive,
drop buffers for SurfaceFlinger.
Bug: 133214906
Change-Id: Ied102857673cbf36e51aac6abeea9abffbdcce67
-rw-r--r-- | libs/gui/BufferQueueProducer.cpp | 2 | ||||
-rw-r--r-- | libs/gui/include/gui/BufferQueueCore.h | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/libs/gui/BufferQueueProducer.cpp b/libs/gui/BufferQueueProducer.cpp index c20c2f3dc..9c311a314 100644 --- a/libs/gui/BufferQueueProducer.cpp +++ b/libs/gui/BufferQueueProducer.cpp @@ -886,7 +886,7 @@ status_t BufferQueueProducer::queueBuffer(int slot, item.mFence = acquireFence; item.mFenceTime = acquireFenceTime; item.mIsDroppable = mCore->mAsyncMode || - (!mCore->mLegacyBufferDrop && mConsumerIsSurfaceFlinger) || + (mConsumerIsSurfaceFlinger && mCore->mQueueBufferCanDrop) || (mCore->mLegacyBufferDrop && mCore->mQueueBufferCanDrop) || (mCore->mSharedBufferMode && mCore->mSharedBufferSlot == slot); item.mSurfaceDamage = surfaceDamage; diff --git a/libs/gui/include/gui/BufferQueueCore.h b/libs/gui/include/gui/BufferQueueCore.h index 9c0ee99b5..690a85f39 100644 --- a/libs/gui/include/gui/BufferQueueCore.h +++ b/libs/gui/include/gui/BufferQueueCore.h @@ -233,7 +233,8 @@ private: // mLegacyBufferDrop indicates whether mQueueBufferCanDrop is in effect. // If this flag is set mQueueBufferCanDrop is working as explained. If not - // queueBuffer will not drop buffers unless consumer is SurfaceFlinger. + // queueBuffer will not drop buffers unless consumer is SurfaceFlinger and + // mQueueBufferCanDrop is set. bool mLegacyBufferDrop; // mDefaultBufferFormat can be set so it will override the buffer format |