libudev allows adding an efficient in-kernel filter on udev events.
Since we manually filter for ID_INPUT anyway, it seems reasonable to ask the 
kernel to send only events for the input subsystem.

This filtering is performed both for initial device enumeration, and for 
subsequent udev events.

Signed-off-by: Daniel Kurtz <[email protected]>
---
 config/udev.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/config/udev.c b/config/udev.c
index 9ac34ee..189321d 100644
--- a/config/udev.c
+++ b/config/udev.c
@@ -283,6 +283,8 @@ config_udev_init(void)
     if (!udev_monitor)
         return 0;
 
+    udev_monitor_filter_add_match_subsystem_devtype(udev_monitor, "input", 
NULL);
+
     if (udev_monitor_enable_receiving(udev_monitor)) {
         ErrorF("config/udev: failed to bind the udev monitor\n");
         return 0;
@@ -291,6 +293,7 @@ config_udev_init(void)
     enumerate = udev_enumerate_new(udev);
     if (!enumerate)
         return 0;
+    udev_enumerate_add_match_subsystem(enumerate, "input");
     udev_enumerate_scan_devices(enumerate);
     devices = udev_enumerate_get_list_entry(enumerate);
     udev_list_entry_foreach(device, devices) {
-- 
1.7.3.1

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to