From dc309187fdeb5e0a012cbb0cd6d604be614b12ea Mon Sep 17 00:00:00 2001 From: Kurt Himebauch <136133082+xXJSONDeruloXx@users.noreply.github.com> Date: Fri, 6 Nov 2026 16:24:48 -0500 Subject: [PATCH] fix(hud): skip relayout when size is unchanged and cap graph redraws --- .../com/droiddeck/launcher/hud/DroidDeckHudView.kt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/droiddeck/launcher/hud/DroidDeckHudView.kt b/app/src/main/java/com/droiddeck/launcher/hud/DroidDeckHudView.kt index b3b33d8da..80509f04c 100644 --- a/app/src/main/java/com/droiddeck/launcher/hud/DroidDeckHudView.kt +++ b/app/src/main/java/com/droiddeck/launcher/hud/DroidDeckHudView.kt @@ -274,9 +274,15 @@ class DroidDeckHudView(context: Context) : View(context) { seenFpsUpdates = updates periodDone.trySend(Unit) } - if (graphRect != null) invalidate() + if (graphRect == null) return + val now = SystemClock.uptimeMillis() + if (now - lastGraphDrawMs < GRAPH_REDRAW_MS) return + lastGraphDrawMs = now + invalidate() } + private var lastGraphDrawMs = 0L + private fun cycleSize() { size = size.next() onSizeCycledListener?.accept(size.token) @@ -423,8 +429,10 @@ class DroidDeckHudView(context: Context) : View(context) { ) private fun rebuildAndInvalidate() { + val wasStrip = stripRect != null + val oldW = contentW; val oldH = contentH rebuild() - requestLayout() + if (oldW != contentW || oldH != contentH || wasStrip != (stripRect != null)) requestLayout() invalidate() } @@ -1499,6 +1507,7 @@ class DroidDeckHudView(context: Context) : View(context) { const val TAB_PAD_X_SP = 7f const val TAB_PAD_Y_SP = 5.5f const val REFRESH_MS = 500L + const val GRAPH_REDRAW_MS = 33L private const val HUE_IDLE_MS = 500L const val MIN_SCALE = 0.5f const val MAX_SCALE = 2f