[PATCH weston 3/5] evdev: Use wl_fixed_t for relative motions
Kristian Høgsberg
hoegsberg at gmail.com
Thu May 10 13:50:55 PDT 2012
On Wed, May 09, 2012 at 11:31:44PM +0200, Jonas Ådahl wrote:
> Signed-off-by: Jonas Ådahl <jadahl at gmail.com>
I picked this one up out-of-order (not convinced about the dispatcher
idea, will reply later).
Kristian
> ---
> src/evdev-private.h | 2 +-
> src/evdev.c | 18 +++++++++++-------
> 2 files changed, 12 insertions(+), 8 deletions(-)
>
> diff --git a/src/evdev-private.h b/src/evdev-private.h
> index da4fb7e..c93f219 100644
> --- a/src/evdev-private.h
> +++ b/src/evdev-private.h
> @@ -58,7 +58,7 @@ struct evdev_input_device {
> struct mtdev *mtdev;
>
> struct {
> - int dx, dy;
> + wl_fixed_t dx, dy;
> } rel;
>
> int type; /* event type flags */
> diff --git a/src/evdev.c b/src/evdev.c
> index 4699586..d27fab9 100644
> --- a/src/evdev.c
> +++ b/src/evdev.c
> @@ -29,12 +29,13 @@
> #include <mtdev.h>
>
> #include "compositor.h"
> +#include "launcher-util.h"
> #include "evdev.h"
> #include "evdev-private.h"
>
> static inline void
> evdev_process_key(struct evdev_input_device *device,
> - struct input_event *e, int time)
> + struct input_event *e, int time)
> {
> if (e->value == 2)
> return;
> @@ -150,6 +151,7 @@ evdev_process_absolute_motion_touchpad(struct evdev_input_device *device,
> {
> /* FIXME: Make this configurable somehow. */
> const int touchpad_speed = 700;
> + int dx, dy;
>
> switch (e->code) {
> case ABS_X:
> @@ -157,10 +159,11 @@ evdev_process_absolute_motion_touchpad(struct evdev_input_device *device,
> if (device->abs.reset_x)
> device->abs.reset_x = 0;
> else {
> - device->rel.dx =
> + dx =
> (e->value - device->abs.old_x) *
> touchpad_speed /
> (device->abs.max_x - device->abs.min_x);
> + device->rel.dx = wl_fixed_from_int(dx);
> }
> device->abs.old_x = e->value;
> device->type |= EVDEV_RELATIVE_MOTION;
> @@ -170,11 +173,12 @@ evdev_process_absolute_motion_touchpad(struct evdev_input_device *device,
> if (device->abs.reset_y)
> device->abs.reset_y = 0;
> else {
> - device->rel.dy =
> + dy =
> (e->value - device->abs.old_y) *
> touchpad_speed /
> /* maybe use x size here to have the same scale? */
> (device->abs.max_y - device->abs.min_y);
> + device->rel.dy = wl_fixed_from_int(dy);
> }
> device->abs.old_y = e->value;
> device->type |= EVDEV_RELATIVE_MOTION;
> @@ -188,11 +192,11 @@ evdev_process_relative(struct evdev_input_device *device,
> {
> switch (e->code) {
> case REL_X:
> - device->rel.dx += e->value;
> + device->rel.dx += wl_fixed_from_int(e->value);
> device->type |= EVDEV_RELATIVE_MOTION;
> break;
> case REL_Y:
> - device->rel.dy += e->value;
> + device->rel.dy += wl_fixed_from_int(e->value);
> device->type |= EVDEV_RELATIVE_MOTION;
> break;
> case REL_WHEEL:
> @@ -254,8 +258,8 @@ evdev_flush_motion(struct evdev_input_device *device, uint32_t time)
>
> if (device->type & EVDEV_RELATIVE_MOTION) {
> notify_motion(master, time,
> - master->x + wl_fixed_from_int(device->rel.dx),
> - master->y + wl_fixed_from_int(device->rel.dy));
> + master->x + device->rel.dx,
> + master->y + device->rel.dy);
> device->type &= ~EVDEV_RELATIVE_MOTION;
> device->rel.dx = 0;
> device->rel.dy = 0;
> --
> 1.7.9.5
>
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
More information about the wayland-devel
mailing list