summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--synaptics.c50
1 files changed, 26 insertions, 24 deletions
diff --git a/synaptics.c b/synaptics.c
index c80ad5a..3897c52 100644
--- a/synaptics.c
+++ b/synaptics.c
@@ -1285,10 +1285,11 @@ SynapticsGetHwState(LocalDevicePtr local, SynapticsPrivate *priv,
static Bool
SynapticsParseEventData(LocalDevicePtr local, SynapticsPrivate *priv,
- struct SynapticsHwState *hw)
+ struct SynapticsHwState *hwRet)
{
struct input_event ev;
Bool v;
+ struct SynapticsHwState *hw = &(priv->hwState);
while (SynapticsReadEvent(priv, &ev) == Success) {
switch (ev.type) {
@@ -1296,54 +1297,54 @@ SynapticsParseEventData(LocalDevicePtr local, SynapticsPrivate *priv,
switch (ev.code) {
case SYN_REPORT:
if (priv->oneFinger)
- priv->hwState.numFingers = 1;
+ hw->numFingers = 1;
else if (priv->twoFingers)
- priv->hwState.numFingers = 2;
+ hw->numFingers = 2;
else if (priv->threeFingers)
- priv->hwState.numFingers = 3;
+ hw->numFingers = 3;
else
- priv->hwState.numFingers = 0;
- *hw = priv->hwState;
+ hw->numFingers = 0;
+ *hwRet = *hw;
return Success;
}
case EV_KEY:
v = (ev.value ? TRUE : FALSE);
switch (ev.code) {
case BTN_LEFT:
- priv->hwState.left = v;
+ hw->left = v;
break;
case BTN_RIGHT:
- priv->hwState.right = v;
+ hw->right = v;
break;
case BTN_FORWARD:
- priv->hwState.up = v;
+ hw->up = v;
break;
case BTN_BACK:
- priv->hwState.down = v;
+ hw->down = v;
break;
case BTN_0:
- priv->hwState.multi[0] = v;
+ hw->multi[0] = v;
break;
case BTN_1:
- priv->hwState.multi[1] = v;
+ hw->multi[1] = v;
break;
case BTN_2:
- priv->hwState.multi[2] = v;
+ hw->multi[2] = v;
break;
case BTN_3:
- priv->hwState.multi[3] = v;
+ hw->multi[3] = v;
break;
case BTN_4:
- priv->hwState.multi[4] = v;
+ hw->multi[4] = v;
break;
case BTN_5:
- priv->hwState.multi[5] = v;
+ hw->multi[5] = v;
break;
case BTN_6:
- priv->hwState.multi[6] = v;
+ hw->multi[6] = v;
break;
case BTN_7:
- priv->hwState.multi[7] = v;
+ hw->multi[7] = v;
break;
case BTN_TOOL_FINGER:
priv->oneFinger = v;
@@ -1359,16 +1360,16 @@ SynapticsParseEventData(LocalDevicePtr local, SynapticsPrivate *priv,
case EV_ABS:
switch (ev.code) {
case ABS_X:
- priv->hwState.x = ev.value;
+ hw->x = ev.value;
break;
case ABS_Y:
- priv->hwState.y = ev.value;
+ hw->y = ev.value;
break;
case ABS_PRESSURE:
- priv->hwState.z = ev.value;
+ hw->z = ev.value;
break;
case ABS_TOOL_WIDTH:
- priv->hwState.fingerWidth = ev.value;
+ hw->fingerWidth = ev.value;
break;
}
break;
@@ -1395,12 +1396,13 @@ SynapticsReadEvent(SynapticsPrivate *priv, struct input_event *ev)
static Bool
SynapticsParseRawPacket(LocalDevicePtr local, SynapticsPrivate *priv,
- struct SynapticsHwState *hw)
+ struct SynapticsHwState *hwRet)
{
Bool ret = SynapticsGetPacket(local, priv);
int newabs = SYN_MODEL_NEWABS(priv->model_id);
unsigned char *buf;
int w;
+ struct SynapticsHwState *hw = &(priv->hwState);
if (ret != Success)
return ret;
@@ -1526,7 +1528,7 @@ SynapticsParseRawPacket(LocalDevicePtr local, SynapticsPrivate *priv,
}
}
- priv->hwState = *hw;
+ *hwRet = *hw;
return Success;
}