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

Commit b44ef7eb authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Fix memory leak via ZenModeController callbacks.

Bug: 29064258
Change-Id: Ie817ec50206ce23561775fc0ac178754b946f030
parent a31ac7dd
Loading
Loading
Loading
Loading
+22 −10
Original line number Diff line number Diff line
@@ -70,16 +70,6 @@ public class ZenFooter extends LinearLayout {
    }

    public void init(final ZenModeController controller) {
        controller.addCallback(new ZenModeController.Callback() {
            @Override
            public void onZenChanged(int zen) {
                setZen(zen);
            }
            @Override
            public void onConfigChanged(ZenModeConfig config) {
                setConfig(config);
            }
        });
        mEndNowButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
@@ -92,6 +82,18 @@ public class ZenFooter extends LinearLayout {
        update();
    }

    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        mController.addCallback(mZenCallback);
    }

    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        mController.removeCallback(mZenCallback);
    }

    private void setZen(int zen) {
        if (mZen == zen) return;
        mZen = zen;
@@ -143,4 +145,14 @@ public class ZenFooter extends LinearLayout {
        mSpTexts.update();
    }

    private final ZenModeController.Callback mZenCallback = new ZenModeController.Callback() {
        @Override
        public void onZenChanged(int zen) {
            setZen(zen);
        }
        @Override
        public void onConfigChanged(ZenModeConfig config) {
            setConfig(config);
        }
    };
}
+2 −1
Original line number Diff line number Diff line
@@ -231,6 +231,7 @@ public class ZenModePanel extends LinearLayout {
        mAttachedZen = getSelectedZen(-1);
        mSessionZen = mAttachedZen;
        mTransitionHelper.clear();
        mController.addCallback(mZenCallback);
        setSessionExitCondition(copy(mExitCondition));
        updateWidgets();
        setRequestingConditions(!mHidden);
@@ -244,6 +245,7 @@ public class ZenModePanel extends LinearLayout {
        mAttached = false;
        mAttachedZen = -1;
        mSessionZen = -1;
        mController.removeCallback(mZenCallback);
        setSessionExitCondition(null);
        setRequestingConditions(false);
        mTransitionHelper.clear();
@@ -329,7 +331,6 @@ public class ZenModePanel extends LinearLayout {
        handleUpdateManualRule(mController.getManualRule());
        if (DEBUG) Log.d(mTag, "init mExitCondition=" + mExitCondition);
        hideAllConditions();
        mController.addCallback(mZenCallback);
    }

    public void updateLocale() {