summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /gnome-extra/gpointing-device-settings/files
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'gnome-extra/gpointing-device-settings/files')
-rw-r--r--gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-crash.patch30
-rw-r--r--gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-fix-build.patch26
-rw-r--r--gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-gsd-3.2-fix.patch22
-rw-r--r--gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-gsd-crash.patch35
-rw-r--r--gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-gtk22.patch201
-rw-r--r--gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-plugin.patch107
-rw-r--r--gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-reboot.patch266
7 files changed, 687 insertions, 0 deletions
diff --git a/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-crash.patch b/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-crash.patch
new file mode 100644
index 000000000000..789925c0bc97
--- /dev/null
+++ b/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-crash.patch
@@ -0,0 +1,30 @@
+commit 70add06dec8413965f3e98b6ba9a3c82168ea72c
+Author: Hiroyuki Ikezoe <poincare@ikezoe.net>
+Date: Tue Mar 16 19:56:17 2010 +0900
+
+ Fix crash.
+
+ We need to get xinput property if there is no gconf value for tapping time.
+
+ Fix for #613022.
+
+diff --git a/modules/gpds-touchpad-ui.c b/modules/gpds-touchpad-ui.c
+index 3bbcda6..a1cd31b 100644
+--- a/modules/gpds-touchpad-ui.c
++++ b/modules/gpds-touchpad-ui.c
+@@ -1067,8 +1067,14 @@ set_tapping_time_from_preference (GpdsUI *ui, GtkBuilder *builder)
+ }
+ }
+
+- if (!gpds_ui_get_gconf_int(ui, GPDS_TOUCHPAD_TAP_TIME_KEY, &value))
++ if (!gpds_ui_get_gconf_int(ui, GPDS_TOUCHPAD_TAP_TIME_KEY, &value) && !values) {
++ if (!gpds_xinput_ui_get_xinput_int_property(GPDS_XINPUT_UI(ui),
++ GPDS_TOUCHPAD_TAP_TIME,
++ &values, &n_values)) {
++ return;
++ }
+ value = values[0];
++ }
+
+ double_value = value;
+ object = gpds_ui_get_ui_object_by_name(GPDS_UI(ui), "tapping_time_scale");
diff --git a/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-fix-build.patch b/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-fix-build.patch
new file mode 100644
index 000000000000..341d96fc9b50
--- /dev/null
+++ b/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-fix-build.patch
@@ -0,0 +1,26 @@
+diff -Naur gpointing-device-settings-1.5.1.orig/configure.ac gpointing-device-settings-1.5.1/configure.ac
+--- gpointing-device-settings-1.5.1.orig/configure.ac 2010-02-05 00:38:20.000000000 +0100
++++ gpointing-device-settings-1.5.1/configure.ac 2013-12-17 15:00:08.394574115 +0100
+@@ -3,10 +3,9 @@
+
+ AC_INIT(gpointing-device-settings, 1.5.1,
+ [http://bugzilla.gnome.org/enter_bug.cgi?product=GPointingDeviceSettings])
+-AM_INIT_AUTOMAKE([1.9 tar-pax])
+-AM_INIT_AUTOMAKE([foreign])
++AM_INIT_AUTOMAKE([1.9 tar-pax foreign])
+ m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
+-AM_CONFIG_HEADER(config.h)
++AC_CONFIG_HEADERS(config.h)
+ AC_CONFIG_MACRO_DIR([m4])
+
+ AM_PROG_LIBTOOL
+@@ -146,9 +145,6 @@
+
+ GPDS_CFLAGS="$XINPUT_CFLAGS $GTK_CFLAGS"
+ GPDS_CFLAGS="$GPDS_CFLAGS $GCONF2_CFLAGS"
+-GPDS_CFLAGS="$GPDS_CFLAGS -DGTK_DISABLE_DEPRECATED"
+-GPDS_CFLAGS="$GPDS_CFLAGS -DGDK_DISABLE_DEPRECATED"
+-GPDS_CFLAGS="$GPDS_CFLAGS -DG_DISABLE_DEPRECATED"
+ GPDS_CFLAGS="$GPDS_CFLAGS -DGPDS_MODULEDIR=\\\"\"\$(gpds_moduledir)\"\\\""
+ GPDS_CFLAGS="$GPDS_CFLAGS -DGPDS_DATADIR=\\\"\"\$(gpds_datadir)\"\\\""
+ GPDS_CFLAGS="$GPDS_CFLAGS -DGPDS_UIDIR=\\\"\"\$(gpds_uidir)\"\\\""
diff --git a/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-gsd-3.2-fix.patch b/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-gsd-3.2-fix.patch
new file mode 100644
index 000000000000..c92f0bd54c95
--- /dev/null
+++ b/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-gsd-3.2-fix.patch
@@ -0,0 +1,22 @@
+Fixes build failnure on gnome-base/gnome-settings-daemon-3.2.2
+
+ gsd-pointing-device-plugin.c:59:1: warning: 'gsd_pointing_device_plugin_class_finalize' used but never defined [enabled by default]
+ CCLD libpointing-device.la
+ ld: .libs/libpointing_device_la-gsd-pointing-device-plugin.o: relocation R_X86_64_PC32 against undefined symbol `gsd_pointing_device_plugin_class_finalize'
+
+Gentoo-bug: http://bugs.gentoo.org/384001
+Patch-by: battle.jerboa@gmail.com
+--- a/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c 2012-02-02 13:32:20.000000000 +0400
++++ b/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c 2012-02-02 13:32:04.000000000 +0400
+@@ -214,6 +214,11 @@
+ plugin_class->activate = activate;
+ plugin_class->deactivate = deactivate;
+ }
++
++static void
++gsd_pointing_device_plugin_class_finalize (GsdPointingDevicePluginClass *klass)
++{
++}
+ /*
+ vi:ts=4:nowrap:ai:expandtab:sw=4
+ */
diff --git a/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-gsd-crash.patch b/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-gsd-crash.patch
new file mode 100644
index 000000000000..f694556b74ec
--- /dev/null
+++ b/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-gsd-crash.patch
@@ -0,0 +1,35 @@
+diff -ru gpointing-device-settings-1.5.1-orig/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c gpointing-device-settings-1.5.1/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c
+--- gpointing-device-settings-1.5.1-orig/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c 2010-12-20 01:29:09.204274003 -0500
++++ gpointing-device-settings-1.5.1/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c 2010-12-20 02:15:21.652274002 -0500
+@@ -96,19 +96,21 @@
+ XDevicePresenceNotifyEvent *notify_event = (XDevicePresenceNotifyEvent *)xev;
+
+ device_info = gpds_xinput_utils_get_device_info_from_id(notify_event->deviceid, NULL);
+- if (notify_event->devchange == DeviceEnabled) {
+- GsdPointingDeviceManager *manager;
++ if (device_info) {
++ if (notify_event->devchange == DeviceEnabled) {
++ GsdPointingDeviceManager *manager;
+
+- if (has_manager(plugin, device_info->name))
+- return GDK_FILTER_CONTINUE;
++ if (has_manager(plugin, device_info->name))
++ return GDK_FILTER_CONTINUE;
+
+- manager = gsd_pointing_device_manager_new(gdk_x11_get_xatom_name(device_info->type),
+- device_info->name);
+- if (manager) {
+- gsd_pointing_device_manager_start(manager, NULL);
+- plugin->managers = g_list_prepend(plugin->managers, manager);
++ manager = gsd_pointing_device_manager_new(gdk_x11_get_xatom_name(device_info->type),
++ device_info->name);
++ if (manager) {
++ gsd_pointing_device_manager_start(manager, NULL);
++ plugin->managers = g_list_prepend(plugin->managers, manager);
++ }
++ } else if (notify_event->devchange == DeviceRemoved) {
+ }
+- } else if (notify_event->devchange == DeviceRemoved) {
+ }
+ }
+
diff --git a/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-gtk22.patch b/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-gtk22.patch
new file mode 100644
index 000000000000..154c54728540
--- /dev/null
+++ b/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-gtk22.patch
@@ -0,0 +1,201 @@
+diff --git a/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c b/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c
+index 8a2d98f..ac0bcf1 100644
+--- a/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c
++++ b/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c
+@@ -124,7 +124,9 @@ add_device_presence_filter (GsdPointingDevicePlugin *plugin)
+
+ gint op_code, event, error;
+
+- if (!XQueryExtension(GDK_DISPLAY(),
++ display = gdk_x11_get_default_xdisplay();
++
++ if (!XQueryExtension(display,
+ "XInputExtension",
+ &op_code,
+ &event,
+@@ -132,8 +134,6 @@ add_device_presence_filter (GsdPointingDevicePlugin *plugin)
+ return;
+ }
+
+- display = gdk_x11_get_default_xdisplay();
+-
+ gdk_error_trap_push();
+ DevicePresence(display, xi_presence, class_presence);
+ XSelectExtensionEvent(display,
+diff --git a/modules/gnome-settings-daemon-plugins/gsd-touchpad-manager.c b/modules/gnome-settings-daemon-plugins/gsd-touchpad-manager.c
+index 2038d53..f47e0a4 100644
+--- a/modules/gnome-settings-daemon-plugins/gsd-touchpad-manager.c
++++ b/modules/gnome-settings-daemon-plugins/gsd-touchpad-manager.c
+@@ -348,7 +348,9 @@ add_device_presence_filter (GsdPointingDeviceManager *manager)
+
+ gint op_code, event, error;
+
+- if (!XQueryExtension(GDK_DISPLAY(),
++ display = gdk_x11_get_default_xdisplay();
++
++ if (!XQueryExtension(display,
+ "XInputExtension",
+ &op_code,
+ &event,
+@@ -356,8 +358,6 @@ add_device_presence_filter (GsdPointingDeviceManager *manager)
+ return;
+ }
+
+- display = gdk_x11_get_default_xdisplay();
+-
+ gdk_error_trap_push();
+ DevicePresence(display, xi_presence, class_presence);
+ XSelectExtensionEvent(display,
+diff --git a/src/gpds-xinput-pointer-info.c b/src/gpds-xinput-pointer-info.c
+index d38afad..ce9a952 100644
+--- a/src/gpds-xinput-pointer-info.c
++++ b/src/gpds-xinput-pointer-info.c
+@@ -55,7 +55,8 @@ gpds_xinput_utils_collect_pointer_infos (void)
+ XDeviceInfo *device_infos;
+ gint i, n_device_infos;
+
+- device_infos = XListInputDevices(GDK_DISPLAY(), &n_device_infos);
++ device_infos = XListInputDevices(gdk_x11_get_default_xdisplay(),
++ &n_device_infos);
+
+ for (i = 0; i < n_device_infos; i++) {
+ GpdsXInputPointerInfo *info;
+diff --git a/src/gpds-xinput-utils.c b/src/gpds-xinput-utils.c
+index 0f7ceea..5a3e3a2 100644
+--- a/src/gpds-xinput-utils.c
++++ b/src/gpds-xinput-utils.c
+@@ -41,7 +41,8 @@ gpds_xinput_utils_get_device_info (const gchar *device_name, GError **error)
+ XDeviceInfo *device_infos;
+ gint i, n_device_infos;
+
+- device_infos = XListInputDevices(GDK_DISPLAY(), &n_device_infos);
++ device_infos = XListInputDevices(gdk_x11_get_default_xdisplay(),
++ &n_device_infos);
+
+ for (i = 0; i < n_device_infos; i++) {
+ if (device_infos[i].use != IsXExtensionPointer)
+@@ -68,7 +69,7 @@ gpds_xinput_utils_get_device_info_from_id (XID id, GError **error)
+ XDeviceInfo *device_infos;
+ gint i, n_device_infos;
+
+- device_infos = XListInputDevices(GDK_DISPLAY(), &n_device_infos);
++ device_infos = XListInputDevices(gdk_x11_get_default_xdisplay(), &n_device_infos);
+
+ for (i = 0; i < n_device_infos; i++) {
+ if (device_infos[i].use != IsXExtensionPointer)
+@@ -125,7 +126,7 @@ gpds_xinput_utils_open_device (const gchar *device_name, GError **error)
+ return NULL;
+
+ gdk_error_trap_push();
+- device = XOpenDevice(GDK_DISPLAY(), device_info->id);
++ device = XOpenDevice(gdk_x11_get_default_xdisplay(), device_info->id);
+ gdk_error_trap_pop();
+ if (!device) {
+ g_set_error(error,
+diff --git a/src/gpds-xinput.c b/src/gpds-xinput.c
+index d8bd1a2..66634b3 100644
+--- a/src/gpds-xinput.c
++++ b/src/gpds-xinput.c
+@@ -100,7 +100,7 @@ dispose (GObject *object)
+ g_free(priv->device_name);
+
+ if (priv->device) {
+- XCloseDevice(GDK_DISPLAY(), priv->device);
++ XCloseDevice(gdk_x11_get_default_xdisplay(), priv->device);
+ priv->device = NULL;
+ }
+
+@@ -199,7 +199,8 @@ get_x_error_text (int x_error_code)
+ {
+ gchar buf[64];
+
+- XGetErrorText(GDK_DISPLAY(), x_error_code, buf, sizeof(buf) - 1);
++ XGetErrorText(gdk_x11_get_default_xdisplay(), x_error_code,
++ buf, sizeof(buf) - 1);
+
+ return g_strdup(buf);
+ }
+@@ -273,7 +274,7 @@ gpds_xinput_set_int_properties_by_name_with_format_type
+ }
+
+ gdk_error_trap_push();
+- XChangeDeviceProperty(GDK_DISPLAY(),
++ XChangeDeviceProperty(gdk_x11_get_default_xdisplay(),
+ device, property_atom,
+ XA_INTEGER, format_type, PropModeReplace,
+ (unsigned char*)property_data, n_properties);
+@@ -383,7 +384,8 @@ get_atom (GpdsXInput *xinput, const gchar *property_name, GError **error)
+ if (!device)
+ return -1;
+
+- properties = XListDeviceProperties(GDK_DISPLAY(), device, &n_properties);
++ properties = XListDeviceProperties(gdk_x11_get_default_xdisplay(),
++ device, &n_properties);
+ for (i = 0; i < n_properties; i++) {
+ const gchar *name;
+
+@@ -427,9 +429,9 @@ gpds_xinput_get_int_properties_by_name (GpdsXInput *xinput,
+ return FALSE;
+
+ gdk_error_trap_push();
+- status = XGetDeviceProperty(GDK_DISPLAY(), device, atom, 0, 1000, False,
+- XA_INTEGER, &actual_type, &actual_format,
+- n_values, &bytes_after, &data);
++ status = XGetDeviceProperty(gdk_x11_get_default_xdisplay(), device, atom,
++ 0, 1000, False, XA_INTEGER, &actual_type,
++ &actual_format, n_values, &bytes_after, &data);
+ gdk_flush();
+ x_error_code = gdk_error_trap_pop();
+ if (status != Success || x_error_code != 0) {
+@@ -523,7 +525,7 @@ gpds_xinput_set_float_properties_by_name (GpdsXInput *xinput,
+ *(property_data + i) = (gfloat)properties[i];
+
+ gdk_error_trap_push();
+- XChangeDeviceProperty(GDK_DISPLAY(),
++ XChangeDeviceProperty(gdk_x11_get_default_xdisplay(),
+ device, property_atom,
+ float_atom, 32, PropModeReplace,
+ (unsigned char*)property_data, n_properties);
+@@ -594,7 +596,8 @@ gpds_xinput_get_float_properties_by_name (GpdsXInput *xinput,
+ return FALSE;
+
+ gdk_error_trap_push();
+- status = XGetDeviceProperty(GDK_DISPLAY(), device, property_atom, 0, 1000, False,
++ status = XGetDeviceProperty(gdk_x11_get_default_xdisplay(), device,
++ property_atom, 0, 1000, False,
+ float_atom, &actual_type, &actual_format,
+ n_properties, &bytes_after, &data);
+ gdk_flush();
+@@ -676,7 +679,8 @@ gpds_xinput_get_button_map (GpdsXInput *xinput,
+ *map = g_new0(guchar, *n_buttons);
+
+ gdk_error_trap_push();
+- status = XGetDeviceButtonMapping(GDK_DISPLAY(), device, *map, *n_buttons);
++ status = XGetDeviceButtonMapping(gdk_x11_get_default_xdisplay(),
++ device, *map, *n_buttons);
+ gdk_flush();
+
+ x_error_code = gdk_error_trap_pop();
+@@ -705,7 +709,8 @@ gpds_xinput_set_button_map (GpdsXInput *xinput,
+ return FALSE;
+
+ gdk_error_trap_push();
+- status = XSetDeviceButtonMapping(GDK_DISPLAY(), device, map, n_buttons);
++ status = XSetDeviceButtonMapping(gdk_x11_get_default_xdisplay(),
++ device, map, n_buttons);
+ gdk_flush();
+
+ x_error_code = gdk_error_trap_pop();
+diff --git a/test/test-xinput-utils.c b/test/test-xinput-utils.c
+index a06dcbc..f97f9d4 100644
+--- a/test/test-xinput-utils.c
++++ b/test/test-xinput-utils.c
+@@ -29,7 +29,7 @@ void
+ teardown (void)
+ {
+ if (device)
+- XCloseDevice(GDK_DISPLAY(), device);
++ XCloseDevice(gdk_x11_get_default_xdisplay(), device);
+ g_clear_error(&error);
+ g_clear_error(&expected_error);
+ }
diff --git a/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-plugin.patch b/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-plugin.patch
new file mode 100644
index 000000000000..3e8612d96a53
--- /dev/null
+++ b/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-plugin.patch
@@ -0,0 +1,107 @@
+commit 255334e6749ec4d4358e627dc6693b4159aaf912
+Author: Hiroyuki Ikezoe <poincare@ikezoe.net>
+Date: Fri Mar 12 19:13:54 2010 +0900
+
+ mouse extension -> pointing device.
+
+ Why did I use this weird name?
+
+diff --git a/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c b/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c
+index db4dd8e..31dd336 100644
+--- a/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c
++++ b/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c
+@@ -29,34 +29,34 @@
+ #include "gpds-gconf.h"
+ #include "gpds-xinput-pointer-info.h"
+
+-#define GSD_TYPE_MOUSE_EXTENSION_PLUGIN (gsd_mouse_extension_plugin_get_type ())
+-#define GSD_MOUSE_EXTENSION_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSD_TYPE_MOUSE_EXTENSION_PLUGIN, GsdMouseExtensionPlugin))
+-#define GSD_MOUSE_EXTENSION_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSD_TYPE_MOUSE_EXTENSION_PLUGIN, GsdTracklassPointPluginClass))
+-#define GSD_IS_MOUSE_EXTENSION_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSD_TYPE_MOUSE_EXTENSION_PLUGIN))
+-#define GSD_IS_MOUSE_EXTENSION_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSD_TYPE_MOUSE_EXTENSION_PLUGIN))
+-#define GSD_MOUSE_EXTENSION_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GSD_TYPE_MOUSE_EXTENSION_PLUGIN, GsdTracklassPointPluginClass))
++#define GSD_TYPE_POINTING_DEVICE_PLUGIN (gsd_pointing_device_plugin_get_type ())
++#define GSD_POINTING_DEVICE_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSD_TYPE_POINTING_DEVICE_PLUGIN, GsdPointingDevicePlugin))
++#define GSD_POINTING_DEVICE_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSD_TYPE_POINTING_DEVICE_PLUGIN, GsdTracklassPointPluginClass))
++#define GSD_IS_POINTING_DEVICE_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSD_TYPE_POINTING_DEVICE_PLUGIN))
++#define GSD_IS_POINTING_DEVICE_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSD_TYPE_POINTING_DEVICE_PLUGIN))
++#define GSD_POINTING_DEVICE_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GSD_TYPE_POINTING_DEVICE_PLUGIN, GsdTracklassPointPluginClass))
+
+-typedef struct _GsdMouseExtensionPlugin GsdMouseExtensionPlugin;
+-typedef struct _GsdMouseExtensionPluginClass GsdMouseExtensionPluginClass;
++typedef struct _GsdPointingDevicePlugin GsdPointingDevicePlugin;
++typedef struct _GsdPointingDevicePluginClass GsdPointingDevicePluginClass;
+
+-struct _GsdMouseExtensionPlugin
++struct _GsdPointingDevicePlugin
+ {
+ GnomeSettingsPlugin parent;
+ GList *managers;
+ };
+
+-struct _GsdMouseExtensionPluginClass
++struct _GsdPointingDevicePluginClass
+ {
+ GnomeSettingsPluginClass parent_class;
+ };
+
+-GType gsd_mouse_extension_plugin_get_type (void) G_GNUC_CONST;
++GType gsd_pointing_device_plugin_get_type (void) G_GNUC_CONST;
+ G_MODULE_EXPORT GType register_gnome_settings_plugin (GTypeModule *module);
+
+-GNOME_SETTINGS_PLUGIN_REGISTER(GsdMouseExtensionPlugin, gsd_mouse_extension_plugin)
++GNOME_SETTINGS_PLUGIN_REGISTER(GsdPointingDevicePlugin, gsd_pointing_device_plugin)
+
+ static void
+-gsd_mouse_extension_plugin_init (GsdMouseExtensionPlugin *plugin)
++gsd_pointing_device_plugin_init (GsdPointingDevicePlugin *plugin)
+ {
+ plugin->managers = NULL;
+ }
+@@ -104,10 +104,10 @@ collect_pointer_device_infos_from_gconf (void)
+ static void
+ activate (GnomeSettingsPlugin *plugin)
+ {
+- GsdMouseExtensionPlugin *mouse_extension_plugin;
++ GsdPointingDevicePlugin *pointing_device_plugin;
+ GList *pointer_device_infos, *node;
+
+- mouse_extension_plugin = GSD_MOUSE_EXTENSION_PLUGIN(plugin);
++ pointing_device_plugin = GSD_POINTING_DEVICE_PLUGIN(plugin);
+
+ pointer_device_infos = collect_pointer_device_infos_from_gconf();
+ for (node = pointer_device_infos; node; node = g_list_next(node)) {
+@@ -120,8 +120,8 @@ activate (GnomeSettingsPlugin *plugin)
+ continue;
+
+ gsd_pointing_device_manager_start(manager, NULL);
+- mouse_extension_plugin->managers =
+- g_list_prepend(mouse_extension_plugin->managers, manager);
++ pointing_device_plugin->managers =
++ g_list_prepend(pointing_device_plugin->managers, manager);
+ }
+ g_list_foreach(pointer_device_infos,
+ (GFunc)gpds_xinput_pointer_info_free, NULL);
+@@ -129,7 +129,7 @@ activate (GnomeSettingsPlugin *plugin)
+ }
+
+ static void
+-stop_all_managers (GsdMouseExtensionPlugin *plugin)
++stop_all_managers (GsdPointingDevicePlugin *plugin)
+ {
+ GList *node;
+
+@@ -147,11 +147,11 @@ stop_all_managers (GsdMouseExtensionPlugin *plugin)
+ static void
+ deactivate (GnomeSettingsPlugin *plugin)
+ {
+- stop_all_managers(GSD_MOUSE_EXTENSION_PLUGIN(plugin));
++ stop_all_managers(GSD_POINTING_DEVICE_PLUGIN(plugin));
+ }
+
+ static void
+-gsd_mouse_extension_plugin_class_init (GsdMouseExtensionPluginClass *klass)
++gsd_pointing_device_plugin_class_init (GsdPointingDevicePluginClass *klass)
+ {
+ GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS(klass);
+
diff --git a/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-reboot.patch b/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-reboot.patch
new file mode 100644
index 000000000000..1793bdfaa0a0
--- /dev/null
+++ b/gnome-extra/gpointing-device-settings/files/gpointing-device-settings-1.5.1-reboot.patch
@@ -0,0 +1,266 @@
+commit ff25a24d387887bc3bbacfb5bcaf2756695df096
+Author: Hiroyuki Ikezoe <hiikezoe@gnome.org>
+Date: Sat Jun 26 19:55:40 2010 +0900
+
+ Watch DevicePresenceNotify event.
+
+ Some devices are not reported by xserver at the time of startiung up
+ of gnome-settings-daemon, so we need to watch DevicePresenceNotify
+ event at that time.
+
+ Fix for bug #609050.
+
+diff --git a/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c b/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c
+index 31dd336..8a2d98f 100644
+--- a/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c
++++ b/modules/gnome-settings-daemon-plugins/gsd-pointing-device-plugin.c
+@@ -24,10 +24,13 @@
+ #include <gnome-settings-daemon/gnome-settings-plugin.h>
+ #include <glib/gi18n.h>
+ #include <gconf/gconf-client.h>
++#include <gdk/gdkx.h>
++#include <X11/extensions/XInput.h>
+
+ #include "gsd-pointing-device-manager.h"
+ #include "gpds-gconf.h"
+ #include "gpds-xinput-pointer-info.h"
++#include "gpds-xinput-utils.h"
+
+ #define GSD_TYPE_POINTING_DEVICE_PLUGIN (gsd_pointing_device_plugin_get_type ())
+ #define GSD_POINTING_DEVICE_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSD_TYPE_POINTING_DEVICE_PLUGIN, GsdPointingDevicePlugin))
+@@ -61,44 +64,90 @@ gsd_pointing_device_plugin_init (GsdPointingDevicePlugin *plugin)
+ plugin->managers = NULL;
+ }
+
+-static GList *
+-collect_pointer_device_infos_from_gconf (void)
++static gboolean
++has_manager (GsdPointingDevicePlugin *plugin, const gchar *device_name)
+ {
+- GConfClient *gconf;
+- GSList *dirs, *node;
+- GList *infos = NULL;
+-
+- gconf = gconf_client_get_default();
+- dirs = gconf_client_all_dirs(gconf, GPDS_GCONF_DIR, NULL);
+-
+- for (node = dirs; node; node = g_slist_next(node)) {
+- const gchar *dir = node->data;
+- gchar *device_type;
+- gchar *device_type_key;
+-
+- device_type_key = gconf_concat_dir_and_key(dir, GPDS_GCONF_DEVICE_TYPE_KEY);
+- device_type = gconf_client_get_string(gconf, device_type_key, NULL);
+- if (device_type) {
+- GpdsXInputPointerInfo *info;
+- gchar *device_name, *unescaped_device_name;
+-
+- device_name = g_path_get_basename(dir);
+- unescaped_device_name = gconf_unescape_key(device_name, -1);
+- info = gpds_xinput_pointer_info_new(unescaped_device_name, device_type);
+- infos = g_list_prepend(infos, info);
+- g_free(unescaped_device_name);
+- g_free(device_name);
++ GList *node;
++
++ for (node = plugin->managers; node; node = g_list_next(node)) {
++ GsdPointingDeviceManager *manager = node->data;
++
++ if (g_str_equal(gsd_pointing_device_manager_get_device_name(manager), device_name))
++ return TRUE;
++ }
++
++ return FALSE;
++}
++
++static GdkFilterReturn
++device_presence_filter (GdkXEvent *xevent,
++ GdkEvent *event,
++ gpointer data)
++{
++ XEvent *xev = (XEvent *)xevent;
++ XEventClass class_presence;
++ int xi_presence;
++ GsdPointingDevicePlugin *plugin = GSD_POINTING_DEVICE_PLUGIN(data);
++
++ DevicePresence(gdk_x11_get_default_xdisplay(), xi_presence, class_presence);
++
++ if (xev->type == xi_presence) {
++ XDeviceInfo *device_info = NULL;
++ XDevicePresenceNotifyEvent *notify_event = (XDevicePresenceNotifyEvent *)xev;
++
++ device_info = gpds_xinput_utils_get_device_info_from_id(notify_event->deviceid, NULL);
++ if (notify_event->devchange == DeviceEnabled) {
++ GsdPointingDeviceManager *manager;
++
++ if (has_manager(plugin, device_info->name))
++ return GDK_FILTER_CONTINUE;
++
++ manager = gsd_pointing_device_manager_new(gdk_x11_get_xatom_name(device_info->type),
++ device_info->name);
++ if (manager) {
++ gsd_pointing_device_manager_start(manager, NULL);
++ plugin->managers = g_list_prepend(plugin->managers, manager);
++ }
++ } else if (notify_event->devchange == DeviceRemoved) {
+ }
++ }
+
+- g_free(device_type_key);
+- g_free(device_type);
++ return GDK_FILTER_CONTINUE;
++}
++
++static void
++add_device_presence_filter (GsdPointingDevicePlugin *plugin)
++{
++ Display *display;
++ XEventClass class_presence;
++ gint xi_presence;
++
++ gint op_code, event, error;
++
++ if (!XQueryExtension(GDK_DISPLAY(),
++ "XInputExtension",
++ &op_code,
++ &event,
++ &error)) {
++ return;
+ }
+
+- g_slist_foreach(dirs, (GFunc)g_free, NULL);
+- g_slist_free(dirs);
+- g_object_unref(gconf);
++ display = gdk_x11_get_default_xdisplay();
+
+- return infos;
++ gdk_error_trap_push();
++ DevicePresence(display, xi_presence, class_presence);
++ XSelectExtensionEvent(display,
++ RootWindow(display, DefaultScreen(display)),
++ &class_presence, 1);
++ gdk_flush();
++ if (!gdk_error_trap_pop())
++ gdk_window_add_filter(NULL, device_presence_filter, plugin);
++}
++
++static void
++remove_device_presence_filter (GsdPointingDevicePlugin *plugin)
++{
++ gdk_window_remove_filter(NULL, device_presence_filter, plugin);
+ }
+
+ static void
+@@ -109,7 +158,10 @@ activate (GnomeSettingsPlugin *plugin)
+
+ pointing_device_plugin = GSD_POINTING_DEVICE_PLUGIN(plugin);
+
+- pointer_device_infos = collect_pointer_device_infos_from_gconf();
++ add_device_presence_filter(pointing_device_plugin);
++
++ pointer_device_infos = gpds_xinput_utils_collect_pointer_infos();
++
+ for (node = pointer_device_infos; node; node = g_list_next(node)) {
+ GsdPointingDeviceManager *manager;
+ GpdsXInputPointerInfo *info = node->data;
+@@ -133,6 +185,8 @@ stop_all_managers (GsdPointingDevicePlugin *plugin)
+ {
+ GList *node;
+
++ remove_device_presence_filter(plugin);
++
+ for (node = plugin->managers; node; node = g_list_next(node)) {
+ GsdPointingDeviceManager *manager = node->data;
+
+diff --git a/src/gpds-xinput-utils.c b/src/gpds-xinput-utils.c
+index 48dc2a5..0f7ceea 100644
+--- a/src/gpds-xinput-utils.c
++++ b/src/gpds-xinput-utils.c
+@@ -62,6 +62,33 @@ gpds_xinput_utils_get_device_info (const gchar *device_name, GError **error)
+ return NULL;
+ }
+
++XDeviceInfo *
++gpds_xinput_utils_get_device_info_from_id (XID id, GError **error)
++{
++ XDeviceInfo *device_infos;
++ gint i, n_device_infos;
++
++ device_infos = XListInputDevices(GDK_DISPLAY(), &n_device_infos);
++
++ for (i = 0; i < n_device_infos; i++) {
++ if (device_infos[i].use != IsXExtensionPointer)
++ continue;
++ if (device_infos[i].id == id) {
++ XFreeDeviceList(device_infos);
++ return &device_infos[i];
++ }
++ }
++
++ XFreeDeviceList(device_infos);
++
++ g_set_error(error,
++ GPDS_XINPUT_UTILS_ERROR,
++ GPDS_XINPUT_UTILS_ERROR_NO_DEVICE,
++ _("No device found for %d."), (int)id);
++
++ return NULL;
++}
++
+ gshort
+ gpds_xinput_utils_get_device_num_buttons (const gchar *device_name, GError **error)
+ {
+diff --git a/src/gpds-xinput-utils.h b/src/gpds-xinput-utils.h
+index 9cc4564..74e491a 100644
+--- a/src/gpds-xinput-utils.h
++++ b/src/gpds-xinput-utils.h
+@@ -38,6 +38,8 @@ typedef enum
+ GQuark gpds_xinput_utils_error_quark (void);
+ XDeviceInfo *gpds_xinput_utils_get_device_info (const gchar *device_name,
+ GError **error);
++XDeviceInfo *gpds_xinput_utils_get_device_info_from_id (XID id,
++ GError **error);
+ XDevice *gpds_xinput_utils_open_device (const gchar *device_name, GError **error);
+ Atom gpds_xinput_utils_get_float_atom (GError **error);
+ gshort gpds_xinput_utils_get_device_num_buttons (const gchar *device_name, GError **error);
+diff --git a/test/test-xinput-utils.c b/test/test-xinput-utils.c
+index 29b3f4e..a06dcbc 100644
+--- a/test/test-xinput-utils.c
++++ b/test/test-xinput-utils.c
+@@ -6,6 +6,7 @@
+ void test_exist_device (void);
+ void test_get_float_atom (void);
+ void test_get_device_info (void);
++void test_get_device_info_from_id (void);
+ void test_open_device (void);
+ void test_open_no_device (void);
+ void test_get_device_num_buttons (void);
+@@ -49,7 +50,7 @@ test_get_float_atom (void)
+ void
+ test_get_device_info (void)
+ {
+- XDeviceInfo *device_info = NULL;
++ XDeviceInfo *device_info = NULL;
+ device_info = gpds_xinput_utils_get_device_info(DEVICE_NAME, &error);
+ cut_assert(device_info);
+
+@@ -57,6 +58,19 @@ test_get_device_info (void)
+ }
+
+ void
++test_get_device_info_from_id (void)
++{
++ XDeviceInfo *device_info = NULL;
++ device_info = gpds_xinput_utils_get_device_info(DEVICE_NAME, &error);
++ cut_assert(device_info);
++
++ gcut_assert_error(error);
++
++ device_info = gpds_xinput_utils_get_device_info_from_id(device_info->id, &error);
++ cut_assert_equal_string(DEVICE_NAME, device_info->name);
++}
++
++void
+ test_open_device (void)
+ {
+ device = gpds_xinput_utils_open_device(DEVICE_NAME, &error);