am f09fda20: am f9d996c1: Fix status bar cast icon not updating

* commit 'f09fda20edae6a126513c658a89eec15361382fa':
  Fix status bar cast icon not updating
This commit is contained in:
Jason Monk
2014-09-22 19:19:55 +00:00
committed by Android Git Automerger

View File

@@ -55,6 +55,7 @@ public class CastControllerImpl implements CastController {
private final Object mProjectionLock = new Object();
private boolean mDiscovering;
private boolean mCallbackRegistered;
private MediaProjectionInfo mProjection;
public CastControllerImpl(Context context) {
@@ -70,6 +71,7 @@ public class CastControllerImpl implements CastController {
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
pw.println("CastController state:");
pw.print(" mDiscovering="); pw.println(mDiscovering);
pw.print(" mCallbackRegistered="); pw.println(mCallbackRegistered);
pw.print(" mCallbacks.size="); pw.println(mCallbacks.size());
pw.print(" mRoutes.size="); pw.println(mRoutes.size());
for (int i = 0; i < mRoutes.size(); i++) {
@@ -83,11 +85,17 @@ public class CastControllerImpl implements CastController {
public void addCallback(Callback callback) {
mCallbacks.add(callback);
fireOnCastDevicesChanged(callback);
synchronized (mDiscoveringLock) {
handleDiscoveryChangeLocked();
}
}
@Override
public void removeCallback(Callback callback) {
mCallbacks.remove(callback);
synchronized (mDiscoveringLock) {
handleDiscoveryChangeLocked();
}
}
@Override
@@ -96,12 +104,23 @@ public class CastControllerImpl implements CastController {
if (mDiscovering == request) return;
mDiscovering = request;
if (DEBUG) Log.d(TAG, "setDiscovering: " + request);
if (request) {
mMediaRouter.addCallback(ROUTE_TYPE_REMOTE_DISPLAY, mMediaCallback,
MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
} else {
mMediaRouter.removeCallback(mMediaCallback);
}
handleDiscoveryChangeLocked();
}
}
private void handleDiscoveryChangeLocked() {
if (mCallbackRegistered) {
mMediaRouter.removeCallback(mMediaCallback);
mCallbackRegistered = false;
}
if (mDiscovering) {
mMediaRouter.addCallback(ROUTE_TYPE_REMOTE_DISPLAY, mMediaCallback,
MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
mCallbackRegistered = true;
} else if (mCallbacks.size() != 0) {
mMediaRouter.addCallback(ROUTE_TYPE_REMOTE_DISPLAY, mMediaCallback,
MediaRouter.CALLBACK_FLAG_PASSIVE_DISCOVERY);
mCallbackRegistered = true;
}
}