diff options
author | Henrik Rydberg <rydberg@euromail.se> | 2008-11-07 01:02:42 +0100 |
---|---|---|
committer | Henrik Rydberg <rydberg@euromail.se> | 2008-11-07 01:02:42 +0100 |
commit | 1b7ca2f46db7ba5d5277e52283325eae24e44d28 (patch) | |
tree | 3e82de2a8ce0e919e2c3cc3c65a951a3cc706a3d | |
parent | 8331c4858987bce53afac9c06ab45808fd751dbd (diff) | |
download | xorg-input-kobomultitouch-1b7ca2f46db7ba5d5277e52283325eae24e44d28.tar.gz xorg-input-kobomultitouch-1b7ca2f46db7ba5d5277e52283325eae24e44d28.tar.bz2 xorg-input-kobomultitouch-1b7ca2f46db7ba5d5277e52283325eae24e44d28.zip |
safe wrap-around
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
-rw-r--r-- | src/state.c | 8 |
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 @@ #include "state.h" #include <stdlib.h> +#include <limits.h> /******************************************************/ @@ -75,6 +76,13 @@ void modify_state(struct State *s, /* sort fingers in touching order */ qsort(s->finger, s->nfinger, sizeof(struct FingerState), fincmp); + /* make sure wrap-around does not create very strange effects */ + if (s->lastid > INT_MAX / 2) { + s->lastid = 0; + for (j = 0; j < s->nfinger; j++) + s->finger[j].id = ++s->lastid; + } + /* copy buttons */ for (i = 0; i < DIM_BUTTON; i++) s->button[i] = hw->button[i]; |