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

Commit a3dabf0f authored by Craig Mautner's avatar Craig Mautner Committed by Android (Google) Code Review
Browse files

Merge "Fix race condition between binder deaths" into lmp-dev

parents f4669dff 7c9ee19c
Loading
Loading
Loading
Loading
+9 −0
Original line number Original line Diff line number Diff line
@@ -252,6 +252,15 @@ class AppWindowToken extends WindowToken {
        return false;
        return false;
    }
    }


    void removeAllWindows() {
        for (int winNdx = allAppWindows.size() - 1; winNdx >= 0; --winNdx) {
            WindowState win = allAppWindows.get(winNdx);
            if (WindowManagerService.DEBUG_WINDOW_MOVEMENT) Slog.w(WindowManagerService.TAG,
                    "removeAllWindows: removing win=" + win);
            win.mService.removeWindowLocked(win.mSession, win);
        }
    }

    @Override
    @Override
    void dump(PrintWriter pw, String prefix) {
    void dump(PrintWriter pw, String prefix) {
        super.dump(pw, prefix);
        super.dump(pw, prefix);
+1 −1
Original line number Original line Diff line number Diff line
@@ -155,7 +155,7 @@ public class TaskStack {
                final ArrayList<WindowState> windows = activities.get(activityNdx).allAppWindows;
                final ArrayList<WindowState> windows = activities.get(activityNdx).allAppWindows;
                for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) {
                for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) {
                    final WindowStateAnimator winAnimator = windows.get(winNdx).mWinAnimator;
                    final WindowStateAnimator winAnimator = windows.get(winNdx).mWinAnimator;
                    if (winAnimator.isAnimating() && !winAnimator.isDummyAnimation()) {
                    if (winAnimator.isAnimating() || winAnimator.mWin.mExiting) {
                        return true;
                        return true;
                    }
                    }
                }
                }
+3 −1
Original line number Original line Diff line number Diff line
@@ -3592,7 +3592,7 @@ public class WindowManagerService extends IWindowManager.Stub
                return;
                return;
            }
            }
            final Task oldTask = mTaskIdToTask.get(atoken.groupId);
            final Task oldTask = mTaskIdToTask.get(atoken.groupId);
            removeAppFromTaskLocked(atoken);
            oldTask.removeAppToken(atoken);


            atoken.groupId = groupId;
            atoken.groupId = groupId;
            Task newTask = mTaskIdToTask.get(groupId);
            Task newTask = mTaskIdToTask.get(groupId);
@@ -4634,6 +4634,8 @@ public class WindowManagerService extends IWindowManager.Stub
    }
    }


    void removeAppFromTaskLocked(AppWindowToken wtoken) {
    void removeAppFromTaskLocked(AppWindowToken wtoken) {
        wtoken.removeAllWindows();

        final Task task = mTaskIdToTask.get(wtoken.groupId);
        final Task task = mTaskIdToTask.get(wtoken.groupId);
        if (task != null) {
        if (task != null) {
            if (!task.removeAppToken(wtoken)) {
            if (!task.removeAppToken(wtoken)) {