Skip to content

UI renders fully transparent: assets resolved from hardcoded build path /home/jeff/dev/... #1

Description

@knobo

Thanks for putting out a Linux build — the player looks great once it renders.

Symptom

On a fresh install of ReferencePlayer-1.1.1-x86_64.AppImage, the whole UI is transparent: the window opens at the right size and the window manager decorations are there, but nothing is painted inside it — you see straight through to the desktop.

Cause

The app never finds its bundled assets. Running from a terminal shows:

qt.svg: Cannot open file '/home/<user>/.local/share/M Media Audio/Reference Player/themes/70s-hifi-black/common/play.svg', because: No such file or directory

…and the same for pause.svg, stop.svg, next.svg, previous.svg, ffwd.svg, rewind.svg, rec.svg, eject.svg, power-icon.svg, followed by:

QPixmap::scaled: Pixmap is a null pixmap
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::setRenderHint: Painter must be active to set rendering hints

The assets are present in the AppImage — at usr/bin/assets/themes/70s-hifi-black/common/play.svg, alongside the binary — but the app looks for them in $XDG_DATA_HOME/M Media Audio/Reference Player/themes/, which is empty on a fresh install.

strings on usr/bin/MMediaReferencePlayer shows what looks like the reason — an absolute build-machine path compiled into the binary:

/home/jeff/dev/plugins/reference-player-by-mmedia-linux/assets

That path exists only on the build machine, so on any other system asset resolution falls through to the user data directory, which nothing ever populates. The same root is referenced for /fonts/ (Orbitron-Medium.ttf, BarlowCondensed-*.ttf), so the bundled fonts presumably fail the same way.

Workaround

Copying the bundled assets to where the app looks fixes it completely — full UI, VU meters, EQ, meters, all themes:

mkdir -p ~/extract && cd ~/extract
/path/to/ReferencePlayer-1.1.1-x86_64.AppImage --appimage-extract 'usr/bin/assets/*'
D="$HOME/.local/share/M Media Audio/Reference Player"
cp -r squashfs-root/usr/bin/assets/themes "$D/themes"
cp -r squashfs-root/usr/bin/assets/fonts  "$D/fonts"

Suggested fix

Resolve the asset root relative to the executable instead of the build path — e.g. from QCoreApplication::applicationDirPath() (or /proc/self/exe, which the binary already reads) plus assets/, with $APPDIR/usr/bin/assets honored when running as an AppImage. Keeping the user data directory as a later fallback for user-installed themes seems right; it just can't be the only place a stock theme is looked up.

Environment

  • Ubuntu 24.04.4 LTS, x86_64, GNOME on X11
  • glibc 2.39
  • Mesa 25.2.8, Intel UHD 770
  • ReferencePlayer-1.1.1-x86_64.AppImage, sha256 c1df904d4c0cfb6c98d33192f0505b1208bdb0bb7ded3205ebfb8b499ce08677 (matches SHA256SUMS.txt)
  • FUSE 2 present, AppImage mounts and starts normally

Minor, unrelated log noise

  • JUCE Assertion failure in juce_AsyncUpdater.cpp:78 repeats continuously (~60 lines in the first seconds) — looks like an async update triggered off the message thread, and suggests the shipped build has assertions enabled.
  • qt.gui.imageio: libpng warning: iCCP: known incorrect sRGB profile for a number of theme PNGs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions