summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSungtak Lee <taklee@google.com>2019-05-28 13:38:23 -0700
committerSungtak Lee <taklee@google.com>2019-05-28 16:47:33 -0700
commit45e9e0b133576dbfaf354ada2ab4179e9e4118b8 (patch)
treef74ecfea3cdb18bde5e0adbea9059fda762b38a9
parentb35167c9eb56823dca5a7b707fe903f35c1bb37e (diff)
downloadandroid_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.cpp2
-rw-r--r--libs/gui/include/gui/BufferQueueCore.h3
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