diff --git a/.gitignore b/.gitignore index 7d3df99..5d7ecbf 100644 --- a/.gitignore +++ b/.gitignore @@ -144,3 +144,4 @@ gtk+-2.90.5.tar.bz2 /gtk+-3.21.6.tar.xz /gtk+-3.22.0.tar.xz /gtk+-3.22.1.tar.xz +/gtk+-3.22.2.tar.xz diff --git a/0001-Fix-some-EGLDisplay-abuse.patch b/0001-Fix-some-EGLDisplay-abuse.patch deleted file mode 100644 index 5071d8c..0000000 --- a/0001-Fix-some-EGLDisplay-abuse.patch +++ /dev/null @@ -1,52 +0,0 @@ -From dc0e3f9d949723856dde43b7ee3a8aa87b320c88 Mon Sep 17 00:00:00 2001 -From: Adam Jackson -Date: Mon, 10 Oct 2016 14:10:38 -0400 -Subject: [PATCH 1/2] Fix some EGLDisplay * abuse - -EGLDisplays are already opaque pointers, and eglGetDisplay returns an -EGLDisplay not a pointer to one. - -Signed-off-by: Adam Jackson ---- - gdk/wayland/gdkglcontext-wayland.c | 2 +- - gtk/inspector/general.c | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/gdk/wayland/gdkglcontext-wayland.c b/gdk/wayland/gdkglcontext-wayland.c -index 7733188..ae1354e 100644 ---- a/gdk/wayland/gdkglcontext-wayland.c -+++ b/gdk/wayland/gdkglcontext-wayland.c -@@ -279,7 +279,7 @@ gdk_wayland_display_init_gl (GdkDisplay *display) - { - GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display); - EGLint major, minor; -- EGLDisplay *dpy; -+ EGLDisplay dpy; - - if (display_wayland->have_egl) - return TRUE; -diff --git a/gtk/inspector/general.c b/gtk/inspector/general.c -index 31dd6aa..77d0a76 100644 ---- a/gtk/inspector/general.c -+++ b/gtk/inspector/general.c -@@ -209,7 +209,7 @@ append_glx_extension_row (GtkInspectorGeneral *gen, - #ifdef GDK_WINDOWING_WAYLAND - static void - append_egl_extension_row (GtkInspectorGeneral *gen, -- EGLDisplay *dpy, -+ EGLDisplay dpy, - const gchar *ext) - { - add_check_row (gen, GTK_LIST_BOX (gen->priv->gl_box), ext, epoxy_has_egl_extension (dpy, ext), 0); -@@ -250,7 +250,7 @@ init_gl (GtkInspectorGeneral *gen) - if (GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ())) - { - GdkDisplay *display = gdk_display_get_default (); -- EGLDisplay *dpy; -+ EGLDisplay dpy; - EGLint major, minor; - gchar *version; - --- -2.9.3 - diff --git a/0002-Use-eglGetPlatformDisplay-EXT-if-available.patch b/0002-Use-eglGetPlatformDisplay-EXT-if-available.patch deleted file mode 100644 index c337f7c..0000000 --- a/0002-Use-eglGetPlatformDisplay-EXT-if-available.patch +++ /dev/null @@ -1,130 +0,0 @@ -From 1a9c35461dc93979dbc45a201a6670eb049bb285 Mon Sep 17 00:00:00 2001 -From: Adam Jackson -Date: Mon, 10 Oct 2016 14:12:40 -0400 -Subject: [PATCH 2/2] Use eglGetPlatformDisplay{,EXT} if available - -Calling eglGetDisplay forces libEGL to guess what kind of pointer you -passed it. Different EGL libraries will do different things here, and in -particular glvnd will do something different than Mesa. Since we do have -an API that allows us to explicitly type the display, use it. - -The explicit call to eglGetProcAddress is working around a bug in -libepoxy 1.3, which does not understand the EGL concept of client -extensions. Since it does not, the normal epoxy resolver for -eglGetPlatformDisplayEXT would not find any provider for that entry -point, and crash when you attempted to call it. - -Signed-off-by: Adam Jackson ---- - gdk/wayland/gdkglcontext-wayland.c | 37 ++++++++++++++++++++++++++++++++++++- - gtk/inspector/general.c | 32 +++++++++++++++++++++++++++++++- - 2 files changed, 67 insertions(+), 2 deletions(-) - -diff --git a/gdk/wayland/gdkglcontext-wayland.c b/gdk/wayland/gdkglcontext-wayland.c -index ae1354e..6573688 100644 ---- a/gdk/wayland/gdkglcontext-wayland.c -+++ b/gdk/wayland/gdkglcontext-wayland.c -@@ -274,6 +274,40 @@ gdk_wayland_gl_context_init (GdkWaylandGLContext *self) - { - } - -+static EGLDisplay -+gdk_wayland_get_display (GdkWaylandDisplay *display_wayland) -+{ -+ EGLDisplay dpy = NULL; -+ -+ if (epoxy_has_egl_extension (NULL, "EGL_KHR_platform_base")) -+ { -+ PFNEGLGETPLATFORMDISPLAYPROC getPlatformDisplay = -+ (void *) eglGetProcAddress ("eglGetPlatformDisplay"); -+ -+ if (getPlatformDisplay) -+ dpy = getPlatformDisplay (EGL_PLATFORM_WAYLAND_EXT, -+ display_wayland->wl_display, -+ NULL); -+ if (dpy) -+ return dpy; -+ } -+ -+ if (epoxy_has_egl_extension (NULL, "EGL_EXT_platform_base")) -+ { -+ PFNEGLGETPLATFORMDISPLAYEXTPROC getPlatformDisplay = -+ (void *) eglGetProcAddress ("eglGetPlatformDisplayEXT"); -+ -+ if (getPlatformDisplay) -+ dpy = getPlatformDisplay (EGL_PLATFORM_WAYLAND_EXT, -+ display_wayland->wl_display, -+ NULL); -+ if (dpy) -+ return dpy; -+ } -+ -+ return eglGetDisplay ((EGLNativeDisplayType) display_wayland->wl_display); -+} -+ - gboolean - gdk_wayland_display_init_gl (GdkDisplay *display) - { -@@ -284,7 +318,8 @@ gdk_wayland_display_init_gl (GdkDisplay *display) - if (display_wayland->have_egl) - return TRUE; - -- dpy = eglGetDisplay ((EGLNativeDisplayType)display_wayland->wl_display); -+ dpy = gdk_wayland_get_display (display_wayland); -+ - if (dpy == NULL) - return FALSE; - -diff --git a/gtk/inspector/general.c b/gtk/inspector/general.c -index 77d0a76..f32f7fe 100644 ---- a/gtk/inspector/general.c -+++ b/gtk/inspector/general.c -@@ -214,6 +214,36 @@ append_egl_extension_row (GtkInspectorGeneral *gen, - { - add_check_row (gen, GTK_LIST_BOX (gen->priv->gl_box), ext, epoxy_has_egl_extension (dpy, ext), 0); - } -+ -+static EGLDisplay -+wayland_get_display (struct wl_display *wl_dpy) -+{ -+ EGLDisplay dpy = NULL; -+ -+ if (epoxy_has_egl_extension (NULL, "EGL_KHR_platform_base")) -+ { -+ PFNEGLGETPLATFORMDISPLAYPROC getPlatformDisplay = -+ (void *) eglGetProcAddress ("eglGetPlatformDisplay"); -+ -+ if (getPlatformDisplay) -+ dpy = getPlatformDisplay (EGL_PLATFORM_WAYLAND_EXT, wl_dpy, NULL); -+ if (dpy) -+ return dpy; -+ } -+ -+ if (epoxy_has_egl_extension (NULL, "EGL_EXT_platform_base")) -+ { -+ PFNEGLGETPLATFORMDISPLAYEXTPROC getPlatformDisplay = -+ (void *) eglGetProcAddress ("eglGetPlatformDisplayEXT"); -+ -+ if (getPlatformDisplay) -+ dpy = getPlatformDisplay (EGL_PLATFORM_WAYLAND_EXT, wl_dpy, NULL); -+ if (dpy) -+ return dpy; -+ } -+ -+ return eglGetDisplay ((EGLNativeDisplayType) wl_dpy); -+} - #endif - - -@@ -254,7 +284,7 @@ init_gl (GtkInspectorGeneral *gen) - EGLint major, minor; - gchar *version; - -- dpy = eglGetDisplay ((EGLNativeDisplayType)gdk_wayland_display_get_wl_display (display)); -+ dpy = wayland_get_display (gdk_wayland_display_get_wl_display (display)); - - if (!eglInitialize (dpy, &major, &minor)) - return; --- -2.9.3 - diff --git a/gtk3.spec b/gtk3.spec index 6202c15..d3a0c3f 100644 --- a/gtk3.spec +++ b/gtk3.spec @@ -17,18 +17,14 @@ %global _changelog_trimtime %(date +%s -d "1 year ago") Name: gtk3 -Version: 3.22.1 -Release: 2%{?dist} +Version: 3.22.2 +Release: 1%{?dist} Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X License: LGPLv2+ URL: http://www.gtk.org Source0: http://download.gnome.org/sources/gtk+/3.22/gtk+-%{version}.tar.xz -# backport, will be in 3.22.2 -Patch1: 0001-Fix-some-EGLDisplay-abuse.patch -Patch2: 0002-Use-eglGetPlatformDisplay-EXT-if-available.patch - BuildRequires: pkgconfig(atk) >= %{atk_version} BuildRequires: pkgconfig(atk-bridge-2.0) BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version} @@ -165,11 +161,8 @@ the functionality of the installed %{name} package. %prep %setup -q -n gtk+-%{version} -%patch1 -p1 -%patch2 -p1 %build - (if ! test -x configure; then NOCONFIGURE=1 ./autogen.sh; CONFIGFLAGS=--enable-gtk-doc; fi; %configure $CONFIGFLAGS \ --enable-xkb \ @@ -340,6 +333,9 @@ gtk-query-immodules-3.0-%{__isa_bits} --update-cache %{_datadir}/installed-tests %changelog +* Mon Oct 24 2016 Kalev Lember - 3.22.2-1 +- Update to 3.22.2 + * Tue Oct 11 2016 Adam Jackson - 3.22.1-2 - Prefer eglGetPlatformDisplay to eglGetDisplay diff --git a/sources b/sources index 0291c46..66fa2fc 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -ebfa5e52167f2b8a4ec6024d51d86f1f gtk+-3.22.1.tar.xz +ad6c8c58b47cbf1b0cbb0d6ef5c4667a gtk+-3.22.2.tar.xz