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

Commit 554d6d9c authored by Danesh M's avatar Danesh M Committed by Steve Kondik
Browse files

SystemUI : RemoteDisplayTile use executor

The registering/updating causes jank when done on main thread.

Change-Id: I3a07ddeeddf480641a8b1f55684983b24cd693d1
parent 5d69d2cb
Loading
Loading
Loading
Loading
+29 −5
Original line number Original line Diff line number Diff line
@@ -16,6 +16,9 @@


package com.android.systemui.quicksettings;
package com.android.systemui.quicksettings;


import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.media.MediaRouter;
import android.media.MediaRouter;
@@ -32,6 +35,7 @@ public class RemoteDisplayTile extends QuickSettingsTile implements
    private final MediaRouter mMediaRouter;
    private final MediaRouter mMediaRouter;
    private RouteInfo mConnectedRoute;
    private RouteInfo mConnectedRoute;
    private boolean mEnabled;
    private boolean mEnabled;
    private final ExecutorService mExecutor;


    /** Callback for changes to remote display routes. */
    /** Callback for changes to remote display routes. */
    private final MediaRouter.SimpleCallback mRemoteDisplayRouteCallback =
    private final MediaRouter.SimpleCallback mRemoteDisplayRouteCallback =
@@ -69,6 +73,7 @@ public class RemoteDisplayTile extends QuickSettingsTile implements
        };
        };


        mMediaRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
        mMediaRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
        mExecutor = Executors.newSingleThreadExecutor();
    }
    }


    private void updateRemoteDisplays() {
    private void updateRemoteDisplays() {
@@ -88,6 +93,23 @@ public class RemoteDisplayTile extends QuickSettingsTile implements
        updateResources();
        updateResources();
    }
    }


    private final Runnable mRegisterRunnable = new Runnable() {
        @Override
        public void run() {
            mMediaRouter.addCallback(MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY,
                    mRemoteDisplayRouteCallback,
                    MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
            updateRemoteDisplays();
        }
    };

    private final Runnable mUnRegisterRunnable = new Runnable() {
        @Override
        public void run() {
            mMediaRouter.removeCallback(mRemoteDisplayRouteCallback);
        }
    };

    @Override
    @Override
    void onPostCreate() {
    void onPostCreate() {
        mTile.setOnPrepareListener(this);
        mTile.setOnPrepareListener(this);
@@ -97,15 +119,17 @@ public class RemoteDisplayTile extends QuickSettingsTile implements


    @Override
    @Override
    public void onPrepare() {
    public void onPrepare() {
        mMediaRouter.addCallback(MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY,
        mExecutor.submit(mRegisterRunnable);
                mRemoteDisplayRouteCallback,
                MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
        updateRemoteDisplays();
    }
    }


    @Override
    @Override
    public void onUnprepare() {
    public void onUnprepare() {
        mMediaRouter.removeCallback(mRemoteDisplayRouteCallback);
        mExecutor.submit(mUnRegisterRunnable);
    }

    @Override
    public void onDestroy() {
        mExecutor.shutdownNow();
    }
    }


    @Override
    @Override