Merge "Fix StageCoordinator unexpected onDisplayAreaVanished"
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user