LINUX.ORG.RU

После обновления на Devuan Beowulf не работает vlc при QT_STYLE_OVERRIDE=gtk2

 , , , ,


0

1

Всем здравствуйте.

После обновления на Devuan 3 (Beowulf, эквивалент Debian 10 Buster) перестал запускаться vlc. Причём проблема именно в Qt UI, т. е. cvlc запускается нормально, а vlc – нет.

При запуске пишет:

VLC media player 3.0.8 Vetinari (revision 3.0.8-0-gf350b6b5a7)

(vlc:1215): GLib-GObject-WARNING **: 15:54:22.365: cannot register existing type 'GtkBuildable'

(vlc:1215): GLib-GObject-CRITICAL **: 15:54:22.365: g_type_interface_add_prerequisite: assertion 'G_TYPE_IS_INTERFACE (interface_type)' failed

(vlc:1215): GLib-CRITICAL **: 15:54:22.365: g_once_init_leave: assertion 'result != 0' failed

(vlc:1215): GLib-GObject-WARNING **: 15:54:22.365: cannot register existing type 'GtkWidget'

(vlc:1215): GLib-GObject-WARNING **: 15:54:22.365: cannot add class private field to invalid type '<invalid>'

(vlc:1215): GLib-GObject-WARNING **: 15:54:22.365: cannot add private field to invalid (non-instantiatable) type '<invalid>'

– и никакого UI не появляется. В Debian Stretch/Devuan ASCII всё норм.

Выяснилось, что всему виной QT_STYLE_OVERRIDE и QT_QPA_PLATFORMTHEME, выставленные в gtk2.

Причём, что характерно:

  1. При любом другом значении QT_STYLE_OVERRIDE (plastique, fusion, qtcurve, gtk3, cde, motif, windows, cleanlooks) интерфейс vlc таки отрисовывается.
  2. Проблема не зависит от фактической темы оформления GTK2.
  3. Другие сложные интерфейсы (Qt Assistant, Qt Designer) работают без проблем.

Всё это на qt5-style-plugins 5.0.0+git23.g335dbec-2+b17 и Qt 5.11.3+dfsg1-1+deb10u2.

Народ, у кого 10-й Debian – можете протестировать у себя (QT_STYLE_OVERRIDE=gtk2 QT_QPA_PLATFORMTHEME=gtk2 vlc)?

★★★★

Народ, у кого 10-й Debian – можете протестировать у себя (QT_STYLE_OVERRIDE=gtk2 QT_QPA_PLATFORMTHEME=gtk2 vlc)?

А DE у тебя какое? Xfce? Просто эта команда в кедах у меня работает, VLC открывается

Sunderland93 ★★★★★ ()
Ответ на: комментарий от Sunderland93

У меня WindowMaker.

А у тебя в результате vlc рисует свой UI таки через GTK2?

Файл /usr/lib/x86_64-linux-gnu/qt5/plugins/platformthemes/libqgtk2.so на диске присутствует?

Bass ★★★★ ()
Последнее исправление: Bass (всего исправлений: 1)
Ответ на: комментарий от Bass

Файл /usr/lib/x86_64-linux-gnu/qt5/plugins/platformthemes/libqgtk2.so на диске присутствует?

Да

$ ls -la /usr/lib/x86_64-linux-gnu/qt5/plugins/platformthemes/libqgtk2.so
-rw-r--r-- 1 root root 383072 мар 16  2019 /usr/lib/x86_64-linux-gnu/qt5/plugins/platformthemes/libqgtk2.so

А у тебя в результате vlc рисует свой UI таки через GTK2?

Да, вот https://imgur.com/lAkrcIH

Sunderland93 ★★★★★ ()
Ответ на: комментарий от Bass

У меня недавно (неделю где-то назад) была дичь. У меня был этот параметр задан глобально через /etc/environment Так вот, были непонятные зависания, творилась вакханалия, сессии запускались через раз. После какого-то обновления попустило. Причину так и не выяснил.

Jeronimo ()
Ответ на: комментарий от Jeronimo

Я уже докопался до истины.

Комбинация

GTK_CSD=0

вместе с непустым LD_PRELOAD:

LD_PRELOAD=libgtk3-nocsd.so.0

воспроизводимым обрахом даёт описанный мною эффект.

Каким боком настройки GTK3 влияют на рендеринг через GTK2 – мне неведомо.

Bass ★★★★ ()
Ответ на: комментарий от Bass

Вернее, кажется, ведомо.

Судя по всему, в gtk2 и в libgtk3-nocsd.so.0 есть функции с одинаковой сигнатурой. Но это не объясняет, почему не ломаются все остальные приложения, использующие gtk2.

Bass ★★★★ ()