diff options
| author | 2024-04-19 16:08:29 +0100 | |
|---|---|---|
| committer | 2024-04-23 14:26:36 +0000 | |
| commit | 21d08b5033f968a2a3ece0352aef6cc52b15ce89 (patch) | |
| tree | e26117b2f8f9141c6b3282cca7c502303409a8e5 | |
| parent | c9d01b1fdc2f11c5aae71b763e72f5e5d1d04f07 (diff) | |
Fix cancelScanRequest() scanning state update logic
Before this change, the method would not turn off scanning in
system_server when a screen-on scan request was released. As a result,
proxy routers would unknowingly keep scanning forever even after having cancelled
their scan requests.
Bug: 331202666
Test: atest MediaRouter2HostSideTest ProxyMediaRouter2HostSideTest
Change-Id: I63563f38b7d53e608782e651150242519a55f5ce
Flag: com.android.media.flags.enable_screen_off_scanning
| -rw-r--r-- | media/java/android/media/MediaRouter2.java | 29 |
1 files changed, 16 insertions, 13 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); } } |