Revert "Revert "DO NOT MERGE Fix race condition between binder deaths""
This reverts commit 04c6d73fd0.
Bug: 17286687
Change-Id: Ic11d1e35198accb5a05cd419f5a522bc39fc789b
This commit is contained in:
@@ -245,6 +245,15 @@ class AppWindowToken extends WindowToken {
|
||||
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
|
||||
void dump(PrintWriter pw, String prefix) {
|
||||
super.dump(pw, prefix);
|
||||
|
||||
@@ -155,7 +155,7 @@ public class TaskStack {
|
||||
final ArrayList<WindowState> windows = activities.get(activityNdx).allAppWindows;
|
||||
for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) {
|
||||
final WindowStateAnimator winAnimator = windows.get(winNdx).mWinAnimator;
|
||||
if (winAnimator.isAnimating() && !winAnimator.isDummyAnimation()) {
|
||||
if (winAnimator.isAnimating() || winAnimator.mWin.mExiting) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3540,7 +3540,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
return;
|
||||
}
|
||||
final Task oldTask = mTaskIdToTask.get(atoken.groupId);
|
||||
removeAppFromTaskLocked(atoken);
|
||||
oldTask.removeAppToken(atoken);
|
||||
|
||||
atoken.groupId = groupId;
|
||||
Task newTask = mTaskIdToTask.get(groupId);
|
||||
@@ -4562,6 +4562,8 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
}
|
||||
|
||||
void removeAppFromTaskLocked(AppWindowToken wtoken) {
|
||||
wtoken.removeAllWindows();
|
||||
|
||||
final Task task = mTaskIdToTask.get(wtoken.groupId);
|
||||
if (task != null) {
|
||||
if (!task.removeAppToken(wtoken)) {
|
||||
|
||||
Reference in New Issue
Block a user