Fixes applied (commits 4866617 through a138e92)
Compilation errors
All unresolved references (desktopHwdecMode, customMpvProperties, compose_player_volume) are now defined across all platform targets. Build compiles cleanly.
SIGSEGV crash
Root cause was the render thread accessing freed mpv state during dispose(). Fixed by calling mpv_wakeup() before setting alive=0, eliminating the 16ms race window (a138e92).
Memory leak (13 GB)
Caused by decoded-frame accumulation in the mpv render pipeline. Mitigated with:
vd-lavc-dr=noto prevent decoder from holding decoded framesvideo-latency-hacks=yesto reduce buffering overhead- Proper frameReady flag reset and buffer lifecycle in renderFrameToBuffer()
Laggy playback
The 16ms poll loop was not properly synchronized with mpv render updates. The render thread now uses mpv_wait_event() with a 16ms timeout and MPV_RENDER_UPDATE_FRAME flag checks, matching vsync cadence.
Colors too bright
Added proper color-space configuration:
target-prim=bt.709, target-trc=srgbvideo-output-levels=fullicc-profile-auto=yesdeband=yes, dither-depth=auto
libmpv 0.40 compatibility
Removed MPV_RENDER_PARAM_MIN_FRAME_DURATION which is not supported in libmpv 0.40+ (08cc40a).
Desktop icons
Replaced oversized icons with properly sized PNGs (16-256px). Linux taskbar icon set via AWT Toolkit.
Linux packaging
- DEB: Added 20+ runtime dependencies (libmpv2, libasound2, libpulse0, etc.) so apt installs them automatically
- AppImage: Added AppStream metadata, update information for Gear Lever, and .zsync for delta updates