From: Dan Stoza Date: Wed, 2 Nov 2016 23:27:47 +0000 (-0700) Subject: SF: Request SF wakeup for pending transactions X-Git-Tag: android-x86-7.1-r1~44 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=d9d1817e9a2772239bbe2424fa747ec84b6030ff;p=android-x86%2Fframeworks-native.git SF: Request SF wakeup for pending transactions When a Layer receives a pending transaction, it sets a flag on itself that it needs a transaction to be handled, but it doesn't notify SurfaceFlinger to iterate through the layers and check for that flag. In some cases, this led to transactions never being processed, which can hang an application trying to push buffers that are part of a synchronized transaction. This change pokes SurfaceFlinger when setting the Layer flag so that it doesn't slip through the cracks. Bug: 32541494 Bug: 32629397 Test: Two successful monkey runs Change-Id: I4b906eee8004fad1938aa94a1aa0a0c7ea289102 --- diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index dfece935b1..3ffa6554ad 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -1364,6 +1364,7 @@ void Layer::pushPendingState() { // Wake us up to check if the frame has been received setTransactionFlags(eTransactionNeeded); + mFlinger->setTransactionFlags(eTraversalNeeded); } mPendingStates.push_back(mCurrentState); }