From 56cffe5b6a0c4bca1b926d9d80c9298122e4a573 Mon Sep 17 00:00:00 2001 From: John Reck Date: Mon, 3 Feb 2020 16:47:12 -0800 Subject: [PATCH] Adjust present time calculation Adjust the target present time when using render_ahead to better fit in the gaps between vsync pulses. This prevents small clock drifts from causing jank. Bug: 143540628 Test: manual, looked at systrace Change-Id: I26ae6ebf16a3dea48dfd8e1c420d9e5e43e42bcb --- libs/hwui/renderthread/CanvasContext.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index 699b96a685c9f..2b48c35819338 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -429,7 +429,8 @@ void CanvasContext::setPresentTime() { if (renderAhead) { presentTime = mCurrentFrameInfo->get(FrameInfoIndex::Vsync) + - (frameIntervalNanos * (renderAhead + 1)); + (frameIntervalNanos * (renderAhead + 1)) - DeviceInfo::get()->getAppOffset() + + (frameIntervalNanos / 2); } native_window_set_buffers_timestamp(mNativeSurface->getNativeWindow(), presentTime); }