Skip to content
Snippets Groups Projects
Commit 90c9dbf7 authored by Lucas Dupin's avatar Lucas Dupin Committed by Android (Google) Code Review
Browse files

Merge "Restore trimMemory behaviour from T" into udc-dev

parents fe4e586e 16a1cf9e
No related branches found
No related tags found
No related merge requests found
......@@ -61,28 +61,23 @@ constructor(
override fun start() {
Log.d(LOG_TAG, "Resource trimmer registered.")
if (
!(featureFlags.isEnabled(Flags.TRIM_RESOURCES_WITH_BACKGROUND_TRIM_AT_LOCK) ||
featureFlags.isEnabled(Flags.TRIM_FONT_CACHES_AT_UNLOCK))
) {
return
}
applicationScope.launch(bgDispatcher) {
// We need to wait for the AoD transition (and animation) to complete.
// This means we're waiting for isDreaming (== implies isDoze) and dozeAmount == 1f
// signal. This is to make sure we don't clear font caches during animation which
// would jank and leave stale data in memory.
val isDozingFully =
keyguardInteractor.dozeAmount.map { it == 1f }.distinctUntilChanged()
combine(
keyguardInteractor.wakefulnessModel.map { it.state },
keyguardInteractor.isDreaming,
isDozingFully,
::Triple
)
.distinctUntilChanged()
.collect { onWakefulnessUpdated(it.first, it.second, it.third) }
if (featureFlags.isEnabled(Flags.TRIM_RESOURCES_WITH_BACKGROUND_TRIM_AT_LOCK)) {
applicationScope.launch(bgDispatcher) {
// We need to wait for the AoD transition (and animation) to complete.
// This means we're waiting for isDreaming (== implies isDoze) and dozeAmount == 1f
// signal. This is to make sure we don't clear font caches during animation which
// would jank and leave stale data in memory.
val isDozingFully =
keyguardInteractor.dozeAmount.map { it == 1f }.distinctUntilChanged()
combine(
keyguardInteractor.wakefulnessModel.map { it.state },
keyguardInteractor.isDreaming,
isDozingFully,
::Triple
)
.distinctUntilChanged()
.collect { onWakefulnessUpdated(it.first, it.second, it.third) }
}
}
applicationScope.launch(bgDispatcher) {
......@@ -97,17 +92,16 @@ constructor(
@WorkerThread
private fun onKeyguardGone() {
if (!featureFlags.isEnabled(Flags.TRIM_FONT_CACHES_AT_UNLOCK)) {
return
}
if (DEBUG) {
Log.d(LOG_TAG, "Trimming font caches since keyguard went away.")
}
// We want to clear temporary caches we've created while rendering and animating
// lockscreen elements, especially clocks.
Log.d(LOG_TAG, "Sending TRIM_MEMORY_UI_HIDDEN.")
globalWindowManager.trimMemory(ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN)
globalWindowManager.trimCaches(HardwareRenderer.CACHE_TRIM_FONT)
if (featureFlags.isEnabled(Flags.TRIM_FONT_CACHES_AT_UNLOCK)) {
if (DEBUG) {
Log.d(LOG_TAG, "Trimming font caches since keyguard went away.")
}
globalWindowManager.trimCaches(HardwareRenderer.CACHE_TRIM_FONT)
}
}
@WorkerThread
......
......@@ -18,6 +18,7 @@ import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.keyguard.shared.model.WakeSleepReason
import com.android.systemui.keyguard.shared.model.WakefulnessModel
import com.android.systemui.keyguard.shared.model.WakefulnessState
import com.android.systemui.util.mockito.any
import com.android.systemui.utils.GlobalWindowManager
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
......@@ -227,6 +228,9 @@ class ResourceTrimmerTest : SysuiTestCase() {
keyguardTransitionRepository.sendTransitionStep(
TransitionStep(KeyguardState.LOCKSCREEN, KeyguardState.GONE)
)
verifyNoMoreInteractions(globalWindowManager)
// Memory hidden should still be called.
verify(globalWindowManager, times(1))
.trimMemory(ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN)
verify(globalWindowManager, times(0)).trimCaches(any())
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment