diff options
author | Marissa Wall <marissaw@google.com> | 2020-02-07 09:45:47 -0800 |
---|---|---|
committer | Gaurav Sarode <sgaurav@google.com> | 2020-02-10 21:26:57 +0000 |
commit | 3ca95a0e081f66f0b8b140cb34b688f9b6993fc0 (patch) | |
tree | 3e0ff8590901f114fd941ece148ad00d0d0e9c86 | |
parent | fe62271bc355a6989a3e093bd39afb7b2e249054 (diff) | |
download | android_frameworks_native-3ca95a0e081f66f0b8b140cb34b688f9b6993fc0.tar.gz android_frameworks_native-3ca95a0e081f66f0b8b140cb34b688f9b6993fc0.tar.bz2 android_frameworks_native-3ca95a0e081f66f0b8b140cb34b688f9b6993fc0.zip |
DO NOT MERGE: SF: fix SurfaceFlinger freeze
When BufferQueueLayer errors in onFrameAvailable and
onFrameReplaced, it infinitely loops. This patch adds
a break when we get into the bad state.
Bug: 147476322
Test: verified by vendor that this fixes their bug
and SurfaceFlinger_test
Change-Id: Ida063470edc7e688d106ec9fbac3c81bc5e00189
(cherry picked from commit 6a3e6717cee02a93d8f8f108d38d546bd20b87b1)
-rw-r--r-- | services/surfaceflinger/BufferQueueLayer.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/services/surfaceflinger/BufferQueueLayer.cpp b/services/surfaceflinger/BufferQueueLayer.cpp index f35a4fd49..eb1bf66cd 100644 --- a/services/surfaceflinger/BufferQueueLayer.cpp +++ b/services/surfaceflinger/BufferQueueLayer.cpp @@ -461,6 +461,7 @@ void BufferQueueLayer::onFrameAvailable(const BufferItem& item) { status_t result = mQueueItemCondition.waitRelative(mQueueItemLock, ms2ns(500)); if (result != NO_ERROR) { ALOGE("[%s] Timed out waiting on callback", mName.string()); + break; } } @@ -495,6 +496,7 @@ void BufferQueueLayer::onFrameReplaced(const BufferItem& item) { status_t result = mQueueItemCondition.waitRelative(mQueueItemLock, ms2ns(500)); if (result != NO_ERROR) { ALOGE("[%s] Timed out waiting on callback", mName.string()); + break; } } |