Wallper v1.6.2
Performance (major) & Polish
Performance
CPU Optimization
- Mesh gradient timer reduced from 30 fps to 20 fps — visually identical, 33% less CPU
- Removed per-frame GradientTheme allocation — colors computed directly without intermediate struct
- Cached blended colors in MusicThemeHolder — no heap allocations when not transitioning between tracks
- Replaced global + local NSEvent monitors with direct
NSEvent.mouseLocationpolling in the existing timer — zero additional callbacks
Fullscreen Detection
- Replaced 2-second
CGWindowListCopyWindowInfopolling with workspace notifications (didActivateApplication,activeSpaceDidChange) - Fullscreen check now triggers only on app switch, not continuously
Settings Observer
- Replaced broad
UserDefaults.didChangeNotificationwith KVO on 7 specific keys - Previously fired on every UserDefaults write system-wide — now only on actual setting changes
Video Rendering
- Removed
shouldRasterizefrom AVPlayerLayer quality reduction — was creating unnecessary VRAM bitmap cache per screen - Quality scaling now uses
contentsScaledirectly, lettingpreferredMaximumResolutionhandle the decoder side
Bug Fixes
Lockscreen Restore on Music Pause
- Fixed lockscreen not reverting to the previous wallpaper when music is paused or stopped
- Now restores both desktop wallpaper and lockscreen from the saved state
Smooth Mouse Tracking
- Added lerp interpolation for cursor-reactive gradients — mesh follows mouse with smooth easing instead of snapping to position each tick