xserver: Branch 'input-hotplug' - 5 commits

Daniel Stone daniels at kemper.freedesktop.org
Mon Aug 7 21:12:45 EEST 2006


 dix/events.c            |    2 +-
 hw/kdrive/ephyr/ephyr.c |    1 -
 hw/kdrive/src/kdrive.h  |    4 ++--
 hw/kdrive/src/kinfo.c   |    4 ++++
 hw/kdrive/src/kinput.c  |   42 ------------------------------------------
 5 files changed, 7 insertions(+), 46 deletions(-)

New commits:
diff-tree baf93b3abe1e88d82ee6a3d6939f50f96ded271a (from ccb53340b66a778abf10182fd88a7d699207fb84)
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Mon Aug 7 21:12:45 2006 +0300

    kdrive: move map initialisation to KdNewPointer
    Do a linear n -> n initialisation on the map up until KD_MAX_BUTTON in
    KdNewPointer, moving it out of both KdParsePointer, and KdPointerProc.
    Also remove dead pointer acceleration code.

diff --git a/hw/kdrive/src/kinfo.c b/hw/kdrive/src/kinfo.c
index 1d81ed3..1e03ac8 100644
--- a/hw/kdrive/src/kinfo.c
+++ b/hw/kdrive/src/kinfo.c
@@ -117,6 +117,7 @@ KdPointerInfo *
 KdNewPointer (void)
 {
     KdPointerInfo *pi;
+    int i;
 
     pi = (KdPointerInfo *)xcalloc(1, sizeof(KdPointerInfo));
     if (!pi)
@@ -130,6 +131,9 @@ KdNewPointer (void)
     pi->next = NULL;
     pi->options = NULL;
     pi->nAxes = 3;
+    pi->nButtons = KD_MAX_BUTTON;
+    for (i = 1; i < KD_MAX_BUTTON; i++)
+        pi->map[i] = i;
 
     return pi;
 }
diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index e8a00dc..1718fda 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -433,9 +433,6 @@ KdPointerProc(DeviceIntPtr pDevice, int 
             return BadImplementation;
         }
 
-	for (i = 1; i <= pi->nButtons; i++)
-	    pi->map[i] = i; 
-
         if ((*pi->driver->Init) (pi) != Success) {
             return !Success;
         }
@@ -1156,9 +1153,6 @@ KdParsePointer (char *arg)
     pi->nButtons = 3;
     pi->inputClass = KD_MOUSE;
 
-    for (i = 0; i < KD_MAX_BUTTON; i++)
-        pi->map[i] = i + 1;
-
     if (!arg)
     {
         ErrorF("mouse: no arg\n");
@@ -1967,39 +1961,6 @@ KdEnqueueKeyboardEvent(KdKeyboardInfo   
  * passed off to MI for enqueueing.
  */
 
-static void
-KdMouseAccelerate (KdPointerInfo *pi, int *dx, int *dy)
-{
-    DeviceIntPtr device = pi->dixdev;
-    PtrCtrl *pCtrl = &device->ptrfeed->ctrl;
-    double  speed = sqrt (*dx * *dx + *dy * *dy);
-    double  accel;
-#ifdef QUADRATIC_ACCELERATION
-    double  m;
-
-    /*
-     * Ok, so we want it moving num/den times faster at threshold*2
-     *
-     * accel = m *threshold + b
-     * 1 = m * 0 + b	-> b = 1
-     *
-     * num/den = m * (threshold * 2) + 1
-     *
-     * num / den - 1 = m * threshold * 2
-     * (num / den - 1) / threshold * 2 = m
-     */
-    m = (((double) pCtrl->num / (double) pCtrl->den - 1.0) / 
-	 ((double) pCtrl->threshold * 2.0));
-    accel = m * speed + 1;
-#else
-    accel = 1.0;
-    if (speed > pCtrl->threshold)
-	accel = (double) pCtrl->num / pCtrl->den;
-#endif
-    *dx = accel * *dx;
-    *dy = accel * *dy;
-}
-
 /* FIXME do something a little more clever to deal with multiple axes here */
 void
 KdEnqueuePointerEvent(KdPointerInfo *pi, unsigned long flags, int rx, int ry,
@@ -2028,9 +1989,6 @@ KdEnqueuePointerEvent(KdPointerInfo *pi,
 	    x = rx;
 	    y = ry;
 	}
-        /* screw this, use the DIX's acceleration (stolen from XFree86)
-         * instead.
-         * KdMouseAccelerate (pi, &x, &y); */
     }
     else {
 	if (pi->transformCoordinates) {
diff-tree ccb53340b66a778abf10182fd88a7d699207fb84 (from d1c18af27e0aed73104743afb4bf4b8d3d1186cf)
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Mon Aug 7 21:12:00 2006 +0300

    ephyr: cleanup
    Remove extraneous KdAddPointerDriver call.

diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index 86a072d..d3c9bf9 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -866,7 +866,6 @@ MouseInit (KdPointerInfo *pi)
     pi->nAxes = 3;
     pi->nButtons = 32;
     ephyrMouse = pi;
-    KdAddPointerDriver(&EphyrMouseDriver);
     return Success;
 }
 
diff-tree d1c18af27e0aed73104743afb4bf4b8d3d1186cf (from 9b7ecbd1dd8d092221897e29c85f3306c7367716)
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Mon Aug 7 21:11:38 2006 +0300

    GPE: use button map for DBP/DBR, not just BP/BR
    Make sure we use the button map for extended events, not just core.

diff --git a/dix/events.c b/dix/events.c
index f87e850..002b47d 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -5044,7 +5044,7 @@ GetPointerEvents(xEvent **xE, DeviceIntP
 #ifdef DEBUG
         ErrorF("GPE: detail is %d\n", buttons);
 #endif
-        kbp->detail = buttons;
+        kbp->detail = pDev->button->map[buttons];
     }
 
     if (num_valuators > 2 && (type == MotionNotify ||
diff-tree 9b7ecbd1dd8d092221897e29c85f3306c7367716 (from eb6e8d4042252b13328dbb122e0e6186796a80ac)
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Mon Aug 7 21:09:32 2006 +0300

    kdrive: prevent overrun in map
    We actually need n + 1 elements for the mouse button map, not n.

diff --git a/hw/kdrive/src/kdrive.h b/hw/kdrive/src/kdrive.h
index c9405b1..7e8712c 100644
--- a/hw/kdrive/src/kdrive.h
+++ b/hw/kdrive/src/kdrive.h
@@ -258,7 +258,7 @@ struct _KdPointerInfo {
     InputOption           *options;
     int                   inputClass;
 
-    CARD8                 map[KD_MAX_BUTTON];
+    CARD8                 map[KD_MAX_BUTTON + 1];
     int                   nButtons;
     int                   nAxes;
 
diff-tree eb6e8d4042252b13328dbb122e0e6186796a80ac (from afcad4ad99bbfc8bdcd0f4fdd70e072108410d30)
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Mon Aug 7 21:05:37 2006 +0300

    kdrive: increase maximum number of buttons
    Increase KD_MAX_BUTTONS to 32.

diff --git a/hw/kdrive/src/kdrive.h b/hw/kdrive/src/kdrive.h
index 843f921..c9405b1 100644
--- a/hw/kdrive/src/kdrive.h
+++ b/hw/kdrive/src/kdrive.h
@@ -234,7 +234,7 @@ typedef enum _kdPointerState {
     num_input_states
 } KdPointerState;
 
-#define KD_MAX_BUTTON  16
+#define KD_MAX_BUTTON  32
 
 #define KD_KEYBOARD 1
 #define KD_MOUSE 2



More information about the xorg-commit mailing list