Comment 11 for bug 204850

Revision history for this message
Patrick J. LoPresti (lopresti) wrote :

Thank you, Dmitry! Your patch works great (modulo one problem; see below).

In case anybody else wants to fix this for themselves, here are a step-by-step instructions to apply the patch:

- Download Dmitry's patch from the link above
- Become root
- Edit /etc/apt/sources.list to ensure you have a "deb-src" line matching your "deb" line for the main Ubuntu archive
$ apt-get update # (necessary if you modified sources.list)
$ apt-get build-dep gnome-settings-daemon
$ apt-get source gnome-settings-daemon
$ cd gnome-settings-daemon-2.22.1
$ cp /path/to/09_extra_touchpad_options_fix.patch ./debian/patches
$ ./debian/rules binary
$ dpkg -i ../gnome-settings-daemon_2.22.1-0ubuntu1_amd64.deb

That's it. To ensure your custom package does not get replaced when you apply updates, you might want to run "aptitude hold gnome-settings-manager".

Now, the problem. Although this fixes the segfault, it exposes the next issue, which is that whenever I close any window, the gnome-settings-manager dies with an X error. I worked around this by applying the patch below and rebuilding, but this is almost certainly the "wrong" fix, breaks something when not being used in a VNC session, etc. I am only including it because a) it works for me and b) it might help an expert locate and fix the issue for real.

Thank you again, Dmitry. The blinking cursor in gnome-terminal was driving me nuts. :-)

diff -u -r gnome-settings-daemon-2.22.1-orig/plugins/keyboard/gsd-keyboard-xkb.c gnome-settings-daemon-2.22.1/plugins/keyboard/gsd-keyboard-xkb.c
--- gnome-settings-daemon-2.22.1-orig/plugins/keyboard/gsd-keyboard-xkb.c 2008-03-27 06:11:19.000000000 -0700
+++ gnome-settings-daemon-2.22.1/plugins/keyboard/gsd-keyboard-xkb.c 2008-08-25 10:57:46.000000000 -0700
@@ -279,7 +279,7 @@
                              GdkEvent * event)
 {
         XEvent *xevent = (XEvent *) xev;
- xkl_engine_filter_events (xkl_engine, xevent);
+ /*xkl_engine_filter_events (xkl_engine, xevent);*/
         return GDK_FILTER_CONTINUE;
 }