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;
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
if (weston_spring_done(&output->zoom.spring_z)) {
if (output->zoom.active && output->zoom.level <= 0.0) {
output->zoom.active = false;
+ output->zoom.seat = NULL;
output->disable_planes--;
wl_list_remove(&output->zoom.motion_listener.link);
}
weston_output_damage(output);
}
-static struct weston_seat *
-weston_zoom_pick_seat(struct weston_compositor *compositor)
-{
- return container_of(compositor->seat_list.next,
- struct weston_seat, link);
-}
-
static void
zoom_area_center_from_point(struct weston_output *output,
wl_fixed_t *x, wl_fixed_t *y)
WL_EXPORT void
weston_output_update_zoom(struct weston_output *output)
{
- struct weston_seat *seat = weston_zoom_pick_seat(output->compositor);
+ struct weston_seat *seat = output->zoom.seat;
assert(output->zoom.active);
}
WL_EXPORT void
-weston_output_activate_zoom(struct weston_output *output)
+weston_output_activate_zoom(struct weston_output *output,
+ struct weston_seat *seat)
{
- struct weston_seat *seat = weston_zoom_pick_seat(output->compositor);
-
if (output->zoom.active)
return;
output->zoom.active = true;
+ output->zoom.seat = seat;
output->disable_planes++;
wl_signal_add(&seat->pointer->motion_signal,
&output->zoom.motion_listener);
weston_output_init_zoom(struct weston_output *output)
{
output->zoom.active = false;
+ output->zoom.seat = NULL;
output->zoom.increment = 0.07;
output->zoom.max_level = 0.95;
output->zoom.level = 0.0;