input: Merge wl_seat into weston_seat
authorKristian Høgsberg <krh@bitplanet.net>
Tue, 7 May 2013 03:19:49 +0000 (23:19 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Tue, 7 May 2013 13:07:43 +0000 (09:07 -0400)
23 files changed:
src/bindings.c
src/clipboard.c
src/compositor-drm.c
src/compositor-fbdev.c
src/compositor-rpi.c
src/compositor-wayland.c
src/compositor-x11.c
src/compositor.c
src/compositor.h
src/data-device.c
src/evdev.c
src/gl-renderer.c
src/input.c
src/pixman-renderer.c
src/screenshooter.c
src/shell.c
src/tablet-shell.c
src/text-backend.c
src/udev-seat.c
src/xwayland/selection.c
src/xwayland/window-manager.c
src/zoom.c
tests/weston-test.c

index 1fabc77..e548ff1 100644 (file)
@@ -194,8 +194,7 @@ static const struct weston_keyboard_grab_interface binding_grab = {
 };
 
 static void
-install_binding_grab(struct wl_seat *seat,
-                    uint32_t time, uint32_t key)
+install_binding_grab(struct weston_seat *seat, uint32_t time, uint32_t key)
 {
        struct binding_keyboard_grab *grab;
 
@@ -219,14 +218,14 @@ weston_compositor_run_key_binding(struct weston_compositor *compositor,
        wl_list_for_each(b, &compositor->key_binding_list, link) {
                if (b->key == key && b->modifier == seat->modifier_state) {
                        weston_key_binding_handler_t handler = b->handler;
-                       handler(&seat->seat, time, key, b->data);
+                       handler(seat, time, key, b->data);
 
                        /* If this was a key binding and it didn't
                         * install a keyboard grab, install one now to
                         * swallow the key release. */
-                       if (seat->seat.keyboard->grab ==
-                           &seat->seat.keyboard->default_grab)
-                               install_binding_grab(&seat->seat, time, key);
+                       if (seat->keyboard->grab ==
+                           &seat->keyboard->default_grab)
+                               install_binding_grab(seat, time, key);
                }
        }
 }
@@ -245,7 +244,7 @@ weston_compositor_run_button_binding(struct weston_compositor *compositor,
        wl_list_for_each(b, &compositor->button_binding_list, link) {
                if (b->button == button && b->modifier == seat->modifier_state) {
                        weston_button_binding_handler_t handler = b->handler;
-                       handler(&seat->seat, time, button, b->data);
+                       handler(seat, time, button, b->data);
                }
        }
 }
@@ -261,7 +260,7 @@ weston_compositor_run_axis_binding(struct weston_compositor *compositor,
        wl_list_for_each(b, &compositor->axis_binding_list, link) {
                if (b->axis == axis && b->modifier == seat->modifier_state) {
                        weston_axis_binding_handler_t handler = b->handler;
-                       handler(&seat->seat, time, axis, value, b->data);
+                       handler(seat, time, axis, value, b->data);
                        return 1;
                }
        }
@@ -285,7 +284,7 @@ weston_compositor_run_debug_binding(struct weston_compositor *compositor,
 
                count++;
                handler = binding->handler;
-               handler(&seat->seat, time, key, binding->data);
+               handler(seat, time, key, binding->data);
        }
 
        return count;
index 7f8d93b..11edc71 100644 (file)
@@ -209,15 +209,15 @@ clipboard_set_selection(struct wl_listener *listener, void *data)
        struct clipboard *clipboard =
                container_of(listener, struct clipboard, selection_listener);
        struct weston_seat *seat = data;
-       struct wl_data_source *source = seat->seat.selection_data_source;
+       struct wl_data_source *source = seat->selection_data_source;
        const char **mime_types;
        int p[2];
 
        if (source == NULL) {
                if (clipboard->source)
-                       wl_seat_set_selection(&seat->seat,
-                                             &clipboard->source->base,
-                                             clipboard->source->serial);
+                       weston_seat_set_selection(seat,
+                                                 &clipboard->source->base,
+                                                 clipboard->source->serial);
                return;
        } else if (source->accept == clipboard_source_accept) {
                /* Callback for our data source. */
@@ -238,7 +238,7 @@ clipboard_set_selection(struct wl_listener *listener, void *data)
 
        clipboard->source =
                clipboard_source_create(clipboard, mime_types[0],
-                                       seat->seat.selection_serial, p[0]);
+                                       seat->selection_serial, p[0]);
        if (clipboard->source == NULL)
                return;
 }
@@ -268,7 +268,7 @@ clipboard_create(struct weston_seat *seat)
        clipboard->selection_listener.notify = clipboard_set_selection;
        clipboard->destroy_listener.notify = clipboard_destroy;
 
-       wl_signal_add(&seat->seat.selection_signal,
+       wl_signal_add(&seat->selection_signal,
                      &clipboard->selection_listener);
        wl_signal_add(&seat->destroy_signal,
                      &clipboard->destroy_listener);
index f39096e..ac61ef6 100644 (file)
@@ -2251,7 +2251,7 @@ vt_func(struct weston_compositor *compositor, int event)
 }
 
 static void
-switch_vt_binding(struct wl_seat *seat, uint32_t time, uint32_t key, void *data)
+switch_vt_binding(struct weston_seat *seat, uint32_t time, uint32_t key, void *data)
 {
        struct drm_compositor *ec = data;
 
@@ -2315,7 +2315,7 @@ find_primary_gpu(struct drm_compositor *ec, const char *seat)
 }
 
 static void
-planes_binding(struct wl_seat *seat, uint32_t time, uint32_t key, void *data)
+planes_binding(struct weston_seat *seat, uint32_t time, uint32_t key, void *data)
 {
        struct drm_compositor *c = data;
 
index 9d9eff5..0f45858 100644 (file)
@@ -826,7 +826,7 @@ fbdev_restore(struct weston_compositor *base)
 }
 
 static void
-switch_vt_binding(struct wl_seat *seat, uint32_t time, uint32_t key, void *data)
+switch_vt_binding(struct weston_seat *seat, uint32_t time, uint32_t key, void *data)
 {
        struct fbdev_compositor *ec = data;
 
index 0b3bab3..1e02aa1 100644 (file)
@@ -1335,7 +1335,7 @@ evdev_remove_devices(struct weston_seat *seat_base)
        wl_list_for_each_safe(device, next, &seat->devices_list, link)
                evdev_device_destroy(device);
 
-       if (seat->base.seat.keyboard)
+       if (seat->base.keyboard)
                notify_keyboard_focus_out(&seat->base);
 }
 
@@ -1426,7 +1426,7 @@ rpi_restore(struct weston_compositor *base)
 }
 
 static void
-switch_vt_binding(struct wl_seat *seat, uint32_t time, uint32_t key, void *data)
+switch_vt_binding(struct weston_seat *seat, uint32_t time, uint32_t key, void *data)
 {
        struct rpi_compositor *ec = data;
 
index d9d7530..44d234c 100644 (file)
@@ -451,9 +451,9 @@ input_handle_motion(void *data, struct wl_pointer *pointer,
        if (input->focus)
                notify_motion(&input->base, time,
                              x - wl_fixed_from_int(c->border.left) -
-                             input->base.seat.pointer->x,
+                             input->base.pointer->x,
                              y - wl_fixed_from_int(c->border.top) -
-                             input->base.seat.pointer->y);
+                             input->base.pointer->y);
 }
 
 static void
index bb8e892..e827cec 100644 (file)
@@ -865,7 +865,7 @@ static void
 update_xkb_state_from_core(struct x11_compositor *c, uint16_t x11_mask)
 {
        uint32_t mask = get_xkb_mod_mask(c, x11_mask);
-       struct weston_keyboard *keyboard = &c->core_seat.keyboard;
+       struct weston_keyboard *keyboard = &c->core_seat.keyboard_instance;
 
        xkb_state_update_mask(c->core_seat.xkb_state.state,
                              keyboard->modifiers.mods_depressed & mask,
index 7abb671..4dba3a3 100644 (file)
@@ -122,7 +122,7 @@ weston_output_switch_mode(struct weston_output *output, struct weston_mode *mode
        /* If a pointer falls outside the outputs new geometry, move it to its
         * lower-right corner */
        wl_list_for_each(seat, &output->compositor->seat_list, link) {
-               struct weston_pointer *pointer = seat->seat.pointer;
+               struct weston_pointer *pointer = seat->pointer;
                int32_t x, y;
 
                if (!pointer)
@@ -946,12 +946,12 @@ weston_surface_unmap(struct weston_surface *surface)
        wl_list_remove(&surface->layer_link);
 
        wl_list_for_each(seat, &surface->compositor->seat_list, link) {
-               if (seat->seat.keyboard &&
-                   seat->seat.keyboard->focus == &surface->surface)
-                       weston_keyboard_set_focus(seat->seat.keyboard, NULL);
-               if (seat->seat.pointer &&
-                   seat->seat.pointer->focus == &surface->surface)
-                       weston_pointer_set_focus(seat->seat.pointer,
+               if (seat->keyboard &&
+                   seat->keyboard->focus == &surface->surface)
+                       weston_keyboard_set_focus(seat->keyboard, NULL);
+               if (seat->pointer &&
+                   seat->pointer->focus == &surface->surface)
+                       weston_pointer_set_focus(seat->pointer,
                                                 NULL,
                                                 wl_fixed_from_int(0),
                                                 wl_fixed_from_int(0));
index 9512678..e761138 100644 (file)
@@ -286,7 +286,7 @@ struct wl_data_source {
 };
 
 struct weston_pointer {
-       struct wl_seat *seat;
+       struct weston_seat *seat;
 
        struct wl_list resource_list;
        struct wl_surface *focus;
@@ -312,7 +312,7 @@ struct weston_pointer {
 
 
 struct weston_touch {
-       struct wl_seat *seat;
+       struct weston_seat *seat;
 
        struct wl_list resource_list;
        struct wl_surface *focus;
@@ -328,37 +328,12 @@ struct weston_touch {
        uint32_t grab_time;
 };
 
-struct wl_seat {
-       struct wl_list base_resource_list;
-
-       struct weston_pointer *pointer;
-       struct weston_keyboard *keyboard;
-       struct weston_touch *touch;
-
-       uint32_t selection_serial;
-       struct wl_data_source *selection_data_source;
-       struct wl_listener selection_data_source_listener;
-       struct wl_signal selection_signal;
-
-       struct wl_list drag_resource_list;
-       struct wl_client *drag_client;
-       struct wl_data_source *drag_data_source;
-       struct wl_listener drag_data_source_listener;
-       struct wl_surface *drag_focus;
-       struct wl_resource *drag_focus_resource;
-       struct wl_listener drag_focus_listener;
-       struct weston_pointer_grab drag_grab;
-       struct wl_surface *drag_surface;
-       struct wl_listener drag_icon_listener;
-       struct wl_signal drag_icon_signal;
-};
-
 void
-wl_seat_set_pointer(struct wl_seat *seat, struct weston_pointer *pointer);
+weston_seat_set_pointer(struct weston_seat *seat, struct weston_pointer *pointer);
 void
-wl_seat_set_keyboard(struct wl_seat *seat, struct weston_keyboard *keyboard);
+weston_seat_set_keyboard(struct weston_seat *seat, struct weston_keyboard *keyboard);
 void
-wl_seat_set_touch(struct wl_seat *seat, struct weston_touch *touch);
+weston_seat_set_touch(struct weston_seat *seat, struct weston_touch *touch);
 
 void
 weston_pointer_init(struct weston_pointer *pointer);
@@ -401,15 +376,15 @@ void
 weston_touch_end_grab(struct weston_touch *touch);
 
 void
-wl_data_device_set_keyboard_focus(struct wl_seat *seat);
+wl_data_device_set_keyboard_focus(struct weston_seat *seat);
 
 int
 wl_data_device_manager_init(struct wl_display *display);
 
 
 void
-wl_seat_set_selection(struct wl_seat *seat,
-                     struct wl_data_source *source, uint32_t serial);
+weston_seat_set_selection(struct weston_seat *seat,
+                         struct wl_data_source *source, uint32_t serial);
 
 struct weston_xkb_info {
        struct xkb_keymap *keymap;
@@ -430,7 +405,7 @@ struct weston_xkb_info {
 };
 
 struct weston_keyboard {
-       struct wl_seat *seat;
+       struct weston_seat *seat;
 
        struct wl_list resource_list;
        struct wl_surface *focus;
@@ -459,26 +434,48 @@ struct weston_keyboard {
 };
 
 struct weston_seat {
-       struct wl_seat seat;
-       struct weston_pointer pointer;
+       struct wl_list base_resource_list;
+
+       struct weston_pointer *pointer;
+       struct weston_keyboard *keyboard;
+       struct weston_touch *touch;
+
+       struct weston_pointer pointer_instance;
        int has_pointer;
-       struct weston_keyboard keyboard;
+       struct weston_keyboard keyboard_instance;
        int has_keyboard;
-       struct weston_touch touch;
+       struct weston_touch touch_instance;
        int has_touch;
        struct wl_signal destroy_signal;
 
        struct weston_compositor *compositor;
        struct weston_surface *sprite;
        struct wl_listener sprite_destroy_listener;
-       struct weston_surface *drag_surface;
-       struct wl_listener drag_surface_destroy_listener;
        int32_t hotspot_x, hotspot_y;
        struct wl_list link;
        enum weston_keyboard_modifier modifier_state;
        struct wl_surface *saved_kbd_focus;
        struct wl_listener saved_kbd_focus_listener;
 
+       uint32_t selection_serial;
+       struct wl_data_source *selection_data_source;
+       struct wl_listener selection_data_source_listener;
+       struct wl_signal selection_signal;
+
+       struct wl_list drag_resource_list;
+       struct wl_client *drag_client;
+       struct wl_data_source *drag_data_source;
+       struct wl_listener drag_data_source_listener;
+       struct wl_surface *drag_focus;
+       struct wl_resource *drag_focus_resource;
+       struct wl_listener drag_focus_listener;
+       struct weston_pointer_grab drag_grab;
+       struct wl_surface *next_drag_surface;
+       struct weston_surface *drag_surface;
+       struct wl_listener drag_surface_destroy_listener;
+       struct wl_listener drag_icon_listener;
+       struct wl_signal drag_icon_signal;
+
        uint32_t num_tp;
 
        struct wl_listener new_drag_icon_listener;
@@ -872,7 +869,7 @@ weston_compositor_pick_surface(struct weston_compositor *compositor,
 
 
 struct weston_binding;
-typedef void (*weston_key_binding_handler_t)(struct wl_seat *seat,
+typedef void (*weston_key_binding_handler_t)(struct weston_seat *seat,
                                             uint32_t time, uint32_t key,
                                             void *data);
 struct weston_binding *
@@ -882,7 +879,7 @@ weston_compositor_add_key_binding(struct weston_compositor *compositor,
                                  weston_key_binding_handler_t binding,
                                  void *data);
 
-typedef void (*weston_button_binding_handler_t)(struct wl_seat *seat,
+typedef void (*weston_button_binding_handler_t)(struct weston_seat *seat,
                                                uint32_t time, uint32_t button,
                                                void *data);
 struct weston_binding *
@@ -892,7 +889,7 @@ weston_compositor_add_button_binding(struct weston_compositor *compositor,
                                     weston_button_binding_handler_t binding,
                                     void *data);
 
-typedef void (*weston_axis_binding_handler_t)(struct wl_seat *seat,
+typedef void (*weston_axis_binding_handler_t)(struct weston_seat *seat,
                                              uint32_t time, uint32_t axis,
                                              wl_fixed_t value, void *data);
 struct weston_binding *
index 2a3eb99..cd85860 100644 (file)
@@ -158,8 +158,8 @@ find_resource(struct wl_list *list, struct wl_client *client)
 static void
 destroy_drag_focus(struct wl_listener *listener, void *data)
 {
-       struct wl_seat *seat =
-               container_of(listener, struct wl_seat, drag_focus_listener);
+       struct weston_seat *seat =
+               container_of(listener, struct weston_seat, drag_focus_listener);
 
        seat->drag_focus_resource = NULL;
 }
@@ -168,7 +168,8 @@ static void
 drag_grab_focus(struct weston_pointer_grab *grab,
                struct wl_surface *surface, wl_fixed_t x, wl_fixed_t y)
 {
-       struct wl_seat *seat = container_of(grab, struct wl_seat, drag_grab);
+       struct weston_seat *seat =
+               container_of(grab, struct weston_seat, drag_grab);
        struct wl_resource *resource, *offer = NULL;
        struct wl_display *display;
        uint32_t serial;
@@ -214,7 +215,8 @@ static void
 drag_grab_motion(struct weston_pointer_grab *grab,
                 uint32_t time, wl_fixed_t x, wl_fixed_t y)
 {
-       struct wl_seat *seat = container_of(grab, struct wl_seat, drag_grab);
+       struct weston_seat *seat =
+               container_of(grab, struct weston_seat, drag_grab);
 
        if (seat->drag_focus_resource)
                wl_data_device_send_motion(seat->drag_focus_resource,
@@ -222,7 +224,7 @@ drag_grab_motion(struct weston_pointer_grab *grab,
 }
 
 static void
-data_device_end_drag_grab(struct wl_seat *seat)
+data_device_end_drag_grab(struct weston_seat *seat)
 {
        if (seat->drag_surface) {
                seat->drag_surface = NULL;
@@ -243,7 +245,8 @@ static void
 drag_grab_button(struct weston_pointer_grab *grab,
                 uint32_t time, uint32_t button, uint32_t state_w)
 {
-       struct wl_seat *seat = container_of(grab, struct wl_seat, drag_grab);
+       struct weston_seat *seat =
+               container_of(grab, struct weston_seat, drag_grab);
        enum wl_pointer_button_state state = state_w;
 
        if (seat->drag_focus_resource &&
@@ -268,8 +271,8 @@ static const struct weston_pointer_grab_interface drag_grab_interface = {
 static void
 destroy_data_device_source(struct wl_listener *listener, void *data)
 {
-       struct wl_seat *seat = container_of(listener, struct wl_seat,
-                                           drag_data_source_listener);
+       struct weston_seat *seat = container_of(listener, struct weston_seat,
+                                               drag_data_source_listener);
 
        data_device_end_drag_grab(seat);
 }
@@ -277,10 +280,10 @@ destroy_data_device_source(struct wl_listener *listener, void *data)
 static void
 destroy_data_device_icon(struct wl_listener *listener, void *data)
 {
-       struct wl_seat *seat = container_of(listener, struct wl_seat,
-                                           drag_icon_listener);
+       struct weston_seat *seat = container_of(listener, struct weston_seat,
+                                               drag_icon_listener);
 
-       seat->drag_surface = NULL;
+       seat->next_drag_surface = NULL;
 }
 
 static void
@@ -289,7 +292,7 @@ data_device_start_drag(struct wl_client *client, struct wl_resource *resource,
                       struct wl_resource *origin_resource,
                       struct wl_resource *icon_resource, uint32_t serial)
 {
-       struct wl_seat *seat = resource->data;
+       struct weston_seat *seat = resource->data;
 
        /* FIXME: Check that client has implicit grab on the origin
         * surface that matches the given time. */
@@ -310,7 +313,7 @@ data_device_start_drag(struct wl_client *client, struct wl_resource *resource,
        }
 
        if (icon_resource) {
-               seat->drag_surface = icon_resource->data;
+               seat->next_drag_surface = icon_resource->data;
                seat->drag_icon_listener.notify = destroy_data_device_icon;
                wl_signal_add(&icon_resource->destroy_signal,
                              &seat->drag_icon_listener);
@@ -325,8 +328,8 @@ data_device_start_drag(struct wl_client *client, struct wl_resource *resource,
 static void
 destroy_selection_data_source(struct wl_listener *listener, void *data)
 {
-       struct wl_seat *seat = container_of(listener, struct wl_seat,
-                                           selection_data_source_listener);
+       struct weston_seat *seat = container_of(listener, struct weston_seat,
+                                               selection_data_source_listener);
        struct wl_resource *data_device;
        struct wl_resource *focus = NULL;
 
@@ -345,8 +348,8 @@ destroy_selection_data_source(struct wl_listener *listener, void *data)
 }
 
 WL_EXPORT void
-wl_seat_set_selection(struct wl_seat *seat, struct wl_data_source *source,
-                     uint32_t serial)
+weston_seat_set_selection(struct weston_seat *seat,
+                         struct wl_data_source *source, uint32_t serial)
 {
        struct wl_resource *data_device, *offer;
        struct wl_resource *focus = NULL;
@@ -397,8 +400,8 @@ data_device_set_selection(struct wl_client *client,
                return;
 
        /* FIXME: Store serial and check against incoming serial here. */
-       wl_seat_set_selection(resource->data, source_resource->data,
-                             serial);
+       weston_seat_set_selection(resource->data, source_resource->data,
+                                 serial);
 }
 
 static const struct wl_data_device_interface data_device_interface = {
@@ -477,7 +480,7 @@ get_data_device(struct wl_client *client,
                struct wl_resource *manager_resource,
                uint32_t id, struct wl_resource *seat_resource)
 {
-       struct wl_seat *seat = seat_resource->data;
+       struct weston_seat *seat = seat_resource->data;
        struct wl_resource *resource;
 
        resource = wl_client_add_object(client, &wl_data_device_interface,
@@ -502,7 +505,7 @@ bind_manager(struct wl_client *client,
 }
 
 WL_EXPORT void
-wl_data_device_set_keyboard_focus(struct wl_seat *seat)
+wl_data_device_set_keyboard_focus(struct weston_seat *seat)
 {
        struct wl_resource *data_device, *focus, *offer;
        struct wl_data_source *source;
index 2c81d2b..9289b1c 100644 (file)
@@ -618,7 +618,7 @@ evdev_notify_keyboard_focus(struct weston_seat *seat,
        uint32_t *k;
        int ret;
 
-       if (!seat->seat.keyboard)
+       if (!seat->keyboard)
                return;
 
        memset(all_keys, 0, sizeof all_keys);
index ea6631f..9e3bbcd 100644 (file)
@@ -1860,7 +1860,7 @@ compile_shaders(struct weston_compositor *ec)
 }
 
 static void
-fragment_debug_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
+fragment_debug_binding(struct weston_seat *seat, uint32_t time, uint32_t key,
                       void *data)
 {
        struct weston_compositor *ec = data;
index a8c9063..5fa266d 100644 (file)
@@ -48,7 +48,7 @@ weston_seat_repick(struct weston_seat *seat)
 {
        const struct weston_pointer_grab_interface *interface;
        struct weston_surface *surface, *focus;
-       struct weston_pointer *pointer = seat->seat.pointer;
+       struct weston_pointer *pointer = seat->pointer;
 
        if (!pointer)
                return;
@@ -357,7 +357,7 @@ weston_touch_release(struct weston_touch *touch)
 }
 
 static void
-seat_send_updated_caps(struct wl_seat *seat)
+seat_send_updated_caps(struct weston_seat *seat)
 {
        struct wl_resource *r;
        enum wl_seat_capability caps = 0;
@@ -374,7 +374,8 @@ seat_send_updated_caps(struct wl_seat *seat)
 }
 
 WL_EXPORT void
-wl_seat_set_pointer(struct wl_seat *seat, struct weston_pointer *pointer)
+weston_seat_set_pointer(struct weston_seat *seat,
+                       struct weston_pointer *pointer)
 {
        if (pointer && (seat->pointer || pointer->seat))
                return; /* XXX: error? */
@@ -389,7 +390,8 @@ wl_seat_set_pointer(struct wl_seat *seat, struct weston_pointer *pointer)
 }
 
 WL_EXPORT void
-wl_seat_set_keyboard(struct wl_seat *seat, struct weston_keyboard *keyboard)
+weston_seat_set_keyboard(struct weston_seat *seat,
+                        struct weston_keyboard *keyboard)
 {
        if (keyboard && (seat->keyboard || keyboard->seat))
                return; /* XXX: error? */
@@ -404,7 +406,7 @@ wl_seat_set_keyboard(struct wl_seat *seat, struct weston_keyboard *keyboard)
 }
 
 WL_EXPORT void
-wl_seat_set_touch(struct wl_seat *seat, struct weston_touch *touch)
+weston_seat_set_touch(struct weston_seat *seat, struct weston_touch *touch)
 {
        if (touch && (seat->touch || touch->seat))
                return; /* XXX: error? */
@@ -603,8 +605,8 @@ clip_pointer_motion(struct weston_seat *seat, wl_fixed_t *fx, wl_fixed_t *fy)
 
        x = wl_fixed_to_int(*fx);
        y = wl_fixed_to_int(*fy);
-       old_x = wl_fixed_to_int(seat->seat.pointer->x);
-       old_y = wl_fixed_to_int(seat->seat.pointer->y);
+       old_x = wl_fixed_to_int(seat->pointer->x);
+       old_y = wl_fixed_to_int(seat->pointer->y);
 
        wl_list_for_each(output, &ec->output_list, link) {
                if (pixman_region32_contains_point(&output->region,
@@ -634,7 +636,7 @@ static void
 move_pointer(struct weston_seat *seat, wl_fixed_t x, wl_fixed_t y)
 {
        struct weston_compositor *ec = seat->compositor;
-       struct weston_pointer *pointer = seat->seat.pointer;
+       struct weston_pointer *pointer = seat->pointer;
        struct weston_output *output;
        int32_t ix, iy;
 
@@ -670,7 +672,7 @@ notify_motion(struct weston_seat *seat,
 {
        const struct weston_pointer_grab_interface *interface;
        struct weston_compositor *ec = seat->compositor;
-       struct weston_pointer *pointer = seat->seat.pointer;
+       struct weston_pointer *pointer = seat->pointer;
 
        weston_compositor_wake(ec);
 
@@ -687,7 +689,7 @@ notify_motion_absolute(struct weston_seat *seat,
 {
        const struct weston_pointer_grab_interface *interface;
        struct weston_compositor *ec = seat->compositor;
-       struct weston_pointer *pointer = seat->seat.pointer;
+       struct weston_pointer *pointer = seat->pointer;
 
        weston_compositor_wake(ec);
 
@@ -704,9 +706,9 @@ weston_surface_activate(struct weston_surface *surface,
 {
        struct weston_compositor *compositor = seat->compositor;
 
-       if (seat->seat.keyboard) {
-               weston_keyboard_set_focus(seat->seat.keyboard, &surface->surface);
-               wl_data_device_set_keyboard_focus(&seat->seat);
+       if (seat->keyboard) {
+               weston_keyboard_set_focus(seat->keyboard, &surface->surface);
+               wl_data_device_set_keyboard_focus(seat);
        }
 
        wl_signal_emit(&compositor->activate_signal, surface);
@@ -717,7 +719,7 @@ notify_button(struct weston_seat *seat, uint32_t time, int32_t button,
              enum wl_pointer_button_state state)
 {
        struct weston_compositor *compositor = seat->compositor;
-       struct weston_pointer *pointer = seat->seat.pointer;
+       struct weston_pointer *pointer = seat->pointer;
        struct weston_surface *focus =
                (struct weston_surface *) pointer->focus;
        uint32_t serial = wl_display_next_serial(compositor->wl_display);
@@ -753,7 +755,7 @@ notify_axis(struct weston_seat *seat, uint32_t time, uint32_t axis,
            wl_fixed_t value)
 {
        struct weston_compositor *compositor = seat->compositor;
-       struct weston_pointer *pointer = seat->seat.pointer;
+       struct weston_pointer *pointer = seat->pointer;
        struct weston_surface *focus =
                (struct weston_surface *) pointer->focus;
        uint32_t serial = wl_display_next_serial(compositor->wl_display);
@@ -778,7 +780,7 @@ notify_axis(struct weston_seat *seat, uint32_t time, uint32_t axis,
 WL_EXPORT void
 notify_modifiers(struct weston_seat *seat, uint32_t serial)
 {
-       struct weston_keyboard *keyboard = &seat->keyboard;
+       struct weston_keyboard *keyboard = seat->keyboard;
        struct weston_keyboard_grab *grab = keyboard->grab;
        uint32_t mods_depressed, mods_latched, mods_locked, group;
        uint32_t mods_lookup;
@@ -796,16 +798,16 @@ notify_modifiers(struct weston_seat *seat, uint32_t serial)
        group = xkb_state_serialize_group(seat->xkb_state.state,
                                          XKB_STATE_EFFECTIVE);
 
-       if (mods_depressed != seat->seat.keyboard->modifiers.mods_depressed ||
-           mods_latched != seat->seat.keyboard->modifiers.mods_latched ||
-           mods_locked != seat->seat.keyboard->modifiers.mods_locked ||
-           group != seat->seat.keyboard->modifiers.group)
+       if (mods_depressed != seat->keyboard->modifiers.mods_depressed ||
+           mods_latched != seat->keyboard->modifiers.mods_latched ||
+           mods_locked != seat->keyboard->modifiers.mods_locked ||
+           group != seat->keyboard->modifiers.group)
                changed = 1;
 
-       seat->seat.keyboard->modifiers.mods_depressed = mods_depressed;
-       seat->seat.keyboard->modifiers.mods_latched = mods_latched;
-       seat->seat.keyboard->modifiers.mods_locked = mods_locked;
-       seat->seat.keyboard->modifiers.group = group;
+       seat->keyboard->modifiers.mods_depressed = mods_depressed;
+       seat->keyboard->modifiers.mods_latched = mods_latched;
+       seat->keyboard->modifiers.mods_locked = mods_locked;
+       seat->keyboard->modifiers.group = group;
 
        /* And update the modifier_state for bindings. */
        mods_lookup = mods_depressed | mods_latched;
@@ -867,7 +869,7 @@ notify_key(struct weston_seat *seat, uint32_t time, uint32_t key,
           enum weston_key_state_update update_state)
 {
        struct weston_compositor *compositor = seat->compositor;
-       struct weston_keyboard *keyboard = &seat->keyboard;
+       struct weston_keyboard *keyboard = seat->keyboard;
        struct weston_surface *focus =
                (struct weston_surface *) keyboard->focus;
        struct weston_keyboard_grab *grab = keyboard->grab;
@@ -949,7 +951,7 @@ notify_keyboard_focus_in(struct weston_seat *seat, struct wl_array *keys,
                         enum weston_key_state_update update_state)
 {
        struct weston_compositor *compositor = seat->compositor;
-       struct weston_keyboard *keyboard = seat->seat.keyboard;
+       struct weston_keyboard *keyboard = seat->keyboard;
        struct wl_surface *surface;
        uint32_t *k, serial;
 
@@ -981,7 +983,7 @@ WL_EXPORT void
 notify_keyboard_focus_out(struct weston_seat *seat)
 {
        struct weston_compositor *compositor = seat->compositor;
-       struct weston_keyboard *keyboard = seat->seat.keyboard;
+       struct weston_keyboard *keyboard = seat->keyboard;
        uint32_t *k, serial;
 
        serial = wl_display_next_serial(compositor->wl_display);
@@ -1009,9 +1011,8 @@ notify_keyboard_focus_out(struct weston_seat *seat)
 }
 
 static void
-touch_set_focus(struct weston_seat *ws, struct wl_surface *surface)
+touch_set_focus(struct weston_seat *seat, struct wl_surface *surface)
 {
-       struct wl_seat *seat = &ws->seat;
        struct wl_resource *resource;
 
        if (seat->touch->focus == surface)
@@ -1051,7 +1052,7 @@ notify_touch(struct weston_seat *seat, uint32_t time, int touch_id,
              wl_fixed_t x, wl_fixed_t y, int touch_type)
 {
        struct weston_compositor *ec = seat->compositor;
-       struct weston_touch *touch = seat->seat.touch;
+       struct weston_touch *touch = seat->touch;
        struct weston_touch_grab *grab = touch->grab;
        struct weston_surface *es;
        wl_fixed_t sx, sy;
@@ -1129,8 +1130,8 @@ pointer_cursor_surface_configure(struct weston_surface *es,
        seat->hotspot_x -= dx;
        seat->hotspot_y -= dy;
 
-       x = wl_fixed_to_int(seat->seat.pointer->x) - seat->hotspot_x;
-       y = wl_fixed_to_int(seat->seat.pointer->y) - seat->hotspot_y;
+       x = wl_fixed_to_int(seat->pointer->x) - seat->hotspot_x;
+       y = wl_fixed_to_int(seat->pointer->y) - seat->hotspot_y;
 
        weston_surface_configure(seat->sprite, x, y,
                                 width, height);
@@ -1167,11 +1168,11 @@ pointer_set_cursor(struct wl_client *client, struct wl_resource *resource,
        if (surface_resource)
                surface = surface_resource->data;
 
-       if (seat->seat.pointer->focus == NULL)
+       if (seat->pointer->focus == NULL)
                return;
-       if (seat->seat.pointer->focus->resource.client != client)
+       if (seat->pointer->focus->resource.client != client)
                return;
-       if (seat->seat.pointer->focus_serial - serial > UINT32_MAX / 2)
+       if (seat->pointer->focus_serial - serial > UINT32_MAX / 2)
                return;
 
        if (surface && surface != seat->sprite) {
@@ -1226,27 +1227,27 @@ seat_get_pointer(struct wl_client *client, struct wl_resource *resource,
        struct weston_seat *seat = resource->data;
        struct wl_resource *cr;
 
-       if (!seat->seat.pointer)
+       if (!seat->pointer)
                return;
 
         cr = wl_client_add_object(client, &wl_pointer_interface,
                                  &pointer_interface, id, seat);
-       wl_list_insert(&seat->seat.pointer->resource_list, &cr->link);
+       wl_list_insert(&seat->pointer->resource_list, &cr->link);
        cr->destroy = unbind_resource;
 
-       if (seat->seat.pointer->focus &&
-           seat->seat.pointer->focus->resource.client == client) {
+       if (seat->pointer->focus &&
+           seat->pointer->focus->resource.client == client) {
                struct weston_surface *surface;
                wl_fixed_t sx, sy;
 
-               surface = (struct weston_surface *) seat->seat.pointer->focus;
+               surface = (struct weston_surface *) seat->pointer->focus;
                weston_surface_from_global_fixed(surface,
-                                                seat->seat.pointer->x,
-                                                seat->seat.pointer->y,
+                                                seat->pointer->x,
+                                                seat->pointer->y,
                                                 &sx,
                                                 &sy);
-               weston_pointer_set_focus(seat->seat.pointer,
-                                        seat->seat.pointer->focus,
+               weston_pointer_set_focus(seat->pointer,
+                                        seat->pointer->focus,
                                         sx,
                                         sy);
        }
@@ -1259,23 +1260,23 @@ seat_get_keyboard(struct wl_client *client, struct wl_resource *resource,
        struct weston_seat *seat = resource->data;
        struct wl_resource *cr;
 
-       if (!seat->seat.keyboard)
+       if (!seat->keyboard)
                return;
 
         cr = wl_client_add_object(client, &wl_keyboard_interface, NULL, id,
                                  seat);
-       wl_list_insert(&seat->seat.keyboard->resource_list, &cr->link);
+       wl_list_insert(&seat->keyboard->resource_list, &cr->link);
        cr->destroy = unbind_resource;
 
        wl_keyboard_send_keymap(cr, WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1,
                                seat->xkb_info.keymap_fd,
                                seat->xkb_info.keymap_size);
 
-       if (seat->seat.keyboard->focus &&
-           seat->seat.keyboard->focus->resource.client == client) {
-               weston_keyboard_set_focus(seat->seat.keyboard,
-                                         seat->seat.keyboard->focus);
-               wl_data_device_set_keyboard_focus(&seat->seat);
+       if (seat->keyboard->focus &&
+           seat->keyboard->focus->resource.client == client) {
+               weston_keyboard_set_focus(seat->keyboard,
+                                         seat->keyboard->focus);
+               wl_data_device_set_keyboard_focus(seat);
        }
 }
 
@@ -1286,11 +1287,11 @@ seat_get_touch(struct wl_client *client, struct wl_resource *resource,
        struct weston_seat *seat = resource->data;
        struct wl_resource *cr;
 
-       if (!seat->seat.touch)
+       if (!seat->touch)
                return;
 
         cr = wl_client_add_object(client, &wl_touch_interface, NULL, id, seat);
-       wl_list_insert(&seat->seat.touch->resource_list, &cr->link);
+       wl_list_insert(&seat->touch->resource_list, &cr->link);
        cr->destroy = unbind_resource;
 }
 
@@ -1303,7 +1304,7 @@ static const struct wl_seat_interface seat_interface = {
 static void
 bind_seat(struct wl_client *client, void *data, uint32_t version, uint32_t id)
 {
-       struct wl_seat *seat = data;
+       struct weston_seat *seat = data;
        struct wl_resource *resource;
        enum wl_seat_capability caps = 0;
 
@@ -1492,8 +1493,8 @@ weston_seat_init_keyboard(struct weston_seat *seat, struct xkb_keymap *keymap)
 
        seat->xkb_state.leds = 0;
 
-       weston_keyboard_init(&seat->keyboard);
-       wl_seat_set_keyboard(&seat->seat, &seat->keyboard);
+       weston_keyboard_init(&seat->keyboard_instance);
+       weston_seat_set_keyboard(seat, &seat->keyboard_instance);
 
        seat->has_keyboard = 1;
 
@@ -1506,8 +1507,8 @@ weston_seat_init_pointer(struct weston_seat *seat)
        if (seat->has_pointer)
                return;
 
-       weston_pointer_init(&seat->pointer);
-       wl_seat_set_pointer(&seat->seat, &seat->pointer);
+       weston_pointer_init(&seat->pointer_instance);
+       weston_seat_set_pointer(seat, &seat->pointer_instance);
 
        seat->has_pointer = 1;
 }
@@ -1518,8 +1519,8 @@ weston_seat_init_touch(struct weston_seat *seat)
        if (seat->has_touch)
                return;
 
-       weston_touch_init(&seat->touch);
-       wl_seat_set_touch(&seat->seat, &seat->touch);
+       weston_touch_init(&seat->touch_instance);
+       weston_seat_set_touch(seat, &seat->touch_instance);
 
        seat->has_touch = 1;
 }
@@ -1529,11 +1530,12 @@ weston_seat_init(struct weston_seat *seat, struct weston_compositor *ec)
 {
        memset(seat, 0, sizeof *seat);
 
-       seat->seat.selection_data_source = NULL;
-       wl_list_init(&seat->seat.base_resource_list);
-       wl_signal_init(&seat->seat.selection_signal);
-       wl_list_init(&seat->seat.drag_resource_list);
-       wl_signal_init(&seat->seat.drag_icon_signal);
+       seat->selection_data_source = NULL;
+       wl_list_init(&seat->base_resource_list);
+       wl_signal_init(&seat->selection_signal);
+       wl_list_init(&seat->drag_resource_list);
+       wl_signal_init(&seat->drag_icon_signal);
+       wl_signal_init(&seat->destroy_signal);
 
        seat->has_pointer = 0;
        seat->has_keyboard = 0;
@@ -1557,12 +1559,11 @@ weston_seat_init(struct weston_seat *seat, struct weston_compositor *ec)
        wl_list_insert(ec->seat_list.prev, &seat->link);
 
        seat->new_drag_icon_listener.notify = device_handle_new_drag_icon;
-       wl_signal_add(&seat->seat.drag_icon_signal,
+       wl_signal_add(&seat->drag_icon_signal,
                      &seat->new_drag_icon_listener);
 
        clipboard_create(seat);
 
-       wl_signal_init(&seat->destroy_signal);
        wl_signal_emit(&ec->seat_created_signal, seat);
 }
 
@@ -1579,12 +1580,12 @@ weston_seat_release(struct weston_seat *seat)
                xkb_state_unref(seat->xkb_state.state);
        xkb_info_destroy(&seat->xkb_info);
 
-       if (seat->seat.pointer)
-               weston_pointer_release(seat->seat.pointer);
-       if (seat->seat.keyboard)
-               weston_keyboard_release(seat->seat.keyboard);
-       if (seat->seat.touch)
-               weston_touch_release(seat->seat.touch);
+       if (seat->pointer)
+               weston_pointer_release(seat->pointer);
+       if (seat->keyboard)
+               weston_keyboard_release(seat->keyboard);
+       if (seat->touch)
+               weston_touch_release(seat->touch);
 
        wl_signal_emit(&seat->destroy_signal, seat);
 }
@@ -1600,11 +1601,9 @@ drag_surface_configure(struct weston_surface *es, int32_t sx, int32_t sy, int32_
 }
 
 static int
-device_setup_new_drag_surface(struct weston_seat *ws,
+device_setup_new_drag_surface(struct weston_seat *seat,
                              struct weston_surface *surface)
 {
-       struct wl_seat *seat = &ws->seat;
-
        if (surface->configure) {
                wl_resource_post_error(&surface->surface.resource,
                                       WL_DISPLAY_ERROR_INVALID_OBJECT,
@@ -1612,16 +1611,16 @@ device_setup_new_drag_surface(struct weston_seat *ws,
                return 0;
        }
 
-       ws->drag_surface = surface;
+       seat->drag_surface = surface;
 
-       weston_surface_set_position(ws->drag_surface,
+       weston_surface_set_position(seat->drag_surface,
                                    wl_fixed_to_double(seat->pointer->x),
                                    wl_fixed_to_double(seat->pointer->y));
 
        surface->configure = drag_surface_configure;
 
        wl_signal_add(&surface->surface.resource.destroy_signal,
-                      &ws->drag_surface_destroy_listener);
+                      &seat->drag_surface_destroy_listener);
 
        return 1;
 }
@@ -1658,29 +1657,28 @@ device_map_drag_surface(struct weston_seat *seat)
 }
 
 static  void
-weston_seat_update_drag_surface(struct weston_seat *seat,
-                               int dx, int dy)
+weston_seat_update_drag_surface(struct weston_seat *seat, int dx, int dy)
 {
        int surface_changed = 0;
 
-       if (!seat->drag_surface && !seat->seat.drag_surface)
+       if (!seat->drag_surface && !seat->drag_surface)
                return;
 
-       if (seat->drag_surface && seat->seat.drag_surface &&
+       if (seat->drag_surface && seat->drag_surface &&
            (&seat->drag_surface->surface.resource !=
-            &seat->seat.drag_surface->resource))
+            &seat->next_drag_surface->resource))
                /* between calls to this funcion we got a new drag_surface */
                surface_changed = 1;
 
-       if (!seat->seat.drag_surface || surface_changed) {
+       if (!seat->drag_surface || surface_changed) {
                device_release_drag_surface(seat);
                if (!surface_changed)
                        return;
        }
 
        if (!seat->drag_surface || surface_changed) {
-               struct weston_surface *surface = (struct weston_surface *)
-                       seat->seat.drag_surface;
+               struct weston_surface *surface =
+                       (struct weston_surface *) seat->drag_surface;
                if (!device_setup_new_drag_surface(seat, surface))
                        return;
        }
index 9dbe9f0..60800bc 100644 (file)
@@ -456,7 +456,7 @@ pixman_renderer_destroy(struct weston_compositor *ec)
 }
 
 static void
-debug_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
+debug_binding(struct weston_seat *seat, uint32_t time, uint32_t key,
              void *data)
 {
        struct weston_compositor *ec = data;
index c8da376..ae97b4e 100644 (file)
@@ -203,7 +203,7 @@ screenshooter_sigchld(struct weston_process *process, int status)
 }
 
 static void
-screenshooter_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
+screenshooter_binding(struct weston_seat *seat, uint32_t time, uint32_t key,
                      void *data)
 {
        struct screenshooter *shooter = data;
@@ -452,7 +452,7 @@ weston_recorder_destroy(struct weston_recorder *recorder)
 }
 
 static void
-recorder_binding(struct wl_seat *seat, uint32_t time, uint32_t key, void *data)
+recorder_binding(struct weston_seat *seat, uint32_t time, uint32_t key, void *data)
 {
        struct weston_seat *ws = (struct weston_seat *) seat;
        struct weston_compositor *ec = ws->compositor;
index b7ee576..3a92728 100644 (file)
@@ -273,7 +273,7 @@ static struct desktop_shell *
 shell_surface_get_shell(struct shell_surface *shsurf);
 
 static void
-surface_rotate(struct shell_surface *surface, struct wl_seat *seat);
+surface_rotate(struct shell_surface *surface, struct weston_seat *seat);
 
 static bool
 shell_surface_is_top_fullscreen(struct shell_surface *shsurf)
@@ -504,7 +504,7 @@ restore_focus_state(struct desktop_shell *shell, struct workspace *ws)
                surface = state->keyboard_focus ?
                        &state->keyboard_focus->surface : NULL;
 
-               weston_keyboard_set_focus(state->seat->seat.keyboard, surface);
+               weston_keyboard_set_focus(state->seat->keyboard, surface);
        }
 }
 
@@ -517,7 +517,7 @@ replace_focus_state(struct desktop_shell *shell, struct workspace *ws,
 
        wl_list_for_each(state, &ws->focus_list, link) {
                if (state->seat == seat) {
-                       surface = seat->seat.keyboard->focus;
+                       surface = seat->keyboard->focus;
                        state->keyboard_focus =
                                (struct weston_surface *) surface;
                        return;
@@ -901,20 +901,19 @@ move_surface_to_workspace(struct desktop_shell *shell,
        drop_focus_state(shell, from, surface);
        wl_list_for_each(seat, &shell->compositor->seat_list, link)
                if (seat->has_keyboard &&
-                   seat->keyboard.focus == &surface->surface)
-                       weston_keyboard_set_focus(&seat->keyboard, NULL);
+                   seat->keyboard->focus == &surface->surface)
+                       weston_keyboard_set_focus(seat->keyboard, NULL);
 
        weston_surface_damage_below(surface);
 }
 
 static void
 take_surface_to_workspace_by_seat(struct desktop_shell *shell,
-                                 struct wl_seat *wl_seat,
+                                 struct weston_seat *seat,
                                  unsigned int index)
 {
-       struct weston_seat *seat = (struct weston_seat *) wl_seat;
        struct weston_surface *surface =
-               (struct weston_surface *) wl_seat->keyboard->focus;
+               (struct weston_surface *) seat->keyboard->focus;
        struct shell_surface *shsurf;
        struct workspace *from;
        struct workspace *to;
@@ -1068,7 +1067,7 @@ static const struct weston_pointer_grab_interface move_grab_interface = {
 };
 
 static int
-surface_move(struct shell_surface *shsurf, struct weston_seat *ws)
+surface_move(struct shell_surface *shsurf, struct weston_seat *seat)
 {
        struct weston_move_grab *move;
 
@@ -1083,12 +1082,12 @@ surface_move(struct shell_surface *shsurf, struct weston_seat *ws)
                return -1;
 
        move->dx = wl_fixed_from_double(shsurf->surface->geometry.x) -
-                       ws->seat.pointer->grab_x;
+                       seat->pointer->grab_x;
        move->dy = wl_fixed_from_double(shsurf->surface->geometry.y) -
-                       ws->seat.pointer->grab_y;
+                       seat->pointer->grab_y;
 
        shell_grab_start(&move->base, &move_grab_interface, shsurf,
-                        ws->seat.pointer, DESKTOP_SHELL_CURSOR_MOVE);
+                        seat->pointer, DESKTOP_SHELL_CURSOR_MOVE);
 
        return 0;
 }
@@ -1097,15 +1096,15 @@ static void
 shell_surface_move(struct wl_client *client, struct wl_resource *resource,
                   struct wl_resource *seat_resource, uint32_t serial)
 {
-       struct weston_seat *ws = seat_resource->data;
+       struct weston_seat *seat = seat_resource->data;
        struct shell_surface *shsurf = resource->data;
 
-       if (ws->seat.pointer->button_count == 0 ||
-           ws->seat.pointer->grab_serial != serial ||
-           ws->seat.pointer->focus != &shsurf->surface->surface)
+       if (seat->pointer->button_count == 0 ||
+           seat->pointer->grab_serial != serial ||
+           seat->pointer->focus != &shsurf->surface->surface)
                return;
 
-       if (surface_move(shsurf, ws) < 0)
+       if (surface_move(shsurf, seat) < 0)
                wl_resource_post_no_memory(resource);
 }
 
@@ -1190,7 +1189,7 @@ static const struct weston_pointer_grab_interface resize_grab_interface = {
 
 static int
 surface_resize(struct shell_surface *shsurf,
-              struct weston_seat *ws, uint32_t edges)
+              struct weston_seat *seat, uint32_t edges)
 {
        struct weston_resize_grab *resize;
 
@@ -1211,7 +1210,7 @@ surface_resize(struct shell_surface *shsurf,
        resize->height = shsurf->surface->geometry.height;
 
        shell_grab_start(&resize->base, &resize_grab_interface, shsurf,
-                        ws->seat.pointer, edges);
+                        seat->pointer, edges);
 
        return 0;
 }
@@ -1221,18 +1220,18 @@ shell_surface_resize(struct wl_client *client, struct wl_resource *resource,
                     struct wl_resource *seat_resource, uint32_t serial,
                     uint32_t edges)
 {
-       struct weston_seat *ws = seat_resource->data;
+       struct weston_seat *seat = seat_resource->data;
        struct shell_surface *shsurf = resource->data;
 
        if (shsurf->type == SHELL_SURFACE_FULLSCREEN)
                return;
 
-       if (ws->seat.pointer->button_count == 0 ||
-           ws->seat.pointer->grab_serial != serial ||
-           ws->seat.pointer->focus != &shsurf->surface->surface)
+       if (seat->pointer->button_count == 0 ||
+           seat->pointer->grab_serial != serial ||
+           seat->pointer->focus != &shsurf->surface->surface)
                return;
 
-       if (surface_resize(shsurf, ws, edges) < 0)
+       if (surface_resize(shsurf, seat, edges) < 0)
                wl_resource_post_no_memory(resource);
 }
 
@@ -1262,8 +1261,7 @@ busy_cursor_grab_button(struct weston_pointer_grab *base,
        struct shell_surface *shsurf;
        struct weston_surface *surface =
                (struct weston_surface *) grab->grab.pointer->current;
-       struct weston_seat *seat =
-               (struct weston_seat *) grab->grab.pointer->seat;
+       struct weston_seat *seat = grab->grab.pointer->seat;
 
        shsurf = get_shell_surface(surface);
        if (shsurf && button == BTN_LEFT && state) {
@@ -1271,7 +1269,7 @@ busy_cursor_grab_button(struct weston_pointer_grab *base,
                surface_move(shsurf, seat);
        } else if (shsurf && button == BTN_RIGHT && state) {
                activate(shsurf->shell, shsurf->surface, seat);
-               surface_rotate(shsurf, &seat->seat);
+               surface_rotate(shsurf, seat);
        }
 }
 
@@ -1328,8 +1326,8 @@ ping_timeout_handler(void *data)
        shsurf->unresponsive = 1;
 
        wl_list_for_each(seat, &shsurf->surface->compositor->seat_list, link)
-               if (seat->seat.pointer->focus == &shsurf->surface->surface)
-                       set_busy_cursor(shsurf, seat->seat.pointer);
+               if (seat->pointer->focus == &shsurf->surface->surface)
+                       set_busy_cursor(shsurf, seat->pointer);
 
        return 1;
 }
@@ -1393,12 +1391,12 @@ create_pointer_focus_listener(struct weston_seat *seat)
 {
        struct wl_listener *listener;
 
-       if (!seat->seat.pointer)
+       if (!seat->pointer)
                return;
 
        listener = malloc(sizeof *listener);
        listener->notify = handle_pointer_focus;
-       wl_signal_add(&seat->seat.pointer->focus_signal, listener);
+       wl_signal_add(&seat->pointer->focus_signal, listener);
 }
 
 static void
@@ -1422,7 +1420,7 @@ shell_surface_pong(struct wl_client *client, struct wl_resource *resource,
                if (was_unresponsive) {
                        /* Received pong from previously unresponsive client */
                        wl_list_for_each(seat, &ec->seat_list, link) {
-                               pointer = seat->seat.pointer;
+                               pointer = seat->pointer;
                                if (pointer->focus ==
                                    &shell->grab_surface->surface &&
                                    pointer->current ==
@@ -1969,7 +1967,7 @@ popup_grab_button(struct weston_pointer_grab *grab,
                wl_pointer_send_button(resource, serial, time, button, state);
        } else if (state == WL_POINTER_BUTTON_STATE_RELEASED &&
                   (shseat->popup_grab.initial_up ||
-                   time - shseat->seat->pointer.grab_time > 500)) {
+                   time - shseat->seat->pointer->grab_time > 500)) {
                popup_grab_end(grab->pointer);
        }
 
@@ -2014,7 +2012,7 @@ popup_grab_end(struct weston_pointer *pointer)
 static void
 add_popup_grab(struct shell_surface *shsurf, struct shell_seat *shseat)
 {
-       struct wl_seat *seat = &shseat->seat->seat;
+       struct weston_seat *seat = shseat->seat;
 
        if (wl_list_empty(&shseat->popup_grab.surfaces_list)) {
                shseat->popup_grab.client = shsurf->surface->surface.resource.client;
@@ -2022,7 +2020,7 @@ add_popup_grab(struct shell_surface *shsurf, struct shell_seat *shseat)
                /* We must make sure here that this popup was opened after
                 * a mouse press, and not just by moving around with other
                 * popups already open. */
-               if (shseat->seat->pointer.button_count > 0)
+               if (shseat->seat->pointer->button_count > 0)
                        shseat->popup_grab.initial_up = 0;
 
                weston_pointer_start_grab(seat->pointer, &shseat->popup_grab.grab);
@@ -2056,7 +2054,7 @@ shell_map_popup(struct shell_surface *shsurf)
        weston_surface_set_position(es, shsurf->popup.x, shsurf->popup.y);
        weston_surface_update_transform(es);
 
-       if (shseat->seat->pointer.grab_serial == shsurf->popup.serial) {
+       if (shseat->seat->pointer->grab_serial == shsurf->popup.serial) {
                add_popup_grab(shsurf, shseat);
        } else {
                wl_shell_surface_send_popup_done(&shsurf->resource);
@@ -2518,7 +2516,7 @@ get_shell_surface_type(struct weston_surface *surface)
 }
 
 static void
-move_binding(struct wl_seat *seat, uint32_t time, uint32_t button, void *data)
+move_binding(struct weston_seat *seat, uint32_t time, uint32_t button, void *data)
 {
        struct weston_surface *surface =
                (struct weston_surface *) seat->pointer->focus;
@@ -2536,7 +2534,7 @@ move_binding(struct wl_seat *seat, uint32_t time, uint32_t button, void *data)
 }
 
 static void
-resize_binding(struct wl_seat *seat, uint32_t time, uint32_t button, void *data)
+resize_binding(struct weston_seat *seat, uint32_t time, uint32_t button, void *data)
 {
        struct weston_surface *surface =
                (struct weston_surface *) seat->pointer->focus;
@@ -2575,7 +2573,7 @@ resize_binding(struct wl_seat *seat, uint32_t time, uint32_t button, void *data)
 }
 
 static void
-surface_opacity_binding(struct wl_seat *seat, uint32_t time, uint32_t axis,
+surface_opacity_binding(struct weston_seat *seat, uint32_t time, uint32_t axis,
                        wl_fixed_t value, void *data)
 {
        float step = 0.005;
@@ -2602,7 +2600,7 @@ surface_opacity_binding(struct wl_seat *seat, uint32_t time, uint32_t axis,
 }
 
 static void
-do_zoom(struct wl_seat *seat, uint32_t time, uint32_t key, uint32_t axis,
+do_zoom(struct weston_seat *seat, uint32_t time, uint32_t key, uint32_t axis,
        wl_fixed_t value)
 {
        struct weston_seat *ws = (struct weston_seat *) seat;
@@ -2645,21 +2643,21 @@ do_zoom(struct wl_seat *seat, uint32_t time, uint32_t key, uint32_t axis,
 }
 
 static void
-zoom_axis_binding(struct wl_seat *seat, uint32_t time, uint32_t axis,
+zoom_axis_binding(struct weston_seat *seat, uint32_t time, uint32_t axis,
                  wl_fixed_t value, void *data)
 {
        do_zoom(seat, time, 0, axis, value);
 }
 
 static void
-zoom_key_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
+zoom_key_binding(struct weston_seat *seat, uint32_t time, uint32_t key,
                 void *data)
 {
        do_zoom(seat, time, key, 0, 0);
 }
 
 static void
-terminate_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
+terminate_binding(struct weston_seat *seat, uint32_t time, uint32_t key,
                  void *data)
 {
        struct weston_compositor *compositor = data;
@@ -2760,7 +2758,7 @@ static const struct weston_pointer_grab_interface rotate_grab_interface = {
 };
 
 static void
-surface_rotate(struct shell_surface *surface, struct wl_seat *seat)
+surface_rotate(struct shell_surface *surface, struct weston_seat *seat)
 {
        struct rotate_grab *rotate;
        float dx, dy;
@@ -2797,7 +2795,7 @@ surface_rotate(struct shell_surface *surface, struct wl_seat *seat)
 }
 
 static void
-rotate_binding(struct wl_seat *seat, uint32_t time, uint32_t button,
+rotate_binding(struct weston_seat *seat, uint32_t time, uint32_t button,
               void *data)
 {
        struct weston_surface *base_surface =
@@ -2877,7 +2875,7 @@ is_black_surface (struct weston_surface *es, struct weston_surface **fs_surface)
 }
 
 static void
-click_to_activate_binding(struct wl_seat *seat, uint32_t time, uint32_t button,
+click_to_activate_binding(struct weston_seat *seat, uint32_t time, uint32_t button,
                          void *data)
 {
        struct weston_seat *ws = (struct weston_seat *) seat;
@@ -3130,8 +3128,8 @@ weston_surface_set_initial_position (struct weston_surface *surface,
         */
        wl_list_for_each(seat, &compositor->seat_list, link) {
                if (seat->has_pointer) {
-                       ix = wl_fixed_to_int(seat->pointer.x);
-                       iy = wl_fixed_to_int(seat->pointer.y);
+                       ix = wl_fixed_to_int(seat->pointer->x);
+                       iy = wl_fixed_to_int(seat->pointer->y);
                        break;
                }
        }
@@ -3851,7 +3849,7 @@ static const struct weston_keyboard_grab_interface switcher_grab = {
 };
 
 static void
-switcher_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
+switcher_binding(struct weston_seat *seat, uint32_t time, uint32_t key,
                 void *data)
 {
        struct desktop_shell *shell = data;
@@ -3871,7 +3869,7 @@ switcher_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
 }
 
 static void
-backlight_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
+backlight_binding(struct weston_seat *seat, uint32_t time, uint32_t key,
                  void *data)
 {
        struct weston_compositor *compositor = data;
@@ -3904,7 +3902,7 @@ backlight_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
 }
 
 static void
-fan_debug_repaint_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
+fan_debug_repaint_binding(struct weston_seat *seat, uint32_t time, uint32_t key,
                      void *data)
 {
        struct desktop_shell *shell = data;
@@ -4017,7 +4015,7 @@ struct weston_keyboard_grab_interface debug_binding_keyboard_grab = {
 };
 
 static void
-debug_binding(struct wl_seat *seat, uint32_t time, uint32_t key, void *data)
+debug_binding(struct weston_seat *seat, uint32_t time, uint32_t key, void *data)
 {
        struct debug_binding_grab *grab;
 
@@ -4032,7 +4030,7 @@ debug_binding(struct wl_seat *seat, uint32_t time, uint32_t key, void *data)
 }
 
 static void
-force_kill_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
+force_kill_binding(struct weston_seat *seat, uint32_t time, uint32_t key,
                   void *data)
 {
        struct wl_surface *focus_surface;
@@ -4059,7 +4057,7 @@ force_kill_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
 }
 
 static void
-workspace_up_binding(struct wl_seat *seat, uint32_t time,
+workspace_up_binding(struct weston_seat *seat, uint32_t time,
                     uint32_t key, void *data)
 {
        struct desktop_shell *shell = data;
@@ -4074,7 +4072,7 @@ workspace_up_binding(struct wl_seat *seat, uint32_t time,
 }
 
 static void
-workspace_down_binding(struct wl_seat *seat, uint32_t time,
+workspace_down_binding(struct weston_seat *seat, uint32_t time,
                       uint32_t key, void *data)
 {
        struct desktop_shell *shell = data;
@@ -4089,7 +4087,7 @@ workspace_down_binding(struct wl_seat *seat, uint32_t time,
 }
 
 static void
-workspace_f_binding(struct wl_seat *seat, uint32_t time,
+workspace_f_binding(struct weston_seat *seat, uint32_t time,
                    uint32_t key, void *data)
 {
        struct desktop_shell *shell = data;
@@ -4105,7 +4103,7 @@ workspace_f_binding(struct wl_seat *seat, uint32_t time,
 }
 
 static void
-workspace_move_surface_up_binding(struct wl_seat *seat, uint32_t time,
+workspace_move_surface_up_binding(struct weston_seat *seat, uint32_t time,
                                  uint32_t key, void *data)
 {
        struct desktop_shell *shell = data;
@@ -4121,7 +4119,7 @@ workspace_move_surface_up_binding(struct wl_seat *seat, uint32_t time,
 }
 
 static void
-workspace_move_surface_down_binding(struct wl_seat *seat, uint32_t time,
+workspace_move_surface_down_binding(struct weston_seat *seat, uint32_t time,
                                    uint32_t key, void *data)
 {
        struct desktop_shell *shell = data;
index a125bbc..87df80a 100644 (file)
@@ -445,7 +445,7 @@ long_press_handler(void *data)
 }
 
 static void
-menu_key_binding(struct wl_seat *seat, uint32_t time, uint32_t key, void *data)
+menu_key_binding(struct weston_seat *seat, uint32_t time, uint32_t key, void *data)
 {
        struct tablet_shell *shell = data;
 
@@ -456,7 +456,7 @@ menu_key_binding(struct wl_seat *seat, uint32_t time, uint32_t key, void *data)
 }
 
 static void
-home_key_binding(struct wl_seat *seat, uint32_t time, uint32_t key, void *data)
+home_key_binding(struct weston_seat *seat, uint32_t time, uint32_t key, void *data)
 {
        struct tablet_shell *shell = data;
 
index aa91da7..ed9bf8b 100644 (file)
@@ -571,7 +571,7 @@ input_method_context_grab_keyboard(struct wl_client *client,
        struct input_method_context *context = resource->data;
        struct wl_resource *cr;
        struct weston_seat *seat = context->input_method->seat;
-       struct weston_keyboard *keyboard = &seat->keyboard;
+       struct weston_keyboard *keyboard = seat->keyboard;
 
        cr = wl_client_add_object(client, &wl_keyboard_interface,
                                  NULL, id, context);
@@ -600,7 +600,7 @@ input_method_context_key(struct wl_client *client,
 {
        struct input_method_context *context = resource->data;
        struct weston_seat *seat = context->input_method->seat;
-       struct weston_keyboard *keyboard = seat->seat.keyboard;
+       struct weston_keyboard *keyboard = seat->keyboard;
        struct weston_keyboard_grab *default_grab = &keyboard->default_grab;
 
        default_grab->interface->key(default_grab, time, key, state_w);
@@ -618,7 +618,7 @@ input_method_context_modifiers(struct wl_client *client,
        struct input_method_context *context = resource->data;
 
        struct weston_seat *seat = context->input_method->seat;
-       struct weston_keyboard *keyboard = seat->seat.keyboard;
+       struct weston_keyboard *keyboard = seat->keyboard;
        struct weston_keyboard_grab *default_grab = &keyboard->default_grab;
 
        default_grab->interface->modifiers(default_grab,
@@ -712,7 +712,8 @@ input_method_context_create(struct text_input *model,
 static void
 input_method_context_end_keyboard_grab(struct input_method_context *context)
 {
-       struct weston_keyboard_grab *grab = &context->input_method->seat->keyboard.input_method_grab;
+       struct weston_keyboard_grab *grab =
+               &context->input_method->seat->keyboard->input_method_grab;
        struct weston_keyboard *keyboard = grab->keyboard;
 
        if (!grab->keyboard)
@@ -811,8 +812,8 @@ input_method_init_seat(struct weston_seat *seat)
 
        if (seat->has_keyboard) {
                seat->input_method->keyboard_focus_listener.notify = handle_keyboard_focus;
-               wl_signal_add(&seat->seat.keyboard->focus_signal, &seat->input_method->keyboard_focus_listener);
-               seat->keyboard.input_method_grab.interface = &input_method_context_grab;
+               wl_signal_add(&seat->keyboard->focus_signal, &seat->input_method->keyboard_focus_listener);
+               seat->keyboard->input_method_grab.interface = &input_method_context_grab;
        }
 
        seat->input_method->focus_listener_initialized = 1;
index bdd3ef5..7e62429 100644 (file)
@@ -231,7 +231,7 @@ udev_seat_remove_devices(struct udev_seat *seat)
        wl_list_for_each_safe(device, next, &seat->devices_list, link)
                evdev_device_destroy(device);
 
-       if (seat->base.seat.keyboard)
+       if (seat->base.keyboard)
                notify_keyboard_focus_out(&seat->base);
 }
 
index edc7ce6..69665b7 100644 (file)
@@ -195,8 +195,8 @@ weston_wm_get_selection_targets(struct weston_wm *wm)
        }
 
        compositor = wm->server->compositor;
-       wl_seat_set_selection(&seat->seat, &source->base,
-                             wl_display_next_serial(compositor->wl_display));
+       weston_seat_set_selection(seat, &source->base,
+                                 wl_display_next_serial(compositor->wl_display));
 
        free(reply);
 }
@@ -441,7 +441,7 @@ weston_wm_send_data(struct weston_wm *wm, xcb_atom_t target, const char *mime_ty
                                                   weston_wm_read_data_source,
                                                   wm);
 
-       source = seat->seat.selection_data_source;
+       source = seat->selection_data_source;
        source->send(source, mime_type, p[1]);
 }
 
@@ -563,7 +563,7 @@ weston_wm_handle_xfixes_selection_notify(struct weston_wm *wm,
                         * proxy selection.  Clear the wayland selection. */
                        compositor = wm->server->compositor;
                        serial = wl_display_next_serial(compositor->wl_display);
-                       wl_seat_set_selection(&seat->seat, NULL, serial);
+                       weston_seat_set_selection(seat, NULL, serial);
                }
 
                wm->selection_owner = XCB_WINDOW_NONE;
@@ -619,7 +619,7 @@ weston_wm_handle_selection_event(struct weston_wm *wm,
 static void
 weston_wm_set_selection(struct wl_listener *listener, void *data)
 {
-       struct wl_seat *seat = data;
+       struct weston_seat *seat = data;
        struct weston_wm *wm =
                container_of(listener, struct weston_wm, selection_listener);
        struct wl_data_source *source = seat->selection_data_source;
@@ -697,7 +697,7 @@ weston_wm_selection_init(struct weston_wm *wm)
 
        seat = weston_wm_pick_seat(wm);
        wm->selection_listener.notify = weston_wm_set_selection;
-       wl_signal_add(&seat->seat.selection_signal, &wm->selection_listener);
+       wl_signal_add(&seat->selection_signal, &wm->selection_listener);
 
        weston_wm_set_selection(&wm->selection_listener, seat);
 }
index ccce277..e1147db 100644 (file)
@@ -1015,8 +1015,8 @@ weston_wm_window_handle_moveresize(struct weston_wm_window *window,
        struct weston_shell_interface *shell_interface =
                &wm->server->compositor->shell_interface;
 
-       if (seat->seat.pointer->button_count != 1 ||
-           seat->seat.pointer->focus != &window->surface->surface)
+       if (seat->pointer->button_count != 1 ||
+           seat->pointer->focus != &window->surface->surface)
                return;
 
        detail = client_message->data.data32[2];
index d57b868..ccc5d49 100644 (file)
@@ -168,10 +168,10 @@ weston_zoom_frame_xy(struct weston_animation *animation,
                output->zoom.spring_xy.current = output->zoom.spring_xy.target;
                output->zoom.current.x =
                        output->zoom.type == ZOOM_FOCUS_POINTER ?
-                               seat->pointer.x : output->zoom.text_cursor.x;
+                               seat->pointer->x : output->zoom.text_cursor.x;
                output->zoom.current.y =
                        output->zoom.type == ZOOM_FOCUS_POINTER ?
-                               seat->pointer.y : output->zoom.text_cursor.y;
+                               seat->pointer->y : output->zoom.text_cursor.y;
                wl_list_remove(&animation->link);
                wl_list_init(&animation->link);
        }
@@ -337,15 +337,15 @@ WL_EXPORT void
 weston_output_update_zoom(struct weston_output *output, uint32_t type)
 {
        struct weston_seat *seat = weston_zoom_pick_seat(output->compositor);
-       wl_fixed_t x = seat->pointer.x;
-       wl_fixed_t y = seat->pointer.y;
+       wl_fixed_t x = seat->pointer->x;
+       wl_fixed_t y = seat->pointer->y;
 
        zoom_area_center_from_pointer(output, &x, &y);
 
        if (type == ZOOM_FOCUS_POINTER) {
                if (wl_list_empty(&output->zoom.animation_xy.link)) {
-                       output->zoom.current.x = seat->pointer.x;
-                       output->zoom.current.y = seat->pointer.y;
+                       output->zoom.current.x = seat->pointer->x;
+                       output->zoom.current.y = seat->pointer->y;
                } else {
                        output->zoom.to.x = x;
                        output->zoom.to.y = y;
index ba01a0e..612841b 100644 (file)
@@ -68,7 +68,7 @@ static void
 notify_pointer_position(struct weston_test *test, struct wl_resource *resource)
 {
        struct weston_seat *seat = get_seat(test);
-       struct weston_pointer *pointer = seat->seat.pointer;
+       struct weston_pointer *pointer = seat->pointer;
 
        wl_test_send_pointer_position(resource, pointer->x, pointer->y);
 }
@@ -119,7 +119,7 @@ move_pointer(struct wl_client *client, struct wl_resource *resource,
 {
        struct weston_test *test = resource->data;
        struct weston_seat *seat = get_seat(test);
-       struct weston_pointer *pointer = seat->seat.pointer;
+       struct weston_pointer *pointer = seat->pointer;
 
        test->compositor->focus = 1;
 
@@ -155,7 +155,7 @@ activate_surface(struct wl_client *client, struct wl_resource *resource,
 
        if (surface) {
                weston_surface_activate(surface, seat);
-               notify_keyboard_focus_in(seat, &seat->keyboard.keys,
+               notify_keyboard_focus_in(seat, &seat->keyboard->keys,
                                         STATE_UPDATE_AUTOMATIC);
        }
        else {