From 684078890eeafc1ee5cbc7ab558c33b6443a90ba Mon Sep 17 00:00:00 2001 From: Tarandeep Singh Date: Thu, 13 Feb 2020 11:52:43 -0800 Subject: [PATCH] Fix synchronization in updateImeTargetWindow Use lock before accessing Window map and calling DC.updateImeControlTarget(). Change-Id: I363e3a96fc6041df9b25c649de6bda0a70d40857 Fix: 149491593 Bug: 111084606 Test: atest CtsInputMethodTestCases --- .../java/com/android/server/wm/WindowManagerService.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 8f9caea265349..2bb67035f44b0 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -7317,9 +7317,11 @@ public class WindowManagerService extends IWindowManager.Stub Slog.w(TAG_WM, "updateInputMethodTargetWindow: imeToken=" + imeToken + " imeTargetWindowToken=" + imeTargetWindowToken); } - final WindowState imeTarget = mWindowMap.get(imeTargetWindowToken); - if (imeTarget != null) { - imeTarget.getDisplayContent().updateImeControlTarget(imeTarget); + synchronized (mGlobalLock) { + final WindowState imeTarget = mWindowMap.get(imeTargetWindowToken); + if (imeTarget != null) { + imeTarget.getDisplayContent().updateImeControlTarget(imeTarget); + } } }