aboutsummaryrefslogtreecommitdiffstats
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
parent8331c4858987bce53afac9c06ab45808fd751dbd (diff)
downloadxorg-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.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 @@
#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];