Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1eb0637f authored by keunyoung's avatar keunyoung
Browse files

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
parent 1232c51e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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());
    }

    /**