mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2025-12-21 14:30:12 +01:00
evdev: fetch absolute coordinates inside flush_motion only
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
This commit is contained in:
parent
5c900ce08d
commit
f547bd36e6
1 changed files with 5 additions and 6 deletions
|
|
@ -208,8 +208,9 @@ evdev_flush_motion(struct wl_input_device *device, uint32_t time,
|
||||||
struct evdev_motion_accumulator *accum)
|
struct evdev_motion_accumulator *accum)
|
||||||
{
|
{
|
||||||
if (accum->type == EVDEV_RELATIVE_MOTION) {
|
if (accum->type == EVDEV_RELATIVE_MOTION) {
|
||||||
notify_motion(device, time, accum->x + accum->dx,
|
accum->dx += device->x;
|
||||||
accum->y + accum->dy);
|
accum->dy += device->y;
|
||||||
|
notify_motion(device, time, accum->dx, accum->dy);
|
||||||
accum->dx = accum->dy = 0;
|
accum->dx = accum->dy = 0;
|
||||||
}
|
}
|
||||||
if (accum->type == EVDEV_ABSOLUTE_MOTION)
|
if (accum->type == EVDEV_ABSOLUTE_MOTION)
|
||||||
|
|
@ -233,16 +234,14 @@ evdev_input_device_data(int fd, uint32_t mask, void *data)
|
||||||
if (!ec->focus)
|
if (!ec->focus)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
memset(&accumulator, 0, sizeof accumulator);
|
|
||||||
accumulator.x = device->master->base.input_device.x;
|
|
||||||
accumulator.y = device->master->base.input_device.y;
|
|
||||||
|
|
||||||
len = read(fd, &ev, sizeof ev);
|
len = read(fd, &ev, sizeof ev);
|
||||||
if (len < 0 || len % sizeof e[0] != 0) {
|
if (len < 0 || len % sizeof e[0] != 0) {
|
||||||
/* FIXME: call device_removed when errno is ENODEV. */;
|
/* FIXME: call device_removed when errno is ENODEV. */;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memset(&accumulator, 0, sizeof accumulator);
|
||||||
|
|
||||||
e = ev;
|
e = ev;
|
||||||
end = (void *) ev + len;
|
end = (void *) ev + len;
|
||||||
for (e = ev; e < end; e++) {
|
for (e = ev; e < end; e++) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue