GNOME Bugzilla – Bug 675809
Crash when clicking xrefs
Last modified: 2012-05-15 17:25:20 UTC
In gnome-control-center master, the panels are within a Clutter GTK+ stage, and clicking on a "link button" to go from one panel to another produces this crash. 1. Open gnome-control-center 2. Open the Wacom panel (if you don't have any wacom devices) 3. Click "Bluetooth Settings"
+ Trace 230207
7804 /* Set all cursors on toplevel, otherwise its tricky to keep track of 7805 * which native window has what cursor set. */ 7806 toplevel = get_event_toplevel (pointer_window); 7807 impl_class = GDK_WINDOW_IMPL_GET_CLASS (toplevel->impl); 7808 impl_class->set_device_cursor (toplevel, device, cursor); (gdb) p impl_class $1 = (GdkWindowImplClass *) 0xc18630 (gdb) p impl_class->set_device_cursor $2 = (void (*)(GdkWindow *, GdkDevice *, GdkCursor *)) 0 Doing "if (impl_class->set_device_cursor)" before should be enough to fix it.
Created attachment 213810 [details] [review] gdk: Don't crash when resetting cursor In Clutter-gtk, which doesn't seem to implement the set_device_cursor() vfunc.
the issue is that GdkOffscreenWindow, which is used by GtkClutterActor to embed widgets, does not implement set_device_cursor(). somebody has to perform a check for set_device_cursor() or for GDK_IS_OFFSCREEN_WINDOW.
Created attachment 213812 [details] [review] gdk: Don't crash when resetting cursor When the toplevel is a GdkOffscreenWindow which doesn't implement the set_device_cursor() vfunc.
Comment on attachment 213810 [details] [review] gdk: Don't crash when resetting cursor Fix the commit message to mention GdkOffscreenWindow, not clutter-gtk.
Implemented a dummy function in the GdkOffscreenWindow implementation instead.