diff options
author | 2024-04-23 14:26:59 +0000 | |
---|---|---|
committer | 2024-04-23 14:26:59 +0000 | |
commit | 52d345f538645076ee285e652ce2539ec70e13fe (patch) | |
tree | bf4d8539e38c1123d78480b19efa79338942234d | |
parent | 778a0c01c41fae06fd8b3ab9bb1b2208667c79ea (diff) | |
parent | 21d08b5033f968a2a3ece0352aef6cc52b15ce89 (diff) |
Merge changes from topic "fix-mr2-scanning" into main
* changes:
Fix cancelScanRequest() scanning state update logic
Make manager scans populate active scanning packages
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); } |