summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author John Reck <jreck@google.com> 2016-06-17 12:57:12 -0700
committer John Reck <jreck@google.com> 2016-06-17 20:44:43 +0000
commit501ff9acfe9dd656c1fb6d82ec0533c3244fd88b (patch)
treec71f77127da361e21665c127f6c880c7cc65c4ab
parent6bc33b07f43b6568be9920905083c20b879a97b1 (diff)
Avoid re-calculating vsync mid-frame
Fixes: 29072773 By using computeFrameTime AnimationContext would potentially end up modifying the latest vsync if a very-slow frame was received from the UI thread. This could potentially desync animations that were RT & UI thread 'synchronized', but more significantly it would confuse the swap chain which tries to only draw one frame per vsync causing unneccessary frame drops. Change-Id: Ibd2ec3157ce32fee1eec8d56837c45a35e622895
-rw-r--r--libs/hwui/AnimationContext.cpp2
-rw-r--r--libs/hwui/renderthread/TimeLord.cpp4
-rw-r--r--libs/hwui/renderthread/TimeLord.h1
3 files changed, 1 insertions, 6 deletions
diff --git a/libs/hwui/AnimationContext.cpp b/libs/hwui/AnimationContext.cpp
index 097be08faaad..5759ccd85464 100644
--- a/libs/hwui/AnimationContext.cpp
+++ b/libs/hwui/AnimationContext.cpp
@@ -63,7 +63,7 @@ void AnimationContext::startFrame(TreeInfo::TraversalMode mode) {
mCurrentFrameAnimations.mNextHandle = head;
head->mPreviousHandle = &mCurrentFrameAnimations;
}
- mFrameTimeMs = mClock.computeFrameTimeMs();
+ mFrameTimeMs = ns2ms(mClock.latestVsync());
}
void AnimationContext::runRemainingAnimations(TreeInfo& info) {
diff --git a/libs/hwui/renderthread/TimeLord.cpp b/libs/hwui/renderthread/TimeLord.cpp
index f846d6a44473..6c2575f699bb 100644
--- a/libs/hwui/renderthread/TimeLord.cpp
+++ b/libs/hwui/renderthread/TimeLord.cpp
@@ -43,10 +43,6 @@ nsecs_t TimeLord::computeFrameTimeNanos() {
return mFrameTimeNanos;
}
-nsecs_t TimeLord::computeFrameTimeMs() {
- return nanoseconds_to_milliseconds(computeFrameTimeNanos());
-}
-
} /* namespace renderthread */
} /* namespace uirenderer */
} /* namespace android */
diff --git a/libs/hwui/renderthread/TimeLord.h b/libs/hwui/renderthread/TimeLord.h
index 5464399234fb..68a0f7f971b9 100644
--- a/libs/hwui/renderthread/TimeLord.h
+++ b/libs/hwui/renderthread/TimeLord.h
@@ -34,7 +34,6 @@ public:
// returns true if the vsync is newer, false if it was rejected for staleness
bool vsyncReceived(nsecs_t vsync);
nsecs_t latestVsync() { return mFrameTimeNanos; }
- nsecs_t computeFrameTimeMs();
nsecs_t computeFrameTimeNanos();
private: