Merge "Fix StageCoordinator unexpected onDisplayAreaVanished" am: 7258ba537d am: e102015259

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1906212

Change-Id: I3bb39073516dd8f1a0a6e382687487b3c9f80d7d
This commit is contained in:
Treehugger Robot
2022-02-12 03:24:53 +00:00
committed by Automerger Merge Worker

View File

@@ -65,7 +65,16 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl
@Override @Override
public void binderDied() { public void binderDied() {
synchronized (mGlobalLock) { synchronized (mGlobalLock) {
mOrganizersByFeatureIds.remove(mFeature).destroy(); IDisplayAreaOrganizer featureOrganizer = getOrganizerByFeature(mFeature);
if (featureOrganizer != null) {
IBinder organizerBinder = featureOrganizer.asBinder();
if (!organizerBinder.equals(mOrganizer.asBinder()) &&
organizerBinder.isBinderAlive()) {
Slog.d(TAG, "Dead organizer replaced for feature=" + mFeature);
return;
}
mOrganizersByFeatureIds.remove(mFeature).destroy();
}
} }
} }
} }
@@ -172,7 +181,7 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl
organizer.asBinder(), uid); organizer.asBinder(), uid);
mOrganizersByFeatureIds.entrySet().removeIf((entry) -> { mOrganizersByFeatureIds.entrySet().removeIf((entry) -> {
final boolean matches = entry.getValue().mOrganizer.asBinder() final boolean matches = entry.getValue().mOrganizer.asBinder()
== organizer.asBinder(); .equals(organizer.asBinder());
if (matches) { if (matches) {
entry.getValue().destroy(); entry.getValue().destroy();
} }