Skip to contentSkip to conversation

Fix Gtk+3 initialization without GLX

PATCH New Jussi Kukkonen 1 participant 2 messages Oct 21, 2015

lore
Share & tools
lore
#0 lore raw

v2 cover Fix Gtk+3 initialization without GLX

Following patch should fix the issue of Gtk+3 applications exiting when started in systems without libGL.so.1. The issue needs to be solved with upstreams (epoxy, possibly Gtk) in future releases but for 2.0 this should do it.

Applications that might use GtkGLArea (like gtk3-demo) do not need to RDEPEND on libgl as gtk now does that when distro features allow: this way they can be installed without libgl. Actually using GLArea still results in exit if libgl is not present: in gtk3-demo this happens if the glarea-demo is selected.

Jussi

The following changes since commit 556c0ea92eb32ddb9c9a5e30a74b2ca24ac69c68:

lib/oe/image.py: Fix dependency handling for compressed types (2015-10-14 18:08:37 +0300)

are available in the git repository at:

git://git.yoctoproject.org/poky-contrib jku/gtk-gl-again
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=jku/gtk-gl-again

Jussi Kukkonen (1):
gtk+3: Do not try to initialize GL without libgl

 meta/recipes-gnome/gtk+/gtk+3.inc                  |  4 +-
 ...Do-not-try-to-initialize-GL-without-libGL.patch | 60 ++++++++++++++++++++++
 meta/recipes-gnome/gtk+/gtk+3_3.16.6.bb            |  1 +
 3 files changed, 64 insertions(+), 1 deletion(-)
 create mode 100644 meta/recipes-gnome/gtk+/gtk+3/Do-not-try-to-initialize-GL-without-libGL.patch
Signature · 1 line
2.1.4
#1 lore raw

PATCH v2 1/1 gtk+3: Do not try to initialize GL without libgl

Gdk initialization ends up calling epoxy GLX api, which calls exit() if libGL.so.1 is not present. In practice this prevents all GTK+ applications from starting if GLX is not present.

If opengl and x11 distro features are set, make gtk+3 RDEPEND on libgl. If opengl and x11 distro features are not set, use #ifdef to prevent the GL initialization.

Remove libgl dependency from gtk3-demo: it can now run without libgl (although trying to run the glarea demo will exit in that case).

[YOCTO #8529]

---
 meta/recipes-gnome/gtk+/gtk+3.inc                  |  4 +-
 ...Do-not-try-to-initialize-GL-without-libGL.patch | 60 ++++++++++++++++++++++
 meta/recipes-gnome/gtk+/gtk+3_3.16.6.bb            |  1 +
 3 files changed, 64 insertions(+), 1 deletion(-)
 create mode 100644 meta/recipes-gnome/gtk+/gtk+3/Do-not-try-to-initialize-GL-without-libGL.patch
meta/recipes-gnome/gtk+/gtk+3.inc +3 -1
index 54f84fc..22a40d8 100644
@@ -32,9 +32,11 @@ EXTRA_OECONF += " \
 "
 
 PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "x11", "x11", "", d)} \
+                   ${@bb.utils.contains("DISTRO_FEATURES", "opengl x11", "glx", "", d)} \
                    ${@bb.utils.contains("DISTRO_FEATURES", "wayland", "wayland", "", d)}"
 
 PACKAGECONFIG[x11] = "--enable-x11-backend,--disable-x11-backend,at-spi2-atk fontconfig libx11 libxext libxcursor libxi libxdamage libxrandr libxrender libxcomposite libxfixes"
+PACKAGECONFIG[glx] = "--enable-glx,--disable-glx,,libgl"
 PACKAGECONFIG[wayland] = "--enable-wayland-backend,--disable-wayland-backend,wayland libxkbcommon virtual/mesa"
 
 do_install_append() {
@@ -57,7 +59,7 @@ FILES_${PN}-demo = "${bindir}/gtk3-demo \
 
 # The demo uses PNG files and mime type sniffing, so ensure that these
 # dependencies are present.
-RDEPENDS_${PN}-demo += "gdk-pixbuf-loader-png shared-mime-info libgl"
+RDEPENDS_${PN}-demo += "gdk-pixbuf-loader-png shared-mime-info"
 
 FILES_${PN} = "${bindir}/gtk-update-icon-cache-3.0 \
                ${bindir}/gtk-query-immodules-3.0 \
meta/recipes-gnome/gtk+/gtk+3/Do-not-try-to-initialize-GL-without-libGL.patch new file +60 -0

60 lines not on this page · raw message

meta/recipes-gnome/gtk+/gtk+3_3.16.6.bb +1 -0
index 1d736a4..381e607 100644
@@ -5,6 +5,7 @@ MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
 SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk+/${MAJ_VER}/gtk+-${PV}.tar.xz \
            file://hardcoded_libtool.patch \
            file://Dont-force-csd.patch \
+           file://Do-not-try-to-initialize-GL-without-libGL.patch \
           "
 
 SRC_URI[md5sum] = "fc59e5c8b5a4585b60623dd708df400b"
Signature · 1 line
2.1.4