From f3045801d09bc8212ab7761aa7255d0eacc43a12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Mlynari=C4=8D?= Date: Tue, 6 May 2025 11:20:55 +0200 Subject: [PATCH 1/2] Properly handle recycling of RecomposeHighlighterModifier After migrating to be Node based, it's possible the Modifier node can be reused. For example, when scrolling in a LazyColumn the nodes of items scrolled off the viewport may be recycled and used with items scrolling into the viewport. When this occurs, the composition count needs to be reset. Otherwise, it may look like the item scrolling into the viewport has recomposed more than it actually has. --- .../compose/recomposehighlighter/RecomposeHighlighter.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt b/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt index fdcbbda30..083f5f760 100644 --- a/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt +++ b/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt @@ -89,6 +89,10 @@ private class RecomposeHighlighterModifier : Modifier.Node(), DrawModifierNode { override val shouldAutoInvalidate: Boolean = false + override fun onReset() { + totalCompositions = 0 + timerJob?.cancel() + } override fun onDetach() { timerJob?.cancel() } From 1a2582e9ec7763b0eab16d232cd2c182e7d2fc3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Mlynari=C4=8D?= Date: Tue, 6 May 2025 11:23:50 +0200 Subject: [PATCH 2/2] Fix code style --- .../android/compose/recomposehighlighter/RecomposeHighlighter.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt b/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt index 083f5f760..cc92daed6 100644 --- a/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt +++ b/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt @@ -93,6 +93,7 @@ private class RecomposeHighlighterModifier : Modifier.Node(), DrawModifierNode { totalCompositions = 0 timerJob?.cancel() } + override fun onDetach() { timerJob?.cancel() }