[PATCH 1/2] xfree86: Fix priority ordering for ignoring input classes

Dan Nicholson dbn.lists at gmail.com
Wed Feb 17 06:14:07 PST 2010


Commit 8736d112afb0dd61dfdaadd6378eafd200b2ef5f changed the priority
ordering of the InputClass option merging to be "last match wins". This
fixes the handling of Option "Ignore" to follow that logic.

Signed-off-by: Dan Nicholson <dbn.lists at gmail.com>
---
 hw/xfree86/common/xf86Xinput.c |   20 ++++++++++++--------
 1 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index e9f7f2f..019430c 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -623,26 +623,30 @@ MergeInputClasses(IDevPtr idev, InputAttributes *attrs)
 
     return Success;
 }
-
+/*
+ * Iterate the list of classes and look for Option "Ignore". Return the
+ * value of the last matching class and holler when returning TRUE.
+ */
 static Bool
 IgnoreInputClass(IDevPtr idev, InputAttributes *attrs)
 {
     XF86ConfInputClassPtr cl;
-    Bool ignore;
+    Bool ignore = FALSE;
+    const char *ignore_class;
 
     for (cl = xf86configptr->conf_inputclass_lst; cl; cl = cl->list.next) {
         if (!InputClassMatches(cl, attrs))
             continue;
         if (xf86findOption(cl->option_lst, "Ignore")) {
             ignore = xf86CheckBoolOption(cl->option_lst, "Ignore", FALSE);
-            if (ignore)
-                xf86Msg(X_CONFIG,
-                        "%s: Ignoring device from InputClass \"%s\"\n",
-                        idev->identifier, cl->identifier);
-            return ignore;
+            ignore_class = cl->identifier;
         }
     }
-    return FALSE;
+
+    if (ignore)
+        xf86Msg(X_CONFIG, "%s: Ignoring device from InputClass \"%s\"\n",
+                idev->identifier, ignore_class);
+    return ignore;
 }
 
 /**
-- 
1.6.6



More information about the xorg-devel mailing list