static inline void
evdev_process_absolute_motion(struct evdev_input_device *device,
struct input_event *e, int value, int *x, int *y,
- int *absolute_event)
+ int *absolute_event, struct wlsc_compositor *ec)
{
- /* FIXME: Obviously we need to not hardcode these here, but
- * instead get the values from the output it's associated with. */
- const int screen_width = 1024, screen_height = 600;
+ const int screen_width = container_of(ec->output_list.prev,
+ struct wlsc_output, link)->current->width;
+ const int screen_height = container_of(ec->output_list.prev,
+ struct wlsc_output, link)->current->height;
switch (e->code) {
case ABS_X:
e, value, &dx, &dy);
else
evdev_process_absolute_motion(device, e, value,
- &x, &y, &absolute_event);
+ &x, &y, &absolute_event, ec);
break;
case EV_KEY:
if (value == 2)