You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
v3.4.0.0 — Major Audio Visualizer Performance & Stability Release
Fixed SKMaskFilter native resource leak — 20 locations leaked ~1400 native objects/sec in Klingon, ~660 in Federation, ~352 in Jedi. All now use using var for automatic disposal.
Fixed dispatcher priority inversion — Changed fullscreen spectrum data dispatch from Send to Input priority, preventing keyboard input starvation.
Thread-safe frame-skip guard — Replaced bool with Interlocked.CompareExchange to prevent race conditions between NAudio thread and UI thread.
Fixed dispatch pile-up freeze — Guard reset moved to finally block so it can never get permanently stuck.
Mode Switching Fixes
Fixed Federation/Jedi/TimeLord/Milkdrop fullscreen switching — Mode changes now force immediate InvalidateVisual() instead of waiting for next timer tick.
Fault-tolerant cleanup — CleanupModeResources wrapped in try/catch so mode always changes even if cleanup throws.
Fixed global animation phase reset — Removed _animationPhase = 0 from TimeLord cleanup (was causing stuttering in all modes).
Protected externally driven visualizer — OnUnloaded now skips cleanup for fullscreen visualizers that are still loaded.
Render Crash Recovery
Exception-safe GPU rendering — OnSkiaPaintSurface renderer dispatch wrapped in try/catch to prevent WPF from permanently stopping re-renders.
Error indicator — Shows red error text instead of freezing on last frame if a mode crashes.
Previous Fixes Included
Centralized CleanupModeResources for all 22 modes
GPU bitmap disposal on unload (DisposeGpuResources)
Matrix column list trimming
Milkdrop/TimeLord null-guard on feedback buffer .Copy()