* [PATCH 0/1] Fix Gtk+3 initialization without GLX @ 2015-10-21 8:34 Jussi Kukkonen 2015-10-21 8:34 ` [PATCH 1/1] gtk+3: Do not try to initialize GL without libgl Jussi Kukkonen 0 siblings, 1 reply; 5+ messages in thread From: Jussi Kukkonen @ 2015-10-21 8:34 UTC (permalink / raw) To: openembedded-core, schnitzeltony, otavio.salvador 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. This patch does not change the advice to application recipes: If the application uses OpenGL in GLArea, it should RDEPEND on libgl. 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 | 6 ++- ...Do-not-try-to-initialize-GL-without-libGL.patch | 60 ++++++++++++++++++++++ meta/recipes-gnome/gtk+/gtk+3_3.16.6.bb | 1 + 3 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-gnome/gtk+/gtk+3/Do-not-try-to-initialize-GL-without-libGL.patch -- 2.1.4 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/1] gtk+3: Do not try to initialize GL without libgl 2015-10-21 8:34 [PATCH 0/1] Fix Gtk+3 initialization without GLX Jussi Kukkonen @ 2015-10-21 8:34 ` Jussi Kukkonen 2015-10-21 8:43 ` Burton, Ross 0 siblings, 1 reply; 5+ messages in thread From: Jussi Kukkonen @ 2015-10-21 8:34 UTC (permalink / raw) To: openembedded-core, schnitzeltony, otavio.salvador 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. Also make gtk3-demo only RRECOMMEND libgl: it can now start without libgl (but trying to run the glarea demo will exit the application). [YOCTO #8529] Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> --- meta/recipes-gnome/gtk+/gtk+3.inc | 6 ++- ...Do-not-try-to-initialize-GL-without-libGL.patch | 60 ++++++++++++++++++++++ meta/recipes-gnome/gtk+/gtk+3_3.16.6.bb | 1 + 3 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-gnome/gtk+/gtk+3/Do-not-try-to-initialize-GL-without-libGL.patch diff --git a/meta/recipes-gnome/gtk+/gtk+3.inc b/meta/recipes-gnome/gtk+/gtk+3.inc index 54f84fc..37e3934 100644 --- a/meta/recipes-gnome/gtk+/gtk+3.inc +++ b/meta/recipes-gnome/gtk+/gtk+3.inc @@ -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,9 @@ 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" +# The GLArea demo will exit without libgl +RRECOMMENDS_${PN}-demo = "libgl" FILES_${PN} = "${bindir}/gtk-update-icon-cache-3.0 \ ${bindir}/gtk-query-immodules-3.0 \ diff --git a/meta/recipes-gnome/gtk+/gtk+3/Do-not-try-to-initialize-GL-without-libGL.patch b/meta/recipes-gnome/gtk+/gtk+3/Do-not-try-to-initialize-GL-without-libGL.patch new file mode 100644 index 0000000..c8c480c --- /dev/null +++ b/meta/recipes-gnome/gtk+/gtk+3/Do-not-try-to-initialize-GL-without-libGL.patch @@ -0,0 +1,60 @@ +From fc22058a10db913534f11348f86681fe9e1838e5 Mon Sep 17 00:00:00 2001 +From: Jussi Kukkonen <jussi.kukkonen@intel.com> +Date: Fri, 16 Oct 2015 16:35:16 +0300 +Subject: [PATCH] Do not try to initialize GL without libGL + +_gdk_x11_screen_update_visuals_for_gl() will end up calling epoxys +GLX api which will exit() if libGL.so.1 is not present. We do not +want that to happen and we don't want every app to have to set +"GDK_GL=disabled" environment variable: so use #ifdef set based on +opengl distro feature. + +Upstream is not interested in the fix as it is: Either epoxy should be +fixed (to not exit) or GTK+ possibly could do some additional probing +before calling epoxy APIs. + +Upstream-Status: Denied +Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> +--- + configure.ac | 7 +++++++ + gdk/x11/gdkvisual-x11.c | 5 +++++ + 2 files changed, 12 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 729a62e..58cc1ac 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -328,6 +328,13 @@ AC_ARG_ENABLE(mir-backend, + [enable the Mir gdk backend])], + [backend_set=yes]) + ++AC_ARG_ENABLE(glx, ++ [AS_HELP_STRING([--enable-glx], ++ [When enabled Gdk will try to initialize GLX])]) ++AS_IF([test "x$enable_glx" != "xno"], [ ++ AC_DEFINE([HAVE_GLX], [], [GLX will be available at runtime]) ++]) ++ + if test -z "$backend_set"; then + if test "$platform_win32" = yes; then + enable_win32_backend=yes +diff --git a/gdk/x11/gdkvisual-x11.c b/gdk/x11/gdkvisual-x11.c +index f3b062d..c8243f4 100644 +--- a/gdk/x11/gdkvisual-x11.c ++++ b/gdk/x11/gdkvisual-x11.c +@@ -345,7 +345,12 @@ _gdk_x11_screen_init_visuals (GdkScreen *screen) + /* If GL is available we want to pick better default/rgba visuals, + as we care about glx details such as alpha/depth/stencil depth, + stereo and double buffering */ ++ /* update_visuals_for_gl() will end up calling epoxy GLX api which ++ will exit if libgl is not there: so only do this if we know GL ++ is available */ ++#ifdef HAVE_GLX + _gdk_x11_screen_update_visuals_for_gl (screen); ++#endif + } + + gint +-- +2.1.4 + diff --git a/meta/recipes-gnome/gtk+/gtk+3_3.16.6.bb b/meta/recipes-gnome/gtk+/gtk+3_3.16.6.bb index 1d736a4..381e607 100644 --- a/meta/recipes-gnome/gtk+/gtk+3_3.16.6.bb +++ b/meta/recipes-gnome/gtk+/gtk+3_3.16.6.bb @@ -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" -- 2.1.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/1] gtk+3: Do not try to initialize GL without libgl 2015-10-21 8:34 ` [PATCH 1/1] gtk+3: Do not try to initialize GL without libgl Jussi Kukkonen @ 2015-10-21 8:43 ` Burton, Ross 2015-10-21 8:53 ` Jussi Kukkonen 0 siblings, 1 reply; 5+ messages in thread From: Burton, Ross @ 2015-10-21 8:43 UTC (permalink / raw) To: Jussi Kukkonen; +Cc: Otavio Salvador, OE-core [-- Attachment #1: Type: text/plain, Size: 422 bytes --] On 21 October 2015 at 09:34, Jussi Kukkonen <jussi.kukkonen@intel.com> wrote: > +PACKAGECONFIG[glx] = "--enable-glx,--disable-glx,,libgl" > This adds a RDEPENDS of libgl to libgtk3, so the explicit RDEPENDS on gtk3-demo isn't required. As GTK+ explicitly checks for GLX at startup I guess you want to remove the explicit RDEPENDS on gtk3-demo and the advice that applications should rdepend on libgl? Ross [-- Attachment #2: Type: text/html, Size: 844 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/1] gtk+3: Do not try to initialize GL without libgl 2015-10-21 8:43 ` Burton, Ross @ 2015-10-21 8:53 ` Jussi Kukkonen 2015-10-21 12:36 ` Otavio Salvador 0 siblings, 1 reply; 5+ messages in thread From: Jussi Kukkonen @ 2015-10-21 8:53 UTC (permalink / raw) To: Burton, Ross; +Cc: Otavio Salvador, OE-core [-- Attachment #1: Type: text/plain, Size: 762 bytes --] On 21 October 2015 at 11:43, Burton, Ross <ross.burton@intel.com> wrote: > > On 21 October 2015 at 09:34, Jussi Kukkonen <jussi.kukkonen@intel.com> > wrote: > >> +PACKAGECONFIG[glx] = "--enable-glx,--disable-glx,,libgl" >> > > This adds a RDEPENDS of libgl to libgtk3, so the explicit RDEPENDS on > gtk3-demo isn't required. As GTK+ explicitly checks for GLX at startup I > guess you want to remove the explicit RDEPENDS on gtk3-demo and the advice > that applications should rdepend on libgl? > The -demo RDEPENDS was now RRECOMMENDS but otherwise I guess that sounds correct for now: I imagine the gtk RDEPENDS will disappear once this is properly fixed upstream. Thanks, I'll wait a moment for any other comments and send V2, Jussi [-- Attachment #2: Type: text/html, Size: 1442 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/1] gtk+3: Do not try to initialize GL without libgl 2015-10-21 8:53 ` Jussi Kukkonen @ 2015-10-21 12:36 ` Otavio Salvador 0 siblings, 0 replies; 5+ messages in thread From: Otavio Salvador @ 2015-10-21 12:36 UTC (permalink / raw) To: Jussi Kukkonen; +Cc: OE-core On Wed, Oct 21, 2015 at 6:53 AM, Jussi Kukkonen <jussi.kukkonen@intel.com> wrote: > On 21 October 2015 at 11:43, Burton, Ross <ross.burton@intel.com> wrote: >> >> On 21 October 2015 at 09:34, Jussi Kukkonen <jussi.kukkonen@intel.com> >> wrote: >>> >>> +PACKAGECONFIG[glx] = "--enable-glx,--disable-glx,,libgl" >> >> >> This adds a RDEPENDS of libgl to libgtk3, so the explicit RDEPENDS on >> gtk3-demo isn't required. As GTK+ explicitly checks for GLX at startup I >> guess you want to remove the explicit RDEPENDS on gtk3-demo and the advice >> that applications should rdepend on libgl? > > > The -demo RDEPENDS was now RRECOMMENDS but otherwise I guess that sounds > correct for now: I imagine the gtk RDEPENDS will disappear once this is > properly fixed upstream. > > Thanks, I'll wait a moment for any other comments and send V2, Agreed; thanks for addressing this. -- Otavio Salvador O.S. Systems http://www.ossystems.com.br http://code.ossystems.com.br Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-10-21 12:36 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-10-21 8:34 [PATCH 0/1] Fix Gtk+3 initialization without GLX Jussi Kukkonen 2015-10-21 8:34 ` [PATCH 1/1] gtk+3: Do not try to initialize GL without libgl Jussi Kukkonen 2015-10-21 8:43 ` Burton, Ross 2015-10-21 8:53 ` Jussi Kukkonen 2015-10-21 12:36 ` Otavio Salvador
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox