[PATCH libinput 2/4] Switch vector_get_direction to use doubles
Peter Hutterer
peter.hutterer at who-t.net
Wed Mar 18 20:11:53 PDT 2015
Delta movements on most slower movements are less than 1.0 per event, so we'd
end up with an undefined direction for all of them. This led to the velocity
being calculated across opposite movements rather than (as intended) across
movements within a shared octant.
Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
src/libinput-util.h | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/src/libinput-util.h b/src/libinput-util.h
index bd71a1f..9191823 100644
--- a/src/libinput-util.h
+++ b/src/libinput-util.h
@@ -111,28 +111,28 @@ enum directions {
};
static inline int
-vector_get_direction(int dx, int dy)
+vector_get_direction(double dx, double dy)
{
int dir = UNDEFINED_DIRECTION;
int d1, d2;
double r;
- if (abs(dx) < 2 && abs(dy) < 2) {
- if (dx > 0 && dy > 0)
+ if (fabs(dx) < 2.0 && fabs(dy) < 2.0) {
+ if (dx > 0.0 && dy > 0.0)
dir = S | SE | E;
- else if (dx > 0 && dy < 0)
+ else if (dx > 0.0 && dy < 0.0)
dir = N | NE | E;
- else if (dx < 0 && dy > 0)
+ else if (dx < 0.0 && dy > 0.0)
dir = S | SW | W;
- else if (dx < 0 && dy < 0)
+ else if (dx < 0.0 && dy < 0.0)
dir = N | NW | W;
- else if (dx > 0)
+ else if (dx > 0.0)
dir = NE | E | SE;
- else if (dx < 0)
+ else if (dx < 0.0)
dir = NW | W | SW;
- else if (dy > 0)
+ else if (dy > 0.0)
dir = SE | S | SW;
- else if (dy < 0)
+ else if (dy < 0.0)
dir = NE | N | NW;
} else {
/* Calculate r within the interval [0 to 8)
--
2.3.2
More information about the wayland-devel
mailing list