Skip to content

BA Click 0.3.1

Choose a tag to compare

@HarryHello HarryHello released this 10 Sep 18:44
· 28 commits to main since this release
  • 2026-09-11

A performance-focused release: multi-display effects under GPU contention from other apps no longer freeze, stall periodically, or fall behind the cursor.

Fixed / 修复

  • Cross-display shard storm / 跨屏碎片风暴: returning to a display spawned up to maxCount shards along a garbage line from the stale cursor anchor, re-triggered on every crossing. Anchors older than the trail lifetime reset silently.
    回到某块屏幕时首次采样沿用离开前的旧锚点,一次性沿错误位置铺满碎片,每次跨屏都触发。现在过期锚点静默重置。
  • Stall watchdog misfire / 看门狗误判: the watchdog treated intentionally-skipped displays (empty/idle) as stalled and force-redrew ALL overlays every 0.5s — a periodic freeze source under GPU contention. It now only reacts to a genuinely silent tick loop.
    旧看门狗把故意跳过的屏幕当停滞,每 0.5 秒强制重画全部屏幕。现在只响应真正沉默的 tick 循环。

Performance / 优化

  • Sampling never blocks / 采样永不被绘制阻塞: starting a frame while the previous one is still on the GPU could block the main thread up to ~1s in currentDrawable (drawable pool exhaustion) — the trail head froze and jumped. Frames whose predecessor hasn't finished are now skipped instead: contention costs dropped frames, never a frozen trail.
    上一帧未完成时继续提交新帧可能在 currentDrawable 上阻塞主线程约 1 秒(可绘制缓冲耗尽),轨迹头部因此冻结再跳变。现在改为跳帧:争抢的代价是丢帧,而不是轨迹冻结。
  • Adaptive draw pacing (DrawPacer) / 自适应隔帧绘制: when measured ticks run sustainedly over budget, every second DRAW is skipped while sampling stays full-rate — the trail head keeps hugging the cursor. Full rate restores automatically.
    tick 实测持续超预算时自动隔帧绘制(采样保持全频,轨迹头部持续贴合光标),负载恢复后自动回全速。
  • Adaptive render scale / 压力下渲染分辨率自适应: sustained visible staleness (>100ms) drops overlays to 0.5× resolution (pixels ×1/4, glow content upscales invisibly); native resolution returns once staleness decays. Correctly handles Retina backing scale and enforces the target every tick (no display gets stuck at a stale scale).
    画面陈旧度持续超 100ms 时覆盖层降为 0.5× 分辨率渲染(像素 ×1/4,辉光内容拉伸无感),陈旧度消退即恢复原生;正确处理 Retina backing,且每 tick 校验,不会有屏幕卡在错误分辨率。
  • Diagnostic HUD / 诊断 HUD (BA_SHOW_HUD=1): real tick/draw rates, skip breakdown (pacer / in-flight / empty), degraded flag, and drawAge — the visible-frame staleness metric.
    新增真实 tick/绘制速率、三类跳过计数、降级标志与 drawAge(画面陈旧度)。