OSDN Git Service

SF: Apply pending transactions to new sidebands
authorDan Stoza <stoza@google.com>
Tue, 5 May 2015 21:00:52 +0000 (14:00 -0700)
committerDan Stoza <stoza@google.com>
Tue, 5 May 2015 23:05:32 +0000 (16:05 -0700)
When a Layer's sideband stream is set, apply any pending transactions.
Otherwise they would never be applied since sideband streams don't
trigger updates by pushing new buffers.

Bug: 20125898
Change-Id: I0c7a91cdf84e6205801f4ab64eee0b09e4c0b3e0
(cherry picked from commit 3b04e1383eca6cb1d43ebe23a421c427007690c7)

services/surfaceflinger/Layer.cpp

index 9fb94dd..7b104c3 100644 (file)
@@ -1125,6 +1125,10 @@ Region Layer::latchBuffer(bool& recomputeVisibleRegions)
     if (android_atomic_acquire_cas(true, false, &mSidebandStreamChanged) == 0) {
         // mSidebandStreamChanged was true
         mSidebandStream = mSurfaceFlingerConsumer->getSidebandStream();
+        if (mSidebandStream != NULL) {
+            setTransactionFlags(eTransactionNeeded);
+            mFlinger->setTransactionFlags(eTraversalNeeded);
+        }
         recomputeVisibleRegions = true;
 
         const State& s(getDrawingState());