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

Commit 92a175ca authored by Adam Powell's avatar Adam Powell Committed by Android Git Automerger
Browse files

am 3cd46244: Merge "Avoid memory leak by only registering callback while...

am 3cd46244: Merge "Avoid memory leak by only registering callback while attached to window." into jb-dev

* commit '3cd46244':
  Avoid memory leak by only registering callback while attached to window.
parents 176a8a8b 3cd46244
Loading
Loading
Loading
Loading
+32 −2
Original line number Diff line number Diff line
@@ -39,6 +39,8 @@ public class MediaRouteButton extends View {
    private final MediaRouteCallback mRouterCallback = new MediaRouteCallback();
    private int mRouteTypes;

    private boolean mAttachedToWindow;

    private Drawable mRemoteIndicator;
    private boolean mRemoteActive;
    private boolean mToggleMode;
@@ -132,13 +134,22 @@ public class MediaRouteButton extends View {
            // Already registered; nothing to do.
            return;
        }
        if (mRouteTypes != 0) {

        if (mAttachedToWindow && mRouteTypes != 0) {
            mRouter.removeCallback(mRouterCallback);
        }

        mRouteTypes = types;

        if (mAttachedToWindow) {
            updateRouteInfo();
            mRouter.addCallback(types, mRouterCallback);
        }
    }

    private void updateRouteInfo() {
        updateRemoteIndicator();
        updateRouteCount();
        mRouter.addCallback(types, mRouterCallback);
    }

    public int getRouteTypes() {
@@ -213,6 +224,25 @@ public class MediaRouteButton extends View {
        }
    }

    @Override
    public void onAttachedToWindow() {
        super.onAttachedToWindow();
        mAttachedToWindow = true;
        if (mRouteTypes != 0) {
            mRouter.addCallback(mRouteTypes, mRouterCallback);
            updateRouteInfo();
        }
    }

    @Override
    public void onDetachedFromWindow() {
        if (mRouteTypes != 0) {
            mRouter.removeCallback(mRouterCallback);
        }
        mAttachedToWindow = false;
        super.onDetachedFromWindow();
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        final int widthSize = MeasureSpec.getSize(widthMeasureSpec);