summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jorim Jaggi <jjaggi@google.com> 2018-04-13 10:20:46 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-04-13 10:20:46 +0000
commit68f97b10524e1a3dc6e40e63454e0dbde4392795 (patch)
tree4391416d36908ee2ccf246fe6852f7e27ed369f3
parent052a61ebbe52b9ef398b5f74f6dc8c2f65671403 (diff)
parentf15c3be1e8eab73da2dd3b2a7e6215302dae4314 (diff)
Merge "Fix transaction phase offsets" into pi-dev
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp2
-rw-r--r--services/surfaceflinger/VSyncModulator.h11
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;