Use compositor->seat_list instead of a singular seat
authorDaniel Stone <daniel@fooishbar.org>
Wed, 30 May 2012 15:31:53 +0000 (16:31 +0100)
committerKristian Høgsberg <krh@bitplanet.net>
Thu, 31 May 2012 19:44:03 +0000 (15:44 -0400)
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
src/compositor.c

index 7d4069e..71dadf0 100644 (file)
@@ -656,20 +656,22 @@ weston_compositor_repick(struct weston_compositor *compositor)
 static void
 weston_surface_unmap(struct weston_surface *surface)
 {
-       struct wl_seat *seat = &surface->compositor->seat->seat;
+       struct weston_seat *seat;
 
        weston_surface_damage_below(surface);
        surface->output = NULL;
        wl_list_remove(&surface->link);
        wl_list_remove(&surface->layer_link);
 
-       if (seat->keyboard->focus == &surface->surface)
-               wl_keyboard_set_focus(seat->keyboard, NULL);
-       if (seat->pointer->focus == &surface->surface)
-               wl_pointer_set_focus(seat->pointer,
-                                    NULL,
-                                    wl_fixed_from_int(0),
-                                    wl_fixed_from_int(0));
+       wl_list_for_each(seat, &surface->compositor->seat_list, link) {
+               if (seat->seat.keyboard->focus == &surface->surface)
+                       wl_keyboard_set_focus(seat->seat.keyboard, NULL);
+               if (seat->seat.pointer->focus == &surface->surface)
+                       wl_pointer_set_focus(seat->seat.pointer,
+                                            NULL,
+                                            wl_fixed_from_int(0),
+                                            wl_fixed_from_int(0));
+       }
 
        weston_compositor_schedule_repaint(surface->compositor);
 }
@@ -2442,7 +2444,10 @@ weston_seat_update_drag_surface(struct wl_seat *seat,
 WL_EXPORT void
 weston_compositor_update_drag_surfaces(struct weston_compositor *compositor)
 {
-       weston_seat_update_drag_surface(&compositor->seat->seat, 0, 0);
+       struct weston_seat *seat;
+
+       wl_list_for_each(seat, &compositor->seat_list, link)
+               weston_seat_update_drag_surface(&seat->seat, 0, 0);
 }
 
 static void