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