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

Commit a89eccee authored by Massimo Carli's avatar Massimo Carli
Browse files

Remove possible memory leak on compat ui layer

Before removing a compat ui component we need to release it.
Avoiding this can cause memory leaks.

Fix: 290436141
Test: Run `atest WMShellUnitTests:CompatUIControllerTest`

Change-Id: I32b46cdc2f96065f57948f1a7c780dcadbee8b42
parent 22bc3716
Loading
Loading
Loading
Loading
+5 −9
Original line number Diff line number Diff line
@@ -342,6 +342,7 @@ public class CompatUIController implements OnDisplaysChangedListener,
                if (!mActiveLetterboxEduLayout.updateCompatInfo(taskInfo, taskListener,
                        showOnDisplay(mActiveLetterboxEduLayout.getDisplayId()))) {
                    // The layout is no longer eligible to be shown, clear active layout.
                    mActiveLetterboxEduLayout.release();
                    mActiveLetterboxEduLayout = null;
                }
                return;
@@ -371,15 +372,9 @@ public class CompatUIController implements OnDisplaysChangedListener,
            ShellTaskOrganizer.TaskListener taskListener) {
        return new LetterboxEduWindowManager(context, taskInfo,
                mSyncQueue, taskListener, mDisplayController.getDisplayLayout(taskInfo.displayId),
                mTransitionsLazy.get(), this::onLetterboxEduDismissed, mDockStateReader,
                mCompatUIConfiguration);
    }

    private void onLetterboxEduDismissed(
            Pair<TaskInfo, ShellTaskOrganizer.TaskListener> stateInfo) {
        mActiveLetterboxEduLayout = null;
        // We need to update the UI
        createOrUpdateReachabilityEduLayout(stateInfo.first, stateInfo.second);
                mTransitionsLazy.get(),
                stateInfo -> createOrUpdateReachabilityEduLayout(stateInfo.first, stateInfo.second),
                mDockStateReader, mCompatUIConfiguration);
    }

    private void createOrUpdateRestartDialogLayout(TaskInfo taskInfo,
@@ -448,6 +443,7 @@ public class CompatUIController implements OnDisplaysChangedListener,
                if (!mActiveReachabilityEduLayout.updateCompatInfo(taskInfo, taskListener,
                        showOnDisplay(mActiveReachabilityEduLayout.getDisplayId()))) {
                    // The layout is no longer eligible to be shown, remove from active layouts.
                    mActiveReachabilityEduLayout.release();
                    mActiveReachabilityEduLayout = null;
                }
                return;