summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarissa Wall <marissaw@google.com>2020-02-07 09:45:47 -0800
committerGaurav Sarode <sgaurav@google.com>2020-02-10 21:26:57 +0000
commit3ca95a0e081f66f0b8b140cb34b688f9b6993fc0 (patch)
tree3e0ff8590901f114fd941ece148ad00d0d0e9c86
parentfe62271bc355a6989a3e093bd39afb7b2e249054 (diff)
downloadandroid_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.cpp2
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;
}
}