diff options
author | 2016-06-17 12:57:12 -0700 | |
---|---|---|
committer | 2016-06-17 20:44:43 +0000 | |
commit | 501ff9acfe9dd656c1fb6d82ec0533c3244fd88b (patch) | |
tree | c71f77127da361e21665c127f6c880c7cc65c4ab | |
parent | 6bc33b07f43b6568be9920905083c20b879a97b1 (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.cpp | 2 | ||||
-rw-r--r-- | libs/hwui/renderthread/TimeLord.cpp | 4 | ||||
-rw-r--r-- | libs/hwui/renderthread/TimeLord.h | 1 |
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: |