xserver: Branch 'master'

Keith Packard keithp at kemper.freedesktop.org
Fri Nov 1 02:35:37 CET 2013


 hw/xfree86/common/xf86Events.c |   31 ++++++++++++++++++++++---------
 1 file changed, 22 insertions(+), 9 deletions(-)

New commits:
commit 508e05777aba823c93a2417cc26d18c9f061ca26
Author: Egbert Eich <eich at freedesktop.org>
Date:   Mon Aug 12 18:20:36 2013 +0200

    DDX/Events: Distinguish between Input- and GeneralHandlers in xf86VTSwitch()
    
    When enabling/disabling input handlers in xf86VTSwitch() we treat Input-
    and GeneralHandlers equally. The result is that after a VT switch the
    masks for EnabledDevices and AllSockets are equal and the distiction
    between both types is lost.
    
    Signed-off-by: Egbert Eich <eich at freedesktop.org>
    Reviewed-by: Daniel Stone <daniel at fooishbar.org>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
index 7a949fd..d0b1431 100644
--- a/hw/xfree86/common/xf86Events.c
+++ b/hw/xfree86/common/xf86Events.c
@@ -116,6 +116,7 @@ typedef struct x_IHRec {
     InputHandlerProc ihproc;
     pointer data;
     Bool enabled;
+    Bool is_input;
     struct x_IHRec *next;
 } IHRec, *IHPtr;
 
@@ -446,8 +447,12 @@ xf86VTSwitch(void)
          * Keep the order: Disable Device > LeaveVT
          *                        EnterVT > EnableDevice
          */
-        for (ih = InputHandlers; ih; ih = ih->next)
-            xf86DisableInputHandler(ih);
+        for (ih = InputHandlers; ih; ih = ih->next) {
+            if (ih->is_input)
+                xf86DisableInputHandler(ih);
+            else
+                xf86DisableGeneralHandler(ih);
+        }
         for (pInfo = xf86InputDevs; pInfo; pInfo = pInfo->next) {
             if (pInfo->dev) {
                 if (!pInfo->dev->enabled)
@@ -496,9 +501,12 @@ xf86VTSwitch(void)
                 pInfo->flags &= ~XI86_DEVICE_DISABLED;
                 pInfo = pInfo->next;
             }
-            for (ih = InputHandlers; ih; ih = ih->next)
-                xf86EnableInputHandler(ih);
-
+            for (ih = InputHandlers; ih; ih = ih->next) {
+                if (ih->is_input)
+                    xf86EnableInputHandler(ih);
+                else
+                    xf86EnableGeneralHandler(ih);
+            }
             OsReleaseSIGIO();
 
         }
@@ -558,9 +566,12 @@ xf86VTSwitch(void)
             pInfo = pInfo->next;
         }
 
-        for (ih = InputHandlers; ih; ih = ih->next)
-            xf86EnableInputHandler(ih);
-
+        for (ih = InputHandlers; ih; ih = ih->next) {
+            if (ih->is_input)
+                xf86EnableInputHandler(ih);
+            else
+                xf86EnableGeneralHandler(ih);
+        }
 #ifdef XSERVER_PLATFORM_BUS
         /* check for any new output devices */
         xf86platformVTProbe();
@@ -600,8 +611,10 @@ xf86AddInputHandler(int fd, InputHandlerProc proc, pointer data)
 {
     IHPtr ih = addInputHandler(fd, proc, data);
 
-    if (ih)
+    if (ih) {
         AddEnabledDevice(fd);
+        ih->is_input = TRUE;
+    }
     return ih;
 }
 


More information about the xorg-commit mailing list