diff options
| author | 2018-04-13 10:20:46 +0000 | |
|---|---|---|
| committer | 2018-04-13 10:20:46 +0000 | |
| commit | 68f97b10524e1a3dc6e40e63454e0dbde4392795 (patch) | |
| tree | 4391416d36908ee2ccf246fe6852f7e27ed369f3 | |
| parent | 052a61ebbe52b9ef398b5f74f6dc8c2f65671403 (diff) | |
| parent | f15c3be1e8eab73da2dd3b2a7e6215302dae4314 (diff) | |
Merge "Fix transaction phase offsets" into pi-dev
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 2 | ||||
| -rw-r--r-- | services/surfaceflinger/VSyncModulator.h | 11 |
2 files changed, 11 insertions, 2 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 20a6d30c1c..57f729bf0b 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -2166,7 +2166,7 @@ void SurfaceFlinger::handleTransaction(uint32_t transactionFlags) // with mStateLock held to guarantee that mCurrentState won't change // until the transaction is committed. - mVsyncModulator.setTransactionStart(VSyncModulator::TransactionStart::NORMAL); + mVsyncModulator.onTransactionHandled(); transactionFlags = getTransactionFlags(eTransactionMask); handleTransactionLocked(transactionFlags); diff --git a/services/surfaceflinger/VSyncModulator.h b/services/surfaceflinger/VSyncModulator.h index 3126debed4..3e5800e2a2 100644 --- a/services/surfaceflinger/VSyncModulator.h +++ b/services/surfaceflinger/VSyncModulator.h @@ -55,11 +55,20 @@ public: } void setTransactionStart(TransactionStart transactionStart) { - if (transactionStart == mTransactionStart) return; + // An early transaction stays an early transaction. + if (transactionStart == mTransactionStart || mTransactionStart == TransactionStart::EARLY) { + return; + } mTransactionStart = transactionStart; updatePhaseOffsets(); } + void onTransactionHandled() { + if (mTransactionStart == TransactionStart::NORMAL) return; + mTransactionStart = TransactionStart::NORMAL; + updatePhaseOffsets(); + } + void setLastFrameUsedRenderEngine(bool re) { if (re == mLastFrameUsedRenderEngine) return; mLastFrameUsedRenderEngine = re; |