Skip to content

v2.3.6-beta — Collapse idle canvases (≈ -150 MB on 2-monitor setups)

Pre-release
Pre-release

Choose a tag to compare

@Delido Delido released this 17 Jun 08:46
· 10 commits to main since this release

Memory-footprint optimisation pass.

Changed — idle canvases collapse to 1×1

The wallpaper page hosts four full-viewport canvases:

  • ${''}#bars-canvas${''} — glow grid in canvas-renderer mode
  • ${''}#ambient-canvas${''} — snow / rain / sparks / aurora / storm / …
  • ${''}#pixelfx-canvas${''} — trail / hover-glow / click ripple / water
  • ${''}#audioglow-canvas${''} — pulse / spectrum bars / waveform

Pre-v2.3.6-beta every one of them kept a viewport-sized backing buffer even when the effect was off. At 5120×1440 × DPR=1 × 4 bytes per pixel that's ~30 MB per canvas → ≈ 100 MB resident per wallpaper instance with three of the four idle. Multi-monitor setups doubled or quadrupled that because each monitor runs its own WebView2 instance.

Each effect's ${''}stop()${''} (plus the canvas-off branch in ${''}_syncGridCanvasVisibility()${''} for the bars canvas) now sets ${''}canvas.width = canvas.height = 1${''} after clearing. ${''}start()${''} already calls ${''}resize()${''} to set the canvas back to full viewport on re-enable, so the trade-off is one allocation per off→on transition.

Realistic ceiling on a 2-monitor 5120×1440 setup with three of the four effects idle: ≈ -150 MB RAM.

Upgrade

Wallpaper bundle re-import required. Tray → Re-import wallpaper bundles.

Beta — no winget submission, GitHub Releases only.