summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/MediaData.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt5
2 files changed, 7 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaData.kt b/packages/SystemUI/src/com/android/systemui/media/MediaData.kt
index d04ec40c9f28..360f86548e13 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaData.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaData.kt
@@ -212,5 +212,8 @@ data class MediaDeviceData
val name: CharSequence?,
/** Optional intent to override the default output switcher for this control */
- val intent: PendingIntent? = null
+ val intent: PendingIntent? = null,
+
+ /** Unique id for this device */
+ val id: String? = null
)
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt
index 11ee6578e27d..8558859638d5 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt
@@ -155,7 +155,8 @@ class MediaDeviceManager @Inject constructor(
private var playbackType = PLAYBACK_TYPE_UNKNOWN
private var current: MediaDeviceData? = null
set(value) {
- if (!started || value != field) {
+ val hasSameId = value?.id != null && value.id == field?.id
+ if (!started || (!hasSameId && value != field)) {
field = value
fgExecutor.execute {
processDevice(key, oldKey, value)
@@ -263,7 +264,7 @@ class MediaDeviceManager @Inject constructor(
// If we have a controller but get a null route, then don't trust the device
val enabled = device != null && (controller == null || route != null)
val name = route?.name?.toString() ?: device?.name
- current = MediaDeviceData(enabled, device?.iconWithoutBackground, name)
+ current = MediaDeviceData(enabled, device?.iconWithoutBackground, name, id = device?.id)
}
}
}