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

Commit 96f08b62 authored by Charles Chen's avatar Charles Chen
Browse files

Avoid nav bar leakage when remove display

Currently, we remove FragmentHostState when view detached from window.
However, there's a case that a display is removed but view has not been
yet removed from window.
Remove FragmentHostState when display is detached.

Test: manual - reproduce issue
Fixes: 144129761
Change-Id: I93594b2ba035acc514aa4c6eaacce3f79c9fa0b6
parent 819d8b77
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import com.android.internal.statusbar.RegisterStatusBarResult;
import com.android.systemui.Dependency;
import com.android.systemui.assist.AssistHandleViewController;
import com.android.systemui.dagger.qualifiers.MainHandler;
import com.android.systemui.fragments.FragmentHostManager;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.statusbar.CommandQueue.Callbacks;
import com.android.systemui.statusbar.phone.AutoHideController;
@@ -168,6 +169,9 @@ public class NavigationBarController implements Callbacks {
            View navigationWindow = navBar.getView().getRootView();
            WindowManagerGlobal.getInstance()
                    .removeView(navigationWindow, true /* immediate */);
            // Also remove FragmentHostState here in case that onViewDetachedFromWindow has not yet
            // invoked after display removal.
            FragmentHostManager.removeAndDestroy(navigationWindow);
            mNavigationBars.remove(displayId);
        }
    }