diff options
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 7 | ||||
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger_hwc1.cpp | 7 |
2 files changed, 14 insertions, 0 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 466da8cfba..ce63ec290a 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -2165,6 +2165,13 @@ 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)) { + transactionFlags = eTransactionNeeded; + } + if (transactionFlags) { // this triggers the transaction setTransactionFlags(transactionFlags); diff --git a/services/surfaceflinger/SurfaceFlinger_hwc1.cpp b/services/surfaceflinger/SurfaceFlinger_hwc1.cpp index de46dfa0ff..3572acbf35 100644 --- a/services/surfaceflinger/SurfaceFlinger_hwc1.cpp +++ b/services/surfaceflinger/SurfaceFlinger_hwc1.cpp @@ -2181,6 +2181,13 @@ 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)) { + transactionFlags = eTransactionNeeded; + } + if (transactionFlags) { // this triggers the transaction setTransactionFlags(transactionFlags); |