summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@euromail.se>2008-11-07 01:02:42 +0100
committerHenrik Rydberg <rydberg@euromail.se>2008-11-07 01:02:42 +0100
commit1b7ca2f46db7ba5d5277e52283325eae24e44d28 (patch)
tree3e82de2a8ce0e919e2c3cc3c65a951a3cc706a3d /src
parent8331c4858987bce53afac9c06ab45808fd751dbd (diff)
safe wrap-around
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'src')
-rw-r--r--src/state.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/state.c b/src/state.c
index eff9c3e..e5ca1c1 100644
--- a/src/state.c
+++ b/src/state.c
@@ -1,5 +1,6 @@
1#include "state.h" 1#include "state.h"
2#include <stdlib.h> 2#include <stdlib.h>
3#include <limits.h>
3 4
4/******************************************************/ 5/******************************************************/
5 6
@@ -75,6 +76,13 @@ void modify_state(struct State *s,
75 /* sort fingers in touching order */ 76 /* sort fingers in touching order */
76 qsort(s->finger, s->nfinger, sizeof(struct FingerState), fincmp); 77 qsort(s->finger, s->nfinger, sizeof(struct FingerState), fincmp);
77 78
79 /* make sure wrap-around does not create very strange effects */
80 if (s->lastid > INT_MAX / 2) {
81 s->lastid = 0;
82 for (j = 0; j < s->nfinger; j++)
83 s->finger[j].id = ++s->lastid;
84 }
85
78 /* copy buttons */ 86 /* copy buttons */
79 for (i = 0; i < DIM_BUTTON; i++) 87 for (i = 0; i < DIM_BUTTON; i++)
80 s->button[i] = hw->button[i]; 88 s->button[i] = hw->button[i];