[PATCH 17/19] xfree86: Fix xf86 backend-specific input initialization

Peter Hutterer peter.hutterer at who-t.net
Thu Jul 29 23:21:33 PDT 2010


From: Simon Thum <simon.thum at gmx.de>

Instead of shoving it in rather unrelated places, move acceleration init
into xf86NewInputDevice.

Caveat: It's not clear atm how relevant other callers of ActivateDevice
(like OpenDevice) actually are.

Signed-off-by: Simon Thum <simon.thum at gmx.de>
Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
 hw/xfree86/common/xf86Xinput.c |   27 ++++++++++++++++++++++++---
 1 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index a6b0b58..ea82638 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -93,6 +93,9 @@
 
 EventListPtr xf86Events = NULL;
 
+static int
+xf86InputDevicePostInit(DeviceIntPtr dev);
+
 /**
  * Eval config and modify DeviceVelocityRec accordingly
  */
@@ -782,6 +785,19 @@ xf86DeleteInput(InputInfoPtr pInp, int flags)
     free(pInp);
 }
 
+/*
+ * Apply backend-specific initialization. Invoked after ActiveteDevice(),
+ * i.e. after the driver successfully completed DEVICE_INIT and the device
+ * is advertised.
+ * @param dev the device
+ * @return Success or an error code
+ */
+static int
+xf86InputDevicePostInit(DeviceIntPtr dev) {
+    ApplyAccelerationSettings(dev);
+    return Success;
+}
+
 /**
  * Create a new input device, activate and enable it.
  *
@@ -851,6 +867,14 @@ xf86NewInputDevice(IDevPtr idev, DeviceIntPtr *pdev, BOOL enable)
         goto unwind;
     }
 
+    rval = xf86InputDevicePostInit(dev);
+    if (rval != Success)
+    {
+	xf86Msg(X_ERROR, "Couldn't post-init device \"%s\"\n", idev->identifier);
+	RemoveDevice(dev, TRUE);
+	goto unwind;
+    }
+
     /* Enable it if it's properly initialised and we're currently in the VT */
     if (enable && dev->inited && dev->startup && xf86Screens[0]->vtSema)
     {
@@ -1361,9 +1385,6 @@ xf86InitValuatorDefaults(DeviceIntPtr dev, int axnum)
 	dev->valuator->axisVal[1] = screenInfo.screens[0]->height / 2;
         dev->last.valuators[1] = dev->valuator->axisVal[1];
     }
-
-    if(axnum == 0)  /* to prevent double invocation */
-	ApplyAccelerationSettings(dev);
 }
 
 
-- 
1.7.2



More information about the xorg-devel mailing list