From 64d7c5575ac1815f4e4c55399b8fe8858cb19e1e Mon Sep 17 00:00:00 2001 From: Chris Banes Date: Tue, 28 Jun 2022 16:02:34 +0100 Subject: [PATCH] Move away from using a tick for size changes We now just rely on the Drawable notifying the painter from invalidateDrawable() --- .../drawablepainter/DrawablePainter.kt | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/drawablepainter/src/main/java/com/google/accompanist/drawablepainter/DrawablePainter.kt b/drawablepainter/src/main/java/com/google/accompanist/drawablepainter/DrawablePainter.kt index 6ee1a0c2b..59e9918b3 100644 --- a/drawablepainter/src/main/java/com/google/accompanist/drawablepainter/DrawablePainter.kt +++ b/drawablepainter/src/main/java/com/google/accompanist/drawablepainter/DrawablePainter.kt @@ -59,20 +59,15 @@ class DrawablePainter( val drawable: Drawable ) : Painter(), RememberObserver { private var drawInvalidateTick by mutableStateOf(0) - private var sizeInvalidateTick by mutableStateOf(0) - - private var lastIntrinsicSize: Size = Size.Unspecified + private var drawableIntrinsicSize by mutableStateOf(Size.Unspecified) private val callback: Drawable.Callback by lazy { object : Drawable.Callback { override fun invalidateDrawable(d: Drawable) { // Update the tick so that we get re-drawn drawInvalidateTick++ - - if (lastIntrinsicSize != drawable.intrinsicSize) { - // If the intrinsic size has changed, update the layout tick - sizeInvalidateTick++ - } + // Update our intrinsic size too + drawableIntrinsicSize = drawable.intrinsicSize } override fun scheduleDrawable(d: Drawable, what: Runnable, time: Long) { @@ -128,13 +123,7 @@ class DrawablePainter( return false } - override val intrinsicSize: Size - get() { - // Reading this ensures that we re-layout when the instrinsic size changes - sizeInvalidateTick - - return drawable.intrinsicSize.also { lastIntrinsicSize = it } - } + override val intrinsicSize: Size get() = drawableIntrinsicSize override fun DrawScope.onDraw() { drawIntoCanvas { canvas ->