summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jorim Jaggi <jjaggi@google.com> 2018-06-06 18:42:16 +0200
committer Jorim Jaggi <jjaggi@google.com> 2018-06-07 17:49:01 +0200
commite6a026bdfed45b4085410d1ecd042b1214cedb0a (patch)
tree27c473b83011c586ffa12f638f8487cfb38de23f
parenta76360ddf1f709d71ac9efe55739f071ce843ca5 (diff)
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
-rw-r--r--core/java/android/view/ViewRootImpl.java5
1 files changed, 4 insertions, 1 deletions
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