summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelAdapter.kt12
1 files changed, 8 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelAdapter.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelAdapter.kt
index 045790c34043..d328bd93e62e 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelAdapter.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelAdapter.kt
@@ -34,7 +34,6 @@ import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import java.io.PrintWriter
import java.util.concurrent.CopyOnWriteArraySet
-import java.util.function.Supplier
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.collectIndexed
@@ -158,6 +157,8 @@ constructor(
override fun isTileReady(): Boolean = qsTileViewModel.currentState != null
+ private var cachedState = QSTile.AdapterState()
+
override fun setListening(client: Any?, listening: Boolean) {
client ?: return
if (listening) {
@@ -168,7 +169,10 @@ constructor(
.filterNotNull()
.map { mapState(context, it, qsTileViewModel.config) }
.onEach { legacyState ->
- callbacks.forEach { it.onStateChanged(legacyState) }
+ val changed = legacyState.copyTo(cachedState)
+ if (changed) {
+ callbacks.forEach { it.onStateChanged(legacyState) }
+ }
}
.launchIn(applicationScope)
}
@@ -235,7 +239,7 @@ constructor(
handlesLongClick =
viewModelState.supportedActions.contains(QSTileState.UserAction.LONG_CLICK)
- iconSupplier = Supplier {
+ icon =
when (val stateIcon = viewModelState.icon()) {
is Icon.Loaded ->
if (viewModelState.iconRes == null) DrawableIcon(stateIcon.drawable)
@@ -243,7 +247,7 @@ constructor(
is Icon.Resource -> ResourceIcon.get(stateIcon.res)
null -> null
}
- }
+
state = viewModelState.activationState.legacyState
contentDescription = viewModelState.contentDescription