From 42ba68ce0fa6a6d37d54f68c6f88b4d36c47db8c Mon Sep 17 00:00:00 2001 From: Louis Chang Date: Tue, 13 Oct 2020 13:22:42 +0800 Subject: [PATCH] Remove activity from stopping list when removed from display Organized tasks and its children were removed when systemui died. And the activities should no longer waiting to be stopped. Also prevent NPE if the transaction is applied to a unknown WC. Bug: 170451499 Test: presubmit tests Change-Id: I2fcef2ffc8c962c0dac3b56cdbea4f17e071152d --- services/core/java/com/android/server/wm/ActivityRecord.java | 1 + .../java/com/android/server/wm/WindowOrganizerController.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 9868fc1657e23..8f2e60ec1f080 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -3222,6 +3222,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A getDisplayContent().mUnknownAppVisibilityController.appRemovedOrHidden(this); mWmService.mTaskSnapshotController.onAppRemoved(this); mStackSupervisor.getActivityMetricsLogger().notifyActivityRemoved(this); + mStackSupervisor.mStoppingActivities.remove(this); waitingToShow = false; // TODO(b/169035022): move to a more-appropriate place. diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java index 0b200e2bd6d28..6a5784435ad66 100644 --- a/services/core/java/com/android/server/wm/WindowOrganizerController.java +++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java @@ -207,7 +207,7 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub final Map.Entry entry = entries.next(); final WindowContainer wc = WindowContainer.fromBinder(entry.getKey()); - if (!wc.isAttached()) { + if (wc == null || !wc.isAttached()) { Slog.e(TAG, "Attempt to operate on detached container: " + wc); continue; }