zoom: Store the seat that initiated a zoom

Track the seat that initiated a seat instead of picking the first one.

Previously, if there are multiple seats then any seat can adjust the zoom
level but the zoom tracks the first seat's pointer.

Now the zoom will follow the pointer of the seat that initiated the zoom.

Additionally, if there's no pointer in the first seat, starting a zoom
with the second seat will no longer crash weston.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
diff --git a/src/compositor.h b/src/compositor.h
index b69547f..b74f7e8 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -152,6 +152,7 @@
 	float level;
 	float max_level;
 	float trans_x, trans_y;
+	struct weston_seat *seat;
 	struct weston_animation animation_z;
 	struct weston_spring spring_z;
 	struct weston_fixed_point current;
@@ -1370,7 +1371,8 @@
 void
 weston_output_update_zoom(struct weston_output *output);
 void
-weston_output_activate_zoom(struct weston_output *output);
+weston_output_activate_zoom(struct weston_output *output,
+			    struct weston_seat *seat);
 void
 weston_output_update_matrix(struct weston_output *output);
 void