dix: get rid of the now-superfluous valuator arrays in GPE and friends.

The valuators are stored inside the mask, use it from there. are stored
inside the mask, use it from there. are stored inside the mask, use it from
there. are stored inside the mask, use it from there.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
This commit is contained in:
Peter Hutterer 2010-10-18 15:55:53 +10:00
parent 675f4a8525
commit 0418a39e71

View File

@ -185,8 +185,7 @@ init_raw(DeviceIntPtr dev, RawDeviceEvent *event, Time ms, int type, int detail)
} }
static void static void
set_raw_valuators(RawDeviceEvent *event, ValuatorMask *mask, int *valuators, set_raw_valuators(RawDeviceEvent *event, ValuatorMask *mask, int32_t* data)
int32_t* data)
{ {
int i; int i;
@ -195,15 +194,14 @@ set_raw_valuators(RawDeviceEvent *event, ValuatorMask *mask, int *valuators,
if (valuator_mask_isset(mask, i)) if (valuator_mask_isset(mask, i))
{ {
SetBit(event->valuators.mask, i); SetBit(event->valuators.mask, i);
data[i] = valuators[i]; data[i] = valuator_mask_get(mask, i);
} }
} }
} }
static void static void
set_valuators(DeviceIntPtr dev, DeviceEvent* event, ValuatorMask *mask, set_valuators(DeviceIntPtr dev, DeviceEvent* event, ValuatorMask *mask)
int *valuators)
{ {
int i; int i;
@ -214,7 +212,7 @@ set_valuators(DeviceIntPtr dev, DeviceEvent* event, ValuatorMask *mask,
SetBit(event->valuators.mask, i); SetBit(event->valuators.mask, i);
if (dev->valuator->mode == Absolute) if (dev->valuator->mode == Absolute)
SetBit(event->valuators.mode, i); SetBit(event->valuators.mode, i);
event->valuators.data[i] = valuators[i]; event->valuators.data[i] = valuator_mask_get(mask, i);
event->valuators.data_frac[i] = event->valuators.data_frac[i] =
dev->last.remainder[i] * (1 << 16) * (1 << 16); dev->last.remainder[i] * (1 << 16) * (1 << 16);
} }
@ -648,13 +646,17 @@ clipAxis(DeviceIntPtr pDev, int axisNum, int *val)
* Clip every axis in the list of valuators to its bounds. * Clip every axis in the list of valuators to its bounds.
*/ */
static void static void
clipValuators(DeviceIntPtr pDev, ValuatorMask *mask, int *valuators) clipValuators(DeviceIntPtr pDev, ValuatorMask *mask)
{ {
int i; int i;
for (i = 0; i < valuator_mask_size(mask); i++) for (i = 0; i < valuator_mask_size(mask); i++)
if (valuator_mask_isset(mask, i)) if (valuator_mask_isset(mask, i))
clipAxis(pDev, i, &(valuators[i])); {
int val = valuator_mask_get(mask, i);
clipAxis(pDev, i, &val);
valuator_mask_set(mask, i, val);
}
} }
/** /**
@ -702,18 +704,17 @@ UpdateFromMaster(EventListPtr events, DeviceIntPtr dev, int type, int *num_event
* @first+@num. * @first+@num.
*/ */
static void static void
moveAbsolute(DeviceIntPtr dev, int *x, int *y, moveAbsolute(DeviceIntPtr dev, int *x, int *y, ValuatorMask *mask)
const ValuatorMask *mask, int *valuators)
{ {
int i; int i;
if (valuator_mask_isset(mask, 0)) if (valuator_mask_isset(mask, 0))
*x = *(valuators + 0); *x = valuator_mask_get(mask, 0);
else else
*x = dev->last.valuators[0]; *x = dev->last.valuators[0];
if (valuator_mask_isset(mask, 1)) if (valuator_mask_isset(mask, 1))
*y = *(valuators + 1); *y = valuator_mask_get(mask, 1);
else else
*y = dev->last.valuators[1]; *y = dev->last.valuators[1];
@ -724,7 +725,7 @@ moveAbsolute(DeviceIntPtr dev, int *x, int *y,
{ {
if (valuator_mask_isset(mask, i)) if (valuator_mask_isset(mask, i))
{ {
dev->last.valuators[i] = valuators[i]; dev->last.valuators[i] = valuator_mask_get(mask, i);
clipAxis(dev, i, &dev->last.valuators[i]); clipAxis(dev, i, &dev->last.valuators[i]);
} }
} }
@ -741,8 +742,7 @@ moveAbsolute(DeviceIntPtr dev, int *x, int *y,
* @first+@num. * @first+@num.
*/ */
static void static void
moveRelative(DeviceIntPtr dev, int *x, int *y, moveRelative(DeviceIntPtr dev, int *x, int *y, ValuatorMask *mask)
ValuatorMask *mask, int *valuators)
{ {
int i; int i;
@ -750,10 +750,10 @@ moveRelative(DeviceIntPtr dev, int *x, int *y,
*y = dev->last.valuators[1]; *y = dev->last.valuators[1];
if (valuator_mask_isset(mask, 0)) if (valuator_mask_isset(mask, 0))
*x += *(valuators +0); *x += valuator_mask_get(mask, 0);
if (valuator_mask_bit_isset(mask, 1)) if (valuator_mask_isset(mask, 1))
*y += *(valuators + 1); *y += valuator_mask_get(mask, 1);
/* if attached, clip both x and y to the defined limits (usually /* if attached, clip both x and y to the defined limits (usually
* co-ord space limit). If it is attached, we need x/y to go over the * co-ord space limit). If it is attached, we need x/y to go over the
@ -768,10 +768,10 @@ moveRelative(DeviceIntPtr dev, int *x, int *y,
{ {
if (valuator_mask_isset(mask, i)) if (valuator_mask_isset(mask, i))
{ {
dev->last.valuators[i] += valuators[i]; dev->last.valuators[i] += valuator_mask_get(mask, i);
if (dev->valuator->mode == Absolute) if (dev->valuator->mode == Absolute)
clipAxis(dev, i, &dev->last.valuators[i]); clipAxis(dev, i, &dev->last.valuators[i]);
valuators[i] = dev->last.valuators[i]; valuator_mask_set(mask, i, dev->last.valuators[i]);
} }
} }
} }
@ -938,7 +938,6 @@ GetKeyboardValuatorEvents(EventList *events, DeviceIntPtr pDev, int type,
DeviceEvent *event; DeviceEvent *event;
RawDeviceEvent *raw; RawDeviceEvent *raw;
ValuatorMask mask; ValuatorMask mask;
int valuators[MAX_VALUATORS];
/* refuse events from disabled devices */ /* refuse events from disabled devices */
if (!pDev->enabled) if (!pDev->enabled)
@ -971,15 +970,12 @@ GetKeyboardValuatorEvents(EventList *events, DeviceIntPtr pDev, int type,
valuator_mask_copy(&mask, mask_in); valuator_mask_copy(&mask, mask_in);
if (valuator_mask_size(&mask) > 0)
valuator_mask_copy_valuators(&mask, valuators);
init_raw(pDev, raw, ms, type, key_code); init_raw(pDev, raw, ms, type, key_code);
set_raw_valuators(raw, &mask, valuators, raw->valuators.data_raw); set_raw_valuators(raw, &mask, raw->valuators.data_raw);
clipValuators(pDev, &mask, valuators); clipValuators(pDev, &mask);
set_raw_valuators(raw, &mask, valuators, raw->valuators.data); set_raw_valuators(raw, &mask, raw->valuators.data);
event = (DeviceEvent*) events->event; event = (DeviceEvent*) events->event;
init_event(pDev, event, ms); init_event(pDev, event, ms);
@ -994,9 +990,9 @@ GetKeyboardValuatorEvents(EventList *events, DeviceIntPtr pDev, int type,
set_key_up(pDev, key_code, KEY_POSTED); set_key_up(pDev, key_code, KEY_POSTED);
} }
clipValuators(pDev, &mask, valuators); clipValuators(pDev, &mask);
set_valuators(pDev, event, &mask, valuators); set_valuators(pDev, event, &mask);
return num_events; return num_events;
} }
@ -1053,19 +1049,19 @@ FreeEventList(EventListPtr list, int num_events)
} }
static void static void
transformAbsolute(DeviceIntPtr dev, int v[MAX_VALUATORS]) transformAbsolute(DeviceIntPtr dev, ValuatorMask *mask)
{ {
struct pixman_f_vector p; struct pixman_f_vector p;
/* p' = M * p in homogeneous coordinates */ /* p' = M * p in homogeneous coordinates */
p.v[0] = v[0]; p.v[0] = valuator_mask_get(mask, 0);
p.v[1] = v[1]; p.v[1] = valuator_mask_get(mask, 1);
p.v[2] = 1.0; p.v[2] = 1.0;
pixman_f_transform_point(&dev->transform, &p); pixman_f_transform_point(&dev->transform, &p);
v[0] = lround(p.v[0]); valuator_mask_set(mask, 0, lround(p.v[0]));
v[1] = lround(p.v[1]); valuator_mask_set(mask, 1, lround(p.v[1]));
} }
/** /**
@ -1099,7 +1095,6 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons,
float x_frac = 0.0, y_frac = 0.0, cx_frac, cy_frac; float x_frac = 0.0, y_frac = 0.0, cx_frac, cy_frac;
ScreenPtr scr = miPointerGetScreen(pDev); ScreenPtr scr = miPointerGetScreen(pDev);
ValuatorMask mask; ValuatorMask mask;
int valuators[MAX_VALUATORS];
/* refuse events from disabled devices */ /* refuse events from disabled devices */
if (!pDev->enabled) if (!pDev->enabled)
@ -1125,38 +1120,44 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons,
valuator_mask_copy(&mask, mask_in); valuator_mask_copy(&mask, mask_in);
if (valuator_mask_size(&mask) > 1)
valuator_mask_copy_valuators(&mask, valuators);
init_raw(pDev, raw, ms, type, buttons); init_raw(pDev, raw, ms, type, buttons);
set_raw_valuators(raw, &mask, valuators, raw->valuators.data_raw); set_raw_valuators(raw, &mask, raw->valuators.data_raw);
if (flags & POINTER_ABSOLUTE) if (flags & POINTER_ABSOLUTE)
{ {
if (flags & POINTER_SCREEN) /* valuators are in screen coords */ if (flags & POINTER_SCREEN) /* valuators are in screen coords */
{ {
int scaled;
if (valuator_mask_isset(&mask, 0)) if (valuator_mask_isset(&mask, 0))
valuators[0] = rescaleValuatorAxis(valuators[0], 0.0, &x_frac, NULL, {
pDev->valuator->axes + 0, scaled = rescaleValuatorAxis(valuator_mask_get(&mask, 0),
scr->width); 0.0, &x_frac, NULL,
pDev->valuator->axes + 0,
scr->width);
valuator_mask_set(&mask, 0, scaled);
}
if (valuator_mask_isset(&mask, 1)) if (valuator_mask_isset(&mask, 1))
valuators[1] = rescaleValuatorAxis(valuators[1], 0.0, &y_frac, NULL, {
pDev->valuator->axes + 1, scaled = rescaleValuatorAxis(valuator_mask_get(&mask, 0),
scr->height); 0.0, &y_frac, NULL,
pDev->valuator->axes + 1,
scr->height);
valuator_mask_set(&mask, 1, scaled);
}
} }
transformAbsolute(pDev, valuators); transformAbsolute(pDev, &mask);
moveAbsolute(pDev, &x, &y, &mask, valuators); moveAbsolute(pDev, &x, &y, &mask);
} else { } else {
if (flags & POINTER_ACCELERATE) { if (flags & POINTER_ACCELERATE) {
/* FIXME: Pointer acceleration only requires X and Y values. This /* FIXME: Pointer acceleration only requires X and Y values. This
* should be converted to masked valuators. */ * should be converted to masked valuators. */
int vals[2]; int vals[2];
vals[0] = valuator_mask_isset(&mask, 0) ? vals[0] = valuator_mask_isset(&mask, 0) ?
valuators[0] : pDev->last.valuators[0]; valuator_mask_get(&mask, 0) : pDev->last.valuators[0];
vals[1] = valuator_mask_isset(&mask, 1) ? vals[1] = valuator_mask_isset(&mask, 1) ?
valuators[1] : pDev->last.valuators[1]; valuator_mask_get(&mask, 1) : pDev->last.valuators[1];
accelPointer(pDev, 0, 2, vals, ms); accelPointer(pDev, 0, 2, vals, ms);
/* The pointer acceleration code modifies the fractional part /* The pointer acceleration code modifies the fractional part
@ -1164,21 +1165,21 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons,
x_frac = pDev->last.remainder[0]; x_frac = pDev->last.remainder[0];
y_frac = pDev->last.remainder[1]; y_frac = pDev->last.remainder[1];
} }
moveRelative(pDev, &x, &y, &mask, valuators); moveRelative(pDev, &x, &y, &mask);
} }
set_raw_valuators(raw, &mask, valuators, raw->valuators.data); set_raw_valuators(raw, &mask, raw->valuators.data);
positionSprite(pDev, &x, &y, x_frac, y_frac, scr, &cx, &cy, &cx_frac, &cy_frac); positionSprite(pDev, &x, &y, x_frac, y_frac, scr, &cx, &cy, &cx_frac, &cy_frac);
updateHistory(pDev, &mask, ms); updateHistory(pDev, &mask, ms);
/* Update the valuators with the true value sent to the client*/ /* Update the valuators with the true value sent to the client*/
if (valuator_mask_isset(&mask, 0)) if (valuator_mask_isset(&mask, 0))
valuators[0] = x; valuator_mask_set(&mask, 0, x);
if (valuator_mask_isset(&mask, 1)) if (valuator_mask_isset(&mask, 1))
valuators[1] = y; valuator_mask_set(&mask, 0, y);
clipValuators(pDev, &mask, valuators); clipValuators(pDev, &mask);
event = (DeviceEvent*) events->event; event = (DeviceEvent*) events->event;
init_event(pDev, event, ms); init_event(pDev, event, ms);
@ -1204,7 +1205,7 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons,
event->root_x_frac = cx_frac; event->root_x_frac = cx_frac;
event->root_y_frac = cy_frac; event->root_y_frac = cy_frac;
set_valuators(pDev, event, &mask, valuators); set_valuators(pDev, event, &mask);
return num_events; return num_events;
} }
@ -1223,7 +1224,6 @@ GetProximityEvents(EventList *events, DeviceIntPtr pDev, int type, const Valuato
int num_events = 1; int num_events = 1;
DeviceEvent *event; DeviceEvent *event;
ValuatorMask mask; ValuatorMask mask;
int valuators[MAX_VALUATORS];
/* refuse events from disabled devices */ /* refuse events from disabled devices */
if (!pDev->enabled) if (!pDev->enabled)
@ -1247,11 +1247,9 @@ GetProximityEvents(EventList *events, DeviceIntPtr pDev, int type, const Valuato
init_event(pDev, event, GetTimeInMillis()); init_event(pDev, event, GetTimeInMillis());
event->type = (type == ProximityIn) ? ET_ProximityIn : ET_ProximityOut; event->type = (type == ProximityIn) ? ET_ProximityIn : ET_ProximityOut;
if (valuator_mask_size(&mask) > 0) clipValuators(pDev, &mask);
valuator_mask_copy_valuators(&mask, valuators);
clipValuators(pDev, &mask, valuators);
set_valuators(pDev, event, &mask, valuators); set_valuators(pDev, event, &mask);
return num_events; return num_events;
} }