From 9dafebb8172d767d640c526d717eaef6a52167f3 Mon Sep 17 00:00:00 2001 From: Svetoslav Date: Tue, 18 Jun 2013 16:29:25 -0700 Subject: Correctly update the source of recurring subtree change accessibility events. Change-Id: I0b0fd9224a5208b274e5c889a27417ef13579849 --- core/java/android/view/ViewRootImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (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 9ec90ef4d186..e62abbe5ec57 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -6442,15 +6442,18 @@ public final class ViewRootImpl implements ViewParent, public void runOrPost(View source) { if (mSource != null) { - mSource = getCommonPredecessor(mSource, source); + // If there is no common predecessor, then mSource points to + // a removed view, hence in this case always prefer the source. + View predecessor = getCommonPredecessor(mSource, source); + mSource = (predecessor != null) ? predecessor : source; return; } mSource = source; final long timeSinceLastMillis = SystemClock.uptimeMillis() - mLastEventTimeMillis; final long minEventIntevalMillis = ViewConfiguration.getSendRecurringAccessibilityEventsInterval(); - mSource.removeCallbacks(this); if (timeSinceLastMillis >= minEventIntevalMillis) { + mSource.removeCallbacks(this); run(); } else { mSource.postDelayed(this, minEventIntevalMillis - timeSinceLastMillis); -- cgit v1.2.3