input: Make pointer grab motion callbacks take an event struct

Instead of only passing absolute pointer coordinates, effectively
loosing motion event data, pass a struct that can potentially contain
different types of motion events, currently being absolute and relative.

A helper function to get resulting absolute coordinates was added for
when previous callbacks simply used the (x, y) coordinates.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
diff --git a/ivi-shell/hmi-controller.c b/ivi-shell/hmi-controller.c
index 633ea19..e10f4ff 100644
--- a/ivi-shell/hmi-controller.c
+++ b/ivi-shell/hmi-controller.c
@@ -1380,16 +1380,18 @@
 
 static void
 pointer_move_grab_motion(struct weston_pointer_grab *grab, uint32_t time,
-			 wl_fixed_t x, wl_fixed_t y)
+			 struct weston_pointer_motion_event *event)
 {
 	struct pointer_move_grab *pnt_move_grab =
 		(struct pointer_move_grab *)grab;
-	wl_fixed_t pointer_pos[2] = {x, y};
+	wl_fixed_t pointer_pos[2];
 
+	weston_pointer_motion_to_abs(grab->pointer, event,
+				     &pointer_pos[0], &pointer_pos[1]);
 	move_grab_update(&pnt_move_grab->move, pointer_pos);
 	layer_set_pos(pnt_move_grab->base.layer,
 		      pnt_move_grab->move.pos[0], pnt_move_grab->move.pos[1]);
-	weston_pointer_move(pnt_move_grab->base.grab.pointer, x, y);
+	weston_pointer_move(pnt_move_grab->base.grab.pointer, event);
 }
 
 static void