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

Commit 75481cc0 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix StageCoordinator unexpected onDisplayAreaVanished" am: 7258ba53...

Merge "Fix StageCoordinator unexpected onDisplayAreaVanished" am: 7258ba53 am: e1020152 am: 42ace7b2

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

Change-Id: Ib1555b1e6530dd01116788397ed3edd5626aaf85
parents b3951122 42ace7b2
Loading
Loading
Loading
Loading
+11 −2
Original line number Original line Diff line number Diff line
@@ -65,10 +65,19 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl
        @Override
        @Override
        public void binderDied() {
        public void binderDied() {
            synchronized (mGlobalLock) {
            synchronized (mGlobalLock) {
                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();
                    mOrganizersByFeatureIds.remove(mFeature).destroy();
                }
                }
            }
            }
        }
        }
    }


    private class DisplayAreaOrganizerState {
    private class DisplayAreaOrganizerState {
        private final IDisplayAreaOrganizer mOrganizer;
        private final IDisplayAreaOrganizer mOrganizer;
@@ -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();
                    }
                    }