diff options
Diffstat (limited to 'libs/hwui/renderthread/TimeLord.cpp')
-rw-r--r-- | libs/hwui/renderthread/TimeLord.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/libs/hwui/renderthread/TimeLord.cpp b/libs/hwui/renderthread/TimeLord.cpp index 784068f1d877..7dc36c449568 100644 --- a/libs/hwui/renderthread/TimeLord.cpp +++ b/libs/hwui/renderthread/TimeLord.cpp @@ -19,9 +19,17 @@ namespace android { namespace uirenderer { namespace renderthread { -TimeLord::TimeLord() : mFrameIntervalNanos(milliseconds_to_nanoseconds(16)), mFrameTimeNanos(0) {} +TimeLord::TimeLord() : mFrameIntervalNanos(milliseconds_to_nanoseconds(16)), + mFrameTimeNanos(0), + mFrameIntendedTimeNanos(0), + mFrameVsyncId(-1) {} + +bool TimeLord::vsyncReceived(nsecs_t vsync, nsecs_t intendedVsync, int64_t vsyncId) { + if (intendedVsync > mFrameIntendedTimeNanos) { + mFrameIntendedTimeNanos = intendedVsync; + mFrameVsyncId = vsyncId; + } -bool TimeLord::vsyncReceived(nsecs_t vsync) { if (vsync > mFrameTimeNanos) { mFrameTimeNanos = vsync; return true; @@ -36,6 +44,8 @@ nsecs_t TimeLord::computeFrameTimeNanos() { if (jitterNanos >= mFrameIntervalNanos) { nsecs_t lastFrameOffset = jitterNanos % mFrameIntervalNanos; mFrameTimeNanos = now - lastFrameOffset; + // mFrameVsyncId is not adjusted here as we still want to send + // the vsync id that started this frame to the Surface Composer } return mFrameTimeNanos; } |