diff options
| author | 2017-08-09 16:16:14 +0000 | |
|---|---|---|
| committer | 2017-08-09 16:16:14 +0000 | |
| commit | e89483f1bda1468a8f58fc8bcd8477a7d4cb0c92 (patch) | |
| tree | 55900db1ade339119f0a60f472b05372463e942e | |
| parent | 5b1a00f4af5e4fde764593952a730377e60de4f3 (diff) | |
| parent | 0436b01d1b48c55e59d8ad21187c0e80b7828a9f (diff) | |
Merge "Fix out-of-order transactions (2/2)" into oc-dr1-dev
am: 0436b01d1b
Change-Id: I021a2635b40e74f29e1d94ad4a738f3b043ed5db
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 4623be74da..06e2a7fd35 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -2865,10 +2865,12 @@ void SurfaceFlinger::setTransactionState( } } - // If a synchronous transaction is explicitly requested without any changes, - // force a transaction anyway. This can be used as a flush mechanism for - // previous async transactions. - if (transactionFlags == 0 && (flags & eSynchronous)) { + // If a synchronous transaction is explicitly requested without any changes, force a transaction + // anyway. This can be used as a flush mechanism for previous async transactions. + // Empty animation transaction can be used to simulate back-pressure, so also force a + // transaction for empty animation transactions. + if (transactionFlags == 0 && + ((flags & eSynchronous) || (flags & eAnimation))) { transactionFlags = eTransactionNeeded; } |