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 <djku...@google.com>
---
 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

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to