From eb6383115ec0620a4afbf54f66c8821344370d57 Mon Sep 17 00:00:00 2001 From: austinried <4966622+austinried@users.noreply.github.com> Date: Thu, 24 Sep 2026 00:55:18 +0000 Subject: [PATCH] fix seed job leak and viewport fill top padding --- .../main/kotlin/com/subtracks/ui/components/ViewportFill.kt | 6 ++++-- .../main/kotlin/com/subtracks/ui/theme/ArtworkSeedCache.kt | 5 ++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/com/subtracks/ui/components/ViewportFill.kt b/app/src/main/kotlin/com/subtracks/ui/components/ViewportFill.kt index 4f2785f6..08ddcf63 100644 --- a/app/src/main/kotlin/com/subtracks/ui/components/ViewportFill.kt +++ b/app/src/main/kotlin/com/subtracks/ui/components/ViewportFill.kt @@ -23,7 +23,8 @@ fun rememberViewportFill(state: LazyListState): Dp { FILL_EPSILON_PX } else { val contentBottom = visibleReal.maxOf { it.offset + it.size } - (info.viewportSize.height - info.afterContentPadding - contentBottom).coerceAtLeast(0) + FILL_EPSILON_PX + val padding = info.beforeContentPadding + info.afterContentPadding + (info.viewportSize.height - padding - contentBottom).coerceAtLeast(0) + FILL_EPSILON_PX } } } @@ -42,7 +43,8 @@ fun rememberViewportFill(state: LazyGridState): Dp { FILL_EPSILON_PX } else { val contentBottom = visibleReal.maxOf { it.offset.y + it.size.height } - (info.viewportSize.height - info.afterContentPadding - contentBottom).coerceAtLeast(0) + FILL_EPSILON_PX + val padding = info.beforeContentPadding + info.afterContentPadding + (info.viewportSize.height - padding - contentBottom).coerceAtLeast(0) + FILL_EPSILON_PX } } } diff --git a/app/src/main/kotlin/com/subtracks/ui/theme/ArtworkSeedCache.kt b/app/src/main/kotlin/com/subtracks/ui/theme/ArtworkSeedCache.kt index ab259cc7..e425b576 100644 --- a/app/src/main/kotlin/com/subtracks/ui/theme/ArtworkSeedCache.kt +++ b/app/src/main/kotlin/com/subtracks/ui/theme/ArtworkSeedCache.kt @@ -50,9 +50,8 @@ object ArtworkSeedCache { ): Pair? { cache.get(ref.cacheKey)?.let { return it } val job = jobs.computeIfAbsent(ref.cacheKey) { scope.async { resolve(context, ref) } } - val seeds = job.await() - jobs.remove(ref.cacheKey, job) - return seeds + job.invokeOnCompletion { jobs.remove(ref.cacheKey, job) } + return job.await() } fun prefetch(