summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2011-12-09 15:49:04 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2011-12-13 13:24:57 +1000
commit10a8c428fac0d4ff8f8a3e3487c13dd349d27ed7 (patch)
tree92318a8a42678bbdb3b04692219b57dcfb055fd9
parenta15abf82ddb5a209dbc30c4d12e1dc23c4adf3e4 (diff)
dix: move storing last.valuators into a helper function
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
-rw-r--r--dix/getevents.c38
1 files changed, 26 insertions, 12 deletions
diff --git a/dix/getevents.c b/dix/getevents.c
index 8798f6418..57d8c17c6 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -1094,6 +1094,30 @@ transformAbsolute(DeviceIntPtr dev, ValuatorMask *mask)
valuator_mask_set_double(mask, 1, y);
}
+static void
+storeLastValuators(DeviceIntPtr dev, ValuatorMask *mask,
+ int xaxis, int yaxis,
+ double devx, double devy)
+{
+ int i;
+
+ /* store desktop-wide in last.valuators */
+ if (valuator_mask_isset(mask, xaxis))
+ dev->last.valuators[0] = devx;
+ if (valuator_mask_isset(mask, yaxis))
+ dev->last.valuators[1] = devy;
+
+ for (i = 0; i < valuator_mask_size(mask); i++)
+ {
+ if (i == xaxis || i == yaxis)
+ continue;
+
+ if (valuator_mask_isset(mask, i))
+ dev->last.valuators[i] = valuator_mask_get_double(mask, i);
+ }
+
+}
+
/**
* Generate internal events representing this pointer event and enqueue them
* on the event queue.
@@ -1162,7 +1186,7 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr pDev, int type,
int buttons, CARD32 ms, int flags,
const ValuatorMask *mask_in)
{
- int num_events = 1, i;
+ int num_events = 1;
DeviceEvent *event;
RawDeviceEvent *raw;
double screenx = 0.0, screeny = 0.0; /* desktop coordinate system */
@@ -1237,17 +1261,7 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr pDev, int type,
clipValuators(pDev, &mask);
- /* store desktop-wide in last.valuators */
- if (valuator_mask_isset(&mask, 0))
- pDev->last.valuators[0] = devx;
- if (valuator_mask_isset(&mask, 1))
- pDev->last.valuators[1] = devy;
-
- for (i = 2; i < valuator_mask_size(&mask); i++)
- {
- if (valuator_mask_isset(&mask, i))
- pDev->last.valuators[i] = valuator_mask_get_double(&mask, i);
- }
+ storeLastValuators(pDev, &mask, 0, 1, devx, devy);
/* Update the MD's co-ordinates, which are always in desktop space. */
if (!IsMaster(pDev) || !IsFloating(pDev)) {