Guard MediaDeviceManager.Entry against successive stop calls
It's non obvious from the code that an entry will be stopped only once. The start() protection is added for simmetry. Bug: 232812007 Test: Manual behavioral test. Test: atest MediaDeviceManagerTest MediaDataCombineLatestTest Change-Id: Icb4573d30790b4055b67eff57c495ceb6c3ae61b
This commit is contained in:
@@ -188,24 +188,28 @@ class MediaDeviceManager @Inject constructor(
|
||||
|
||||
@AnyThread
|
||||
fun start() = bgExecutor.execute {
|
||||
localMediaManager.registerCallback(this)
|
||||
localMediaManager.startScan()
|
||||
muteAwaitConnectionManager?.startListening()
|
||||
playbackType = controller?.playbackInfo?.playbackType ?: PLAYBACK_TYPE_UNKNOWN
|
||||
controller?.registerCallback(this)
|
||||
updateCurrent()
|
||||
started = true
|
||||
configurationController.addCallback(configListener)
|
||||
if (!started) {
|
||||
localMediaManager.registerCallback(this)
|
||||
localMediaManager.startScan()
|
||||
muteAwaitConnectionManager?.startListening()
|
||||
playbackType = controller?.playbackInfo?.playbackType ?: PLAYBACK_TYPE_UNKNOWN
|
||||
controller?.registerCallback(this)
|
||||
updateCurrent()
|
||||
started = true
|
||||
configurationController.addCallback(configListener)
|
||||
}
|
||||
}
|
||||
|
||||
@AnyThread
|
||||
fun stop() = bgExecutor.execute {
|
||||
started = false
|
||||
controller?.unregisterCallback(this)
|
||||
localMediaManager.stopScan()
|
||||
localMediaManager.unregisterCallback(this)
|
||||
muteAwaitConnectionManager?.stopListening()
|
||||
configurationController.removeCallback(configListener)
|
||||
if (started) {
|
||||
started = false
|
||||
controller?.unregisterCallback(this)
|
||||
localMediaManager.stopScan()
|
||||
localMediaManager.unregisterCallback(this)
|
||||
muteAwaitConnectionManager?.stopListening()
|
||||
configurationController.removeCallback(configListener)
|
||||
}
|
||||
}
|
||||
|
||||
fun dump(pw: PrintWriter) {
|
||||
@@ -265,7 +269,6 @@ class MediaDeviceManager @Inject constructor(
|
||||
updateCurrent()
|
||||
}
|
||||
|
||||
|
||||
override fun onBroadcastStarted(reason: Int, broadcastId: Int) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "onBroadcastStarted(), reason = $reason , broadcastId = $broadcastId")
|
||||
@@ -279,8 +282,10 @@ class MediaDeviceManager @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBroadcastMetadataChanged(broadcastId: Int,
|
||||
metadata: BluetoothLeBroadcastMetadata) {
|
||||
override fun onBroadcastMetadataChanged(
|
||||
broadcastId: Int,
|
||||
metadata: BluetoothLeBroadcastMetadata
|
||||
) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "onBroadcastMetadataChanged(), broadcastId = $broadcastId , " +
|
||||
"metadata = $metadata")
|
||||
@@ -291,7 +296,6 @@ class MediaDeviceManager @Inject constructor(
|
||||
override fun onBroadcastStopped(reason: Int, broadcastId: Int) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "onBroadcastStopped(), reason = $reason , broadcastId = $broadcastId")
|
||||
|
||||
}
|
||||
updateCurrent()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user