Package: gtk-vector-screenshot Version: 0.3.1-1 Severity: normal Tags: patch
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 After switching from a different VT back to a GNOME3 fallback session, gnome-panel dies with (gnome-panel:4174): Gdk-WARNING **: The program 'gnome-panel' received an X Window System error. This probably reflects a bug in the program. The error was 'BadWindow (invalid Window parameter)'. (Details: serial 10210 error_code 3 request_code 18 minor_code 0) (Note to programmers: normally, X errors are reported asynchronously; that is, you will receive the error a while after causing it. To debug your program, run it with the --sync command line option to change this behavior. You can then get a meaningful backtrace from your debugger if you break on the gdk_x_error() function.) I painstakingly tracked this down to the XSetTextProperty() call in pdfscreenshot_event_filter(). The attached patch fixes the problem by replacing XSetErrorHandler() calls with gdk(_x11_display)_error_trap_push/pop_ignored() calls, which also ignore asynchronous errors which arrive later (there's no reason why XSetTextProperty() would force errors to arrive synchronously). - -- System Information: Debian Release: wheezy/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'stable'), (102, 'experimental') Architecture: powerpc (ppc) Kernel: Linux 3.0.6+ Locale: LANG=de_CH.UTF-8, LC_CTYPE=de_CH.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages gtk-vector-screenshot depends on: ii libatk1.0-0 2.2.0-2 ii libc6 2.13-21 ii libcairo-gobject2 1.10.2-6.1 ii libcairo2 1.10.2-6.1 ii libfontconfig1 2.8.0-3 ii libfreetype6 2.4.6-2 ii libgdk-pixbuf2.0-0 2.24.0-1 ii libglib2.0-0 2.28.6-1 ii libgtk-3-0 3.0.12-2 ii libgtk2.0-0 2.24.6-2 ii libpango1.0-0 1.29.4-1 ii libx11-6 2:1.4.4-2 gtk-vector-screenshot recommends no packages. gtk-vector-screenshot suggests no packages. - -- no debconf information -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iD8DBQFOmuQnWoGvjmrbsgARAiUcAJ9j9X4kYUAQyoSquE/ZdktXN5YSZACbBZGs kq+UUF4VcmWYPaRbV8QNZlU= =GJI7 -----END PGP SIGNATURE-----
diff -up -ru gtk-vector-screenshot-0.3.1.orig/gtk-vector-screenshot.c gtk-vector-screenshot-0.3.1/gtk-vector-screenshot.c --- gtk-vector-screenshot-0.3.1.orig/gtk-vector-screenshot.c 2011-08-27 10:48:39.000000000 +0200 +++ gtk-vector-screenshot-0.3.1/gtk-vector-screenshot.c 2011-10-16 15:47:27.000000000 +0200 @@ -311,14 +311,22 @@ pdfscreenshot_event_filter (GdkXEvent *x if (ev->type == MapNotify) { XTextProperty supported; + GdkDisplay *display = gdk_x11_lookup_xdisplay(ev->xmap.display); + XStringListToTextProperty(&supported_str, 1, &supported); - old_handler = XSetErrorHandler (silent_error_handler); + if (display) + gdk_x11_display_error_trap_push(display); + else + gdk_error_trap_push(); XSetTextProperty(ev->xmap.display, ev->xmap.window, &supported, gdk_x11_atom_to_xatom(pdfscreenshot_atom)); - (void) XSetErrorHandler (old_handler); + if (display) + gdk_x11_display_error_trap_pop_ignored(display); + else + gdk_error_trap_pop_ignored(); } else if (ev->type == ClientMessage && ev->xclient.message_type == gdk_x11_atom_to_xatom(pdfscreenshot_atom)) { if (event->any.window != NULL) {