diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index c1a5a3a256806..6ffe4d398c460 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -846,6 +846,8 @@ public final class ViewRootImpl implements ViewParent, private int mLastTransformHint = Integer.MIN_VALUE; + private AccessibilityWindowAttributes mAccessibilityWindowAttributes; + /** * A temporary object used so relayoutWindow can return the latest SyncSeqId * system. The SyncSeqId system was designed to work without synchronous relayout @@ -1397,8 +1399,12 @@ public final class ViewRootImpl implements ViewParent, if (registered) { final AccessibilityWindowAttributes attributes = new AccessibilityWindowAttributes( mWindowAttributes); - mAccessibilityManager.setAccessibilityWindowAttributes(getDisplayId(), - mAttachInfo.mAccessibilityWindowId, attributes); + if (!attributes.equals(mAccessibilityWindowAttributes)) { + mAccessibilityWindowAttributes = attributes; + mAccessibilityManager.setAccessibilityWindowAttributes(getDisplayId(), + mAttachInfo.mAccessibilityWindowId, attributes); + } + } } @@ -10345,6 +10351,7 @@ public final class ViewRootImpl implements ViewParent, != AccessibilityWindowInfo.UNDEFINED_WINDOW_ID; if (registered) { mAttachInfo.mAccessibilityWindowId = AccessibilityWindowInfo.UNDEFINED_WINDOW_ID; + mAccessibilityWindowAttributes = null; mAccessibilityManager.removeAccessibilityInteractionConnection(mWindow); } } diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java index 676bde7ed00f2..d33e7b2e4d873 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java @@ -146,11 +146,8 @@ public class AccessibilityWindowManager { if (getWindowTokenForUserAndWindowIdLocked(resolvedUserId, windowId) == null) { return; } - final AccessibilityWindowAttributes currentAttrs = mWindowAttributes.get(windowId); - if (currentAttrs == null || !currentAttrs.equals(attributes)) { - mWindowAttributes.put(windowId, attributes); - shouldComputeWindows = findWindowInfoByIdLocked(windowId) != null; - } + mWindowAttributes.put(windowId, attributes); + shouldComputeWindows = findWindowInfoByIdLocked(windowId) != null; } if (shouldComputeWindows) { mWindowManagerInternal.computeWindowsForAccessibility(displayId);