summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2010-07-22 09:09:10 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2010-09-01 15:26:46 +1000
commit31c71425ac13a7f554316356691a79175ea82a67 (patch)
treea25ca0632a4e52f112b79b9f8c45ee2caad8ac1a
parentde0cc5a72deb7c477e368aa4fe9a713788d7ae4c (diff)
config: expose config_info as an input option.
config_info is the only reliable indicator we have in the server for duplicate devices (drivers can test for maj/min on fds as well). Don't set this after the device has been initialized but assume it's important enough to set during NIDR. This makes the option "config_info" available to the drivers as well. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Daniel Stone <daniel@fooishbar.org>
-rw-r--r--config/hal.c6
-rw-r--r--config/udev.c7
-rw-r--r--hw/xfree86/common/xf86Xinput.c1
3 files changed, 4 insertions, 10 deletions
diff --git a/config/hal.c b/config/hal.c
index b70488bf3..6e2850cf7 100644
--- a/config/hal.c
+++ b/config/hal.c
@@ -376,6 +376,7 @@ device_added(LibHalContext *hal_ctx, const char *udi)
add_option(&options, "xkb_model", xkb_opts.model);
if (xkb_opts.options)
add_option(&options, "xkb_options", xkb_opts.options);
+ add_option(&options, "config_info", config_info);
/* this isn't an error, but how else do you output something that the user can see? */
LogMessage(X_INFO, "config/hal: Adding input device %s\n", name);
@@ -385,11 +386,6 @@ device_added(LibHalContext *hal_ctx, const char *udi)
goto unwind;
}
- for (; dev; dev = dev->next){
- free(dev->config_info);
- dev->config_info = strdup(config_info);
- }
-
unwind:
if (set)
libhal_free_property_set(set);
diff --git a/config/udev.c b/config/udev.c
index 993449075..cd46eec48 100644
--- a/config/udev.c
+++ b/config/udev.c
@@ -189,17 +189,14 @@ device_added(struct udev_device *udev_device)
}
}
+ add_option(&options, "config_info", config_info);
+
LogMessage(X_INFO, "config/udev: Adding input device %s (%s)\n",
name, path);
rc = NewInputDeviceRequest(options, &attrs, &dev);
if (rc != Success)
goto unwind;
- for (; dev; dev = dev->next) {
- free(dev->config_info);
- dev->config_info = strdup(config_info);
- }
-
unwind:
free(config_info);
while (!dev && (tmpo = options)) {
diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index cc8b96878..8fd35e66e 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -353,6 +353,7 @@ xf86ActivateDevice(LocalDevicePtr local)
dev->deviceGrab.ActivateGrab = ActivateKeyboardGrab;
dev->deviceGrab.DeactivateGrab = DeactivateKeyboardGrab;
+ dev->config_info = xf86SetStrOption(local->options, "config_info", NULL);
RegisterOtherDevice(dev);
XkbSetExtension(dev, ProcessKeyboardEvent);