GNOME Bugzilla – Bug 598881
Unimplemented GdkWindowImplIface methods crash gimp on OSX
Last modified: 2010-03-14 09:40:15 UTC
Created attachment 145757 [details] [review] Adds empty functions to GdkWindowImplIface for quartz. In http://git.gnome.org/cgit/gtk+/commit/?id=7372379c24d183aa23e33cef031b774a5cb25ce4, Alexander Larson added two new methods, input_window_crossing and input_window_destroy to struct _GdkWindowImplIface and implemented them for X11. Tor Lilqvist implemented then for Win32 in http://git.gnome.org/cgit/gtk+/commit/?id=341b8a47529ad5f1bddee19cb6e32fac6c7b8856 2 months later. They have not been implemented for quartz, causing a bus error (segfault) when either event is received: Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_PROTECTION_FAILURE at address: 0x00000000 0x00000000 in ?? () (gdb) bt 8
+ Trace 218407
(gdb) p *impl_iface $2 = { g_iface = { g_type = 21183920, g_instance_type = 21180720 }, show = 0xe18425 <gdk_window_quartz_show>, hide = 0xe1891f <gdk_window_quartz_hide>, withdraw = 0xe18a52 <gdk_window_quartz_withdraw>, raise = 0xe197d0 <gdk_window_quartz_raise>, lower = 0xe1991e <gdk_window_quartz_lower>, restack_under = 0, restack_toplevel = 0xe19a6c <gdk_window_quartz_restack_toplevel>, move_resize = 0xe19186 <gdk_window_quartz_move_resize>, set_background = 0xe19a74 <gdk_window_quartz_set_background>, set_back_pixmap = 0xe19a7c <gdk_window_quartz_set_back_pixmap>, get_events = 0xe1a548 <gdk_window_quartz_get_events>, set_events = 0xe1a594 <gdk_window_quartz_set_events>, reparent = 0xe193f4 <gdk_window_quartz_reparent>, clear_region = 0, set_cursor = 0xe19a84 <gdk_window_quartz_set_cursor>, get_geometry = 0xe19b04 <gdk_window_quartz_get_geometry>, get_root_coords = 0xe19e21 <gdk_window_quartz_get_root_coords>, get_deskrelative_origin = 0xe1a051 <gdk_window_quartz_get_deskrelative_origin>, get_pointer = 0xe1a2fa <gdk_window_quartz_get_pointer>, shape_combine_region = 0xe1abe0 <gdk_window_quartz_shape_combine_region>, input_shape_combine_region = 0xe1abe8 <gdk_window_quartz_input_shape_combine_region>, set_static_gravities = 0xe1ac24 <gdk_window_quartz_set_static_gravities>, queue_antiexpose = 0xe0e913 <_gdk_quartz_window_queue_antiexpose>, queue_translation = 0xe0e850 <_gdk_quartz_window_queue_translation>, destroy = 0xe1828a <_gdk_quartz_window_destroy>, input_window_destroy = 0, input_window_crossing = 0 }
I have committed a likewise patch to git master. _gdk_input_window_destroy() was already defined in gdk/quartz/gdkinput.c (where it should be defined). I have added a dummy _gdk_input_window_crossing() there now. Of course, both have also been registered in the Impl struct. Will fix the implementation at some later point.
Not sure I am entitled to ask but... would it be possible to have this commit picked up by the 2.18 branch? Just in case these two references can help support this request: - Inkscape native on OS X is affected https://bugs.launchpad.net/inkscape/+bug/488631 - Gimp native on OS X is affected http://trac.macports.org/ticket/22451
(In reply to comment #2) > Not sure I am entitled to ask but... would it be possible to have this commit > picked up by the 2.18 branch? The commit has been "cherry picked" on the 2.18 branch and will be in the upcoming 2.18.8 release.