Date: Wednesday, May 11, 2016 @ 10:48:01 Author: andyrtr Revision: 267787
upgpkg: gtk3 3.20.4-2 add upstream fix to solve XI2 related crashes in X2go sessions Added: gtk3/trunk/trap_possible_X_error.diff Modified: gtk3/trunk/PKGBUILD ----------------------------+ PKGBUILD | 13 ++++++++++--- trap_possible_X_error.diff | 30 ++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2016-05-11 08:42:37 UTC (rev 267786) +++ PKGBUILD 2016-05-11 08:48:01 UTC (rev 267787) @@ -5,7 +5,7 @@ pkgbase=gtk3 pkgname=(gtk3 gtk-update-icon-cache) pkgver=3.20.4 -pkgrel=1 +pkgrel=2 pkgdesc="GObject-based multi-platform GUI toolkit" arch=(i686 x86_64) url="http://www.gtk.org/" @@ -18,16 +18,23 @@ settings.ini gtk-query-immodules-3.0.hook gtk-update-icon-cache.hook - gtk-update-icon-cache.script) + gtk-update-icon-cache.script + trap_possible_X_error.diff) sha256sums=('e7e3aaf54a54dd1c1ca0588939254abe31329e0bcd280a12290d5306b41ea03f' '01fc1d81dc82c4a052ac6e25bf9a04e7647267cc3017bc91f9ce3e63e5eb9202' 'de46e5514ff39a7a65e01e485e874775ab1c0ad20b8e94ada43f4a6af1370845' '496064a9dd6214bd58f689dd817dbdc4d7f17d42a8c9940a87018c3f829ce308' - 'bbe06e1b4e1ad5d61a4e703445a2bb93c6be918964d6dd76c0420c6667fa11eb') + 'bbe06e1b4e1ad5d61a4e703445a2bb93c6be918964d6dd76c0420c6667fa11eb' + '1204b67e45938304ce8500c4b9de52af5d2d90bcb4a2e28bc665f5b29803f28d') prepare() { cd gtk+-$pkgver NOCONFIGURE=1 ./autogen.sh + + # upstream fix for crashes with X servers not supporting XI2 + # https://bugzilla.gnome.org/show_bug.cgi?id=766233 + # https://github.com/GNOME/gtk/commit/7e7d7991cc8e7c7a2b50ce6530a8ebafd673516b + patch -Np1 -i ${srcdir}/trap_possible_X_error.diff } build() { Added: trap_possible_X_error.diff =================================================================== --- trap_possible_X_error.diff (rev 0) +++ trap_possible_X_error.diff 2016-05-11 08:48:01 UTC (rev 267787) @@ -0,0 +1,30 @@ +diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c +index f7c79c4..ad65e29 100644 +--- a/gdk/x11/gdkdisplay-x11.c ++++ b/gdk/x11/gdkdisplay-x11.c +@@ -2881,10 +2881,14 @@ gdk_x11_display_get_default_seat (GdkDisplay *display) + { + GList *seats, *l; + int device_id; ++ gboolean result = FALSE; + + seats = gdk_display_list_seats (display); +- XIGetClientPointer (GDK_DISPLAY_XDISPLAY (display), +- None, &device_id); ++ ++ gdk_x11_display_error_trap_push (display); ++ result = XIGetClientPointer (GDK_DISPLAY_XDISPLAY (display), ++ None, &device_id); ++ gdk_x11_display_error_trap_pop_ignored (display); + + for (l = seats; l; l = l->next) + { +@@ -2892,7 +2896,7 @@ gdk_x11_display_get_default_seat (GdkDisplay *display) + + pointer = gdk_seat_get_pointer (l->data); + +- if (gdk_x11_device_get_id (pointer) == device_id) ++ if (gdk_x11_device_get_id (pointer) == device_id || !result) + { + GdkSeat *seat = l->data; + g_list_free (seats);