From 99c37a68d9b1200a5e476ea9e87ed93d88769766 Mon Sep 17 00:00:00 2001 From: Grace Date: Fri, 15 Jul 2022 18:59:49 +0000 Subject: [PATCH] Fix latency issue This change addresses the issue of the clock not updating colors until the next animation. Now, an animation is triggered directly after changing colors. Bug: 202758428 Test: N/A Change-Id: I37a27e27ce1c6b6d8eacbbad9182295619718c2e --- .../systemui/shared/clocks/DefaultClockProvider.kt | 14 ++++++++++++-- .../regionsampling/RegionSamplingInstance.kt | 4 ---- .../com/android/keyguard/ClockEventController.kt | 3 +++ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/clocks/DefaultClockProvider.kt b/packages/SystemUI/shared/src/com/android/systemui/shared/clocks/DefaultClockProvider.kt index 150a8171f5095..3d72f15492c5c 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/clocks/DefaultClockProvider.kt +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/clocks/DefaultClockProvider.kt @@ -84,6 +84,9 @@ class DefaultClock( resources.getFloat(R.dimen.keyguard_clock_line_spacing_scale_burmese) private val defaultLineSpacing = resources.getFloat(R.dimen.keyguard_clock_line_spacing_scale) + private var smallRegionDarkness = RegionDarkness.DEFAULT + private var largeRegionDarkness = RegionDarkness.DEFAULT + private fun updateClockColor(clock: AnimatableClockView, isRegionDark: RegionDarkness) { val color = if (isRegionDark.isDark) { resources.getColor(android.R.color.system_accent2_100) @@ -91,6 +94,7 @@ class DefaultClock( resources.getColor(android.R.color.system_accent1_600) } clock.setColors(DOZE_COLOR, color) + clock.animateAppearOnLockscreen() } override val events = object : ClockEvents { @@ -119,8 +123,14 @@ class DefaultClock( smallClockIsDark: RegionDarkness, largeClockIsDark: RegionDarkness ) { - updateClockColor(smallClock, smallClockIsDark) - updateClockColor(largeClock, largeClockIsDark) + if (smallRegionDarkness != smallClockIsDark) { + smallRegionDarkness = smallClockIsDark + updateClockColor(smallClock, smallClockIsDark) + } + if (largeRegionDarkness != largeClockIsDark) { + largeRegionDarkness = largeClockIsDark + updateClockColor(largeClock, largeClockIsDark) + } } override fun onLocaleChanged(locale: Locale) { diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/regionsampling/RegionSamplingInstance.kt b/packages/SystemUI/shared/src/com/android/systemui/shared/regionsampling/RegionSamplingInstance.kt index 459e5e5332859..f8f7c24c7c149 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/regionsampling/RegionSamplingInstance.kt +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/regionsampling/RegionSamplingInstance.kt @@ -48,10 +48,6 @@ class RegionSamplingInstance( } } - fun createRegionSamplingInstance(): Pair { - return Pair(isDark, samplingBounds) - } - fun currentClockDarkness(): RegionDarkness { return isDark } diff --git a/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt b/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt index 9f164d97e135f..bc1c10af5065b 100644 --- a/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt +++ b/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt @@ -80,6 +80,9 @@ class ClockEventController @Inject constructor( } fun updateRegionSamplers(currentClock: Clock?) { + smallRegionSamplingInstance.stopRegionSampler() + largeRegionSamplingInstance.stopRegionSampler() + smallRegionSamplingInstance = RegionSamplingInstance( currentClock?.smallClock, mainExecutor,