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

Commit 869e0d17 authored by Vadim Caen's avatar Vadim Caen
Browse files

Fix memory leak in MediaProjectionPermissionActivity

As stated in SystemUIDialog#registerDismissListener,
"Don't call dialog.setOnDismissListener() after calling
this because it causes a leak of BroadcastReceiver."

So here we go, using "the version that takes an extra
Runnable as a parameter."

Bug: 434681474
Flag: EXEMPT BUGFIX
Test: Manually and checked the heap dump
Change-Id: Ia3b9d6562b1dd158b14fa4e0c2071ca1fad4e4ff
parent 54951b09
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -350,12 +350,11 @@ public class MediaProjectionPermissionActivity extends Activity {
    }

    private void setUpDialog(AlertDialog dialog) {
        SystemUIDialog.registerDismissListener(dialog);
        SystemUIDialog.registerDismissListener(dialog, this::onDialogDismissedOrCancelled);
        SystemUIDialog.applyFlags(dialog, /* showWhenLocked= */ false);
        SystemUIDialog.setDialogSize(dialog);

        dialog.setOnCancelListener(this::onDialogDismissedOrCancelled);
        dialog.setOnDismissListener(this::onDialogDismissedOrCancelled);
        dialog.create();
        dialog.getButton(DialogInterface.BUTTON_POSITIVE).setFilterTouchesWhenObscured(true);

@@ -479,6 +478,10 @@ public class MediaProjectionPermissionActivity extends Activity {
    }

    private void onDialogDismissedOrCancelled(DialogInterface dialogInterface) {
        onDialogDismissedOrCancelled();
    }

    private void onDialogDismissedOrCancelled() {
        if (!isFinishing()) {
            finish();
        }