diff options
author | Chase Douglas <chase.douglas@canonical.com> | 2012-02-07 15:35:03 -0800 |
---|---|---|
committer | Chase Douglas <chase.douglas@canonical.com> | 2012-02-10 13:20:48 -0800 |
commit | 7bcbf8eb110b1f7c6c085d3dcd69f66b00df2b8a (patch) | |
tree | 667098e4cd37d0f4e09b0de3364fec04e8496319 | |
parent | a78d55d021c9cd3be6501760d6fca3464ea6dec8 (diff) |
Allocate SynapticsPrivate.comm->hwState
This is needed for when SynapticsHwState can't be allocated on the stack.
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r-- | src/alpscomm.c | 2 | ||||
-rw-r--r-- | src/eventcomm.c | 2 | ||||
-rw-r--r-- | src/ps2comm.c | 2 | ||||
-rw-r--r-- | src/synaptics.c | 3 | ||||
-rw-r--r-- | src/synproto.h | 2 | ||||
-rw-r--r-- | test/eventcomm-test.c | 4 |
6 files changed, 11 insertions, 4 deletions
diff --git a/src/alpscomm.c b/src/alpscomm.c index 7ae2da1..dbc3554 100644 --- a/src/alpscomm.c +++ b/src/alpscomm.c @@ -211,7 +211,7 @@ ALPSReadHwState(InputInfoPtr pInfo, struct CommData *comm, struct SynapticsHwState *hwRet) { unsigned char *buf = comm->protoBuf; - struct SynapticsHwState *hw = &(comm->hwState); + struct SynapticsHwState *hw = comm->hwState; if (!ALPS_get_packet(comm, pInfo)) return FALSE; diff --git a/src/eventcomm.c b/src/eventcomm.c index d7d1f86..e494d4c 100644 --- a/src/eventcomm.c +++ b/src/eventcomm.c @@ -708,7 +708,7 @@ EventReadHwState(InputInfoPtr pInfo, { struct input_event ev; Bool v; - struct SynapticsHwState *hw = &(comm->hwState); + struct SynapticsHwState *hw = comm->hwState; SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private; SynapticsParameters *para = &priv->synpara; diff --git a/src/ps2comm.c b/src/ps2comm.c index b7995ee..74bd937 100644 --- a/src/ps2comm.c +++ b/src/ps2comm.c @@ -521,7 +521,7 @@ PS2ReadHwStateProto(InputInfoPtr pInfo, struct CommData *comm, struct SynapticsHwState *hwRet) { unsigned char *buf = comm->protoBuf; - struct SynapticsHwState *hw = &(comm->hwState); + struct SynapticsHwState *hw = comm->hwState; SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private; SynapticsParameters *para = &priv->synpara; struct PS2SynapticsHwInfo *synhw; diff --git a/src/synaptics.c b/src/synaptics.c index e7deb9b..8f0ad9b 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -935,6 +935,7 @@ DeviceClose(DeviceIntPtr dev) priv->timer = NULL; free_shm_data(priv); SynapticsHwStateFree(&priv->local_hw_state); + SynapticsHwStateFree(&priv->comm.hwState); return RetValue; } @@ -1184,6 +1185,8 @@ no_touch: if (!priv->local_hw_state) return !Success; + priv->comm.hwState = SynapticsHwStateAlloc(priv); + if (!alloc_shm_data(pInfo)) { free(priv->local_hw_state); diff --git a/src/synproto.h b/src/synproto.h index 3f09bb2..74becca 100644 --- a/src/synproto.h +++ b/src/synproto.h @@ -64,7 +64,7 @@ struct CommData { int protoBufTail; /* Used for keeping track of partial HwState updates. */ - struct SynapticsHwState hwState; + struct SynapticsHwState *hwState; Bool oneFinger; Bool twoFingers; Bool threeFingers; diff --git a/test/eventcomm-test.c b/test/eventcomm-test.c index 920d6ec..92397d6 100644 --- a/test/eventcomm-test.c +++ b/test/eventcomm-test.c @@ -57,9 +57,11 @@ static void reset_data(struct SynapticsHwState **hw, struct CommData *comm, SynapticsPrivate *priv) { + SynapticsHwStateFree(&comm->hwState); memset(comm, 0, sizeof(struct CommData)); SynapticsHwStateFree(hw); *hw = SynapticsHwStateAlloc(priv); + comm->hwState = SynapticsHwStateAlloc(priv); } /** @@ -190,6 +192,7 @@ test_read_hw_state(void) free(private.proto_data); SynapticsHwStateFree(&hw); + SynapticsHwStateFree(&comm.hwState); } static Bool @@ -315,6 +318,7 @@ test_ignore_hw_state(void) free(private.proto_data); SynapticsHwStateFree(&hw); SynapticsHwStateFree(&hw_zero); + SynapticsHwStateFree(&comm.hwState); } int main (int argc, char **argv) |