summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--media/java/android/media/MediaRouter2.java29
-rw-r--r--services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java2
-rw-r--r--services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java9
3 files changed, 25 insertions, 15 deletions
diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java
index c664d3d68b62..ffd6e161d928 100644
--- a/media/java/android/media/MediaRouter2.java
+++ b/media/java/android/media/MediaRouter2.java
@@ -545,16 +545,17 @@ public final class MediaRouter2 {
? SCANNING_STATE_SCANNING_FULL
: SCANNING_STATE_WHILE_INTERACTIVE);
- if (scanRequest.isScreenOffScan()) {
- mScreenOffScanRequestCount++;
- } else {
- mScreenOnScanRequestCount++;
- }
} catch (RemoteException ex) {
throw ex.rethrowFromSystemServer();
}
}
+ if (scanRequest.isScreenOffScan()) {
+ mScreenOffScanRequestCount++;
+ } else {
+ mScreenOnScanRequestCount++;
+ }
+
mScanRequestsMap.put(token.mId, scanRequest);
return token;
}
@@ -580,27 +581,29 @@ public final class MediaRouter2 {
}
boolean shouldUpdate =
- mScreenOffScanRequestCount == 1
- && (request.isScreenOffScan() || mScreenOnScanRequestCount == 1);
+ request.isScreenOffScan()
+ ? mScreenOffScanRequestCount == 1
+ : mScreenOnScanRequestCount == 1 && mScreenOffScanRequestCount == 0;
if (shouldUpdate) {
try {
- if (request.isScreenOffScan() && mScreenOnScanRequestCount == 0) {
+ if (!request.isScreenOffScan() || mScreenOnScanRequestCount == 0) {
mImpl.updateScanningState(SCANNING_STATE_NOT_SCANNING);
} else {
mImpl.updateScanningState(SCANNING_STATE_WHILE_INTERACTIVE);
}
- if (request.isScreenOffScan()) {
- mScreenOffScanRequestCount--;
- } else {
- mScreenOnScanRequestCount--;
- }
} catch (RemoteException ex) {
ex.rethrowFromSystemServer();
}
}
+ if (request.isScreenOffScan()) {
+ mScreenOffScanRequestCount--;
+ } else {
+ mScreenOnScanRequestCount--;
+ }
+
mScanRequestsMap.remove(token.mId);
}
}
diff --git a/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java b/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java
index db83d4b76778..a7fd750e4037 100644
--- a/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java
+++ b/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java
@@ -233,7 +233,7 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
return false;
}
boolean bindDueToManagerScan =
- mIsManagerScanning && Flags.enablePreventionOfManagerScansWhenNoAppsScan();
+ mIsManagerScanning && !Flags.enablePreventionOfManagerScansWhenNoAppsScan();
if (!getSessionInfos().isEmpty() || bindDueToManagerScan) {
// We bind if any manager is scanning (regardless of whether an app is scanning) to give
// the opportunity for providers to publish routing sessions that were established
diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
index e50189b2e79d..869b89a6670c 100644
--- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
+++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
@@ -3411,7 +3411,14 @@ class MediaRouter2ServiceImpl {
for (RouterRecord activeRouterRecord : activeRouterRecords) {
RouteDiscoveryPreference preference = activeRouterRecord.mDiscoveryPreference;
preferredFeatures.addAll(preference.getPreferredFeatures());
- if (activeRouterRecord.isActivelyScanning()) {
+
+ boolean isRouterRecordActivelyScanning =
+ Flags.enablePreventionOfManagerScansWhenNoAppsScan()
+ ? (activeRouterRecord.isActivelyScanning() || shouldForceActiveScan)
+ && !preference.getPreferredFeatures().isEmpty()
+ : activeRouterRecord.isActivelyScanning();
+
+ if (isRouterRecordActivelyScanning) {
activeScan = true;
activelyScanningPackages.add(activeRouterRecord.mPackageName);
}