From 330314c6fb7c178c0f0da65d6aa8c9e7d3004568 Mon Sep 17 00:00:00 2001 From: Jeff Brown Date: Fri, 27 Apr 2012 02:20:22 -0700 Subject: [PATCH] Simplify the consume before traversal heuristic. Calling doConsumeBatchedInput() from doTraversals() can result in redundant attempts to consume batched input. Instead of making this call directly, just schedule consume batched input at the same time as traversals are scheduled. This should have the same overall effect. Bug: 6375101 Change-Id: Ie5799e6a68fedbd1978cca6d03852d9a7f1b1f64 --- core/java/android/view/ViewRootImpl.java | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index d4c9aca3f8f3a..afa9b12b605ce 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -947,6 +947,7 @@ public final class ViewRootImpl implements ViewParent, mTraversalBarrier = mHandler.getLooper().postSyncBarrier(); mChoreographer.postCallback( Choreographer.CALLBACK_TRAVERSAL, mTraversalRunnable, null); + scheduleConsumeBatchedInput(); } } @@ -964,9 +965,6 @@ public final class ViewRootImpl implements ViewParent, mTraversalScheduled = false; mHandler.getLooper().removeSyncBarrier(mTraversalBarrier); - doConsumeBatchedInput(false); - doProcessInputEvents(); - if (mProfile) { Debug.startMethodTracing("ViewAncestor"); } @@ -4206,20 +4204,13 @@ public final class ViewRootImpl implements ViewParent, } } - void doConsumeBatchedInput(boolean callback) { + void doConsumeBatchedInput() { if (mConsumeBatchedInputScheduled) { mConsumeBatchedInputScheduled = false; - if (!callback) { - mChoreographer.removeCallbacks(Choreographer.CALLBACK_INPUT, - mConsumedBatchedInputRunnable, null); + if (mInputEventReceiver != null) { + mInputEventReceiver.consumeBatchedInputEvents(); } - } - - // Always consume batched input events even if not scheduled, because there - // might be new input there waiting for us that we have no noticed yet because - // the Looper has not had a chance to run again. - if (mInputEventReceiver != null) { - mInputEventReceiver.consumeBatchedInputEvents(); + doProcessInputEvents(); } } @@ -4257,8 +4248,7 @@ public final class ViewRootImpl implements ViewParent, final class ConsumeBatchedInputRunnable implements Runnable { @Override public void run() { - doConsumeBatchedInput(true); - doProcessInputEvents(); + doConsumeBatchedInput(); } } final ConsumeBatchedInputRunnable mConsumedBatchedInputRunnable =