From a6f5e4f98d0986b100af2b3ec864cef362b8e390 Mon Sep 17 00:00:00 2001 From: GG Bond Date: Fri, 8 Dec 2023 13:09:06 +0800 Subject: [PATCH] Make sure computeIfAbsent inlined --- app/src/main/kotlin/com/hippo/ehviewer/ui/tools/Workaround.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/Workaround.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/Workaround.kt index e72a3e727..caa4a850c 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/Workaround.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/Workaround.kt @@ -19,13 +19,15 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.VectorPainter import androidx.compose.ui.graphics.vector.rememberVectorPainter +private inline fun MutableMap.computeIfAbsentInline(key: K, compute: () -> V) = get(key) ?: compute().also { put(key, it) } + @Stable @Composable private fun rememberNeverRecomposeVectorPainter(image: ImageVector): VectorPainter { val cache = LocalVectorPainterCache.current return remember(image) { val (context, map) = cache - map.computeIfAbsent(image) { + map.computeIfAbsentInline(image) { lateinit var b: VectorPainter val composition = ReusableComposition( object : Applier {