From e6a026bdfed45b4085410d1ecd042b1214cedb0a Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Wed, 6 Jun 2018 18:42:16 +0200 Subject: Move nulling of nextFrameCallback If draw() invokes postDraw that sets the next callback, the callback will never be invoked. Test: Long-swipe-up from navigation bar Change-Id: If2e4dfff8a845b73fa77426305d5ece1921857e5 Fixes: 109701914 --- core/java/android/view/ViewRootImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'core/java/android/view/ViewRootImpl.java') diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 0506f30d04b8..b2e53ed78e68 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -3305,8 +3305,11 @@ public final class ViewRootImpl implements ViewParent, } useAsyncReport = true; - mAttachInfo.mThreadedRenderer.draw(mView, mAttachInfo, this, mNextRtFrameCallback); + + // draw(...) might invoke post-draw, which might register the next callback already. + final FrameDrawingCallback callback = mNextRtFrameCallback; mNextRtFrameCallback = null; + mAttachInfo.mThreadedRenderer.draw(mView, mAttachInfo, this, callback); } else { // If we get here with a disabled & requested hardware renderer, something went // wrong (an invalidate posted right before we destroyed the hardware surface -- cgit v1.2.3