From 1eb0637f2a17362476a8876b4437f8a0c0783b86 Mon Sep 17 00:00:00 2001 From: keunyoung Date: Fri, 9 Aug 2013 14:32:36 -0700 Subject: fix race condition when a new display is added - When a new display is added, display add event triggers handleDisplayAddedLocked in WindowManagerService asynchronously. - After creating virtual display, application can move on and call addWindow before handleDisplayAddedLock is called. - Application's addWindow leads into creating a new DisplayContent, and a window will be added there. - But when handleDisplayAddedLocked is called later, it will create a new DisplayContent for the display, and the window added by the application will be lost. - This CL tries to fix the issue by checking the presence of DisplayContent before creating a new one. bug: 9975297 Change-Id: I9fac7ffb57c3e1effa8f0e950539cfae73e7e1c6 --- services/java/com/android/server/wm/WindowManagerService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'services/java/com') diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index 07e1e12..8de2fb0 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -10746,7 +10746,7 @@ public class WindowManagerService extends IWindowManager.Stub if (display == null) { throw new IllegalArgumentException("getDisplayContent: display must not be null"); } - newDisplayContentLocked(display); + getDisplayContentLocked(display.getDisplayId()); } /** -- cgit v1.1