evdev_flush_motion(struct wl_input_device *device, uint32_t time,
struct evdev_motion_accumulator *accum)
{
- if (accum->type == EVDEV_RELATIVE_MOTION) {
- accum->dx += device->x;
- accum->dy += device->y;
- notify_motion(device, time, accum->dx, accum->dy);
- accum->dx = accum->dy = 0;
- }
+ if (accum->type == EVDEV_RELATIVE_MOTION)
+ notify_motion(device, time,
+ device->x + accum->dx, device->y + accum->dy);
if (accum->type == EVDEV_ABSOLUTE_MOTION)
notify_motion(device, time, accum->x, accum->y);
- accum->type = 0;
+ memset(accum, 0, sizeof *accum);
}
static int