From 3fbd86c89ddff17df9bbc0980add8b384c2db47d Mon Sep 17 00:00:00 2001 From: Kurt Himebauch <136133082+xXJSONDeruloXx@users.noreply.github.com> Date: Mon, 2 Nov 2026 14:29:39 -0500 Subject: [PATCH] fix: bottom screen frame graph updates smoothly and no longer looks jagged (#2013) --- .../main/java/com/droiddeck/launcher/ui/BottomStrip.kt | 2 +- .../com/droiddeck/launcher/ui/BottomTelemetryPage.kt | 2 +- .../main/java/com/droiddeck/launcher/ui/StatsHud.kt | 10 ++++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/droiddeck/launcher/ui/BottomStrip.kt b/app/src/main/java/com/droiddeck/launcher/ui/BottomStrip.kt index 58f1bd76d..3df2090bc 100644 --- a/app/src/main/java/com/droiddeck/launcher/ui/BottomStrip.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/BottomStrip.kt @@ -27,7 +27,7 @@ import kotlinx.coroutines.isActive import kotlinx.coroutines.withContext import java.io.File -private const val STRIP_FRAME_MS = 100L +private const val STRIP_FRAME_MS = 33L private const val STRIP_METRICS_MS = 500L private const val STRIP_TEMP_PLAIN = 0xFFF2F5F9.toInt() diff --git a/app/src/main/java/com/droiddeck/launcher/ui/BottomTelemetryPage.kt b/app/src/main/java/com/droiddeck/launcher/ui/BottomTelemetryPage.kt index 934ad773a..4aee7fc22 100644 --- a/app/src/main/java/com/droiddeck/launcher/ui/BottomTelemetryPage.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/BottomTelemetryPage.kt @@ -96,7 +96,7 @@ private const val ELITE_MS = 1_000L private const val ELITE_SEARCH_MS = 10_000L private const val OUTPUT_SCAN_MS = 3_000L private const val PERF_N = 60 -private const val FRAME_MS = 100L +private const val FRAME_MS = 33L private const val MINUTE_NS = 60_000_000_000L private const val TEMP_PLAIN = 0xFFF2F5F9.toInt() diff --git a/app/src/main/java/com/droiddeck/launcher/ui/StatsHud.kt b/app/src/main/java/com/droiddeck/launcher/ui/StatsHud.kt index 80c7689f2..b14dd39dc 100644 --- a/app/src/main/java/com/droiddeck/launcher/ui/StatsHud.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/StatsHud.kt @@ -65,6 +65,7 @@ import com.droiddeck.launcher.hud.FrameStats import com.droiddeck.launcher.hud.HudMetrics import com.droiddeck.launcher.session.StatsHud import java.io.File +import kotlin.math.ceil import kotlin.math.max import kotlin.math.min import kotlin.math.roundToInt @@ -264,13 +265,18 @@ private fun lowsText(d: HudData, size: TextUnit, accent: Color, deep: Boolean = } } +private val GRAPH_MIN_GAP = 3.dp + @Composable private fun Graph(values: List, lo: Float, hi: Float, color: Color, modifier: Modifier) { Canvas(modifier) { if (values.size < 2 || hi <= lo) return@Canvas + val stride = ceil(GRAPH_MIN_GAP.toPx() * (values.size - 1) / size.width).toInt().coerceAtLeast(1) + val points = if (stride == 1) values else values.chunked(stride) { it.average().toFloat() } + if (points.size < 2) return@Canvas val path = Path() - values.forEachIndexed { i, v -> - val x = i / (values.size - 1f) * size.width + points.forEachIndexed { i, v -> + val x = i / (points.size - 1f) * size.width val y = size.height - ((v - lo) / (hi - lo)).coerceIn(0f, 1f) * size.height if (i == 0) path.moveTo(x, y) else path.lineTo(x, y) }