Oops, thanks

Reviewed-by: Derek Foreman <[email protected]>

On 31/07/15 09:46 PM, Dawid Gajownik wrote:
> Keyboards and pointers aren't freed when devices are removed, so we
> should really be testing keyboard_device_count and pointer_device_count
> in most cases, not the actual pointers. Otherwise we end up with
> different behaviour after removing a device than we had before it was
> inserted.
> 
> This commit makes screen-share.c compile once again after changes in
> commit 1281a36e3bcd27345bd4a107f282213ecca56f0e.
> 
> Signed-off-by: Dawid Gajownik <[email protected]>
> ---
>  src/screen-share.c | 24 ++++++++++++++----------
>  1 file changed, 14 insertions(+), 10 deletions(-)
> 
> diff --git a/src/screen-share.c b/src/screen-share.c
> index 10dc128..e5f91ea 100644
> --- a/src/screen-share.c
> +++ b/src/screen-share.c
> @@ -173,7 +173,7 @@ static const struct wl_pointer_listener 
> ss_seat_pointer_listener = {
>  };
>  
>  static void
> -ss_seat_handle_keymap(void *data, struct wl_keyboard *keyboard,
> +ss_seat_handle_keymap(void *data, struct wl_keyboard *wl_keyboard,
>                     uint32_t format, int fd, uint32_t size)
>  {
>       struct ss_seat *seat = data;
> @@ -213,7 +213,7 @@ ss_seat_handle_keymap(void *data, struct wl_keyboard 
> *keyboard,
>  
>       close(fd);
>  
> -     if (seat->base.keyboard)
> +     if (seat->base.keyboard_device_count)
>               weston_seat_update_keymap(&seat->base, keymap);
>       else
>               weston_seat_init_keyboard(&seat->base, keymap);
> @@ -264,13 +264,14 @@ ss_seat_handle_key(void *data, struct wl_keyboard 
> *keyboard,
>  }
>  
>  static void
> -ss_seat_handle_modifiers(void *data, struct wl_keyboard *keyboard,
> +ss_seat_handle_modifiers(void *data, struct wl_keyboard *wl_keyboard,
>                        uint32_t serial_in, uint32_t mods_depressed,
>                        uint32_t mods_latched, uint32_t mods_locked,
>                        uint32_t group)
>  {
>       struct ss_seat *seat = data;
> -     struct weston_compositor *c = seat->output->output->compositor;
> +     struct weston_compositor *c = seat->base.compositor;
> +     struct weston_keyboard *keyboard;
>       uint32_t serial_out;
>  
>       /* If we get a key event followed by a modifier event with the
> @@ -281,7 +282,8 @@ ss_seat_handle_modifiers(void *data, struct wl_keyboard 
> *keyboard,
>       else
>               serial_out = wl_display_next_serial(c->wl_display);
>  
> -     xkb_state_update_mask(seat->base.keyboard->xkb_state.state,
> +     keyboard = weston_seat_get_keyboard(&seat->base);
> +     xkb_state_update_mask(keyboard->xkb_state.state,
>                             mods_depressed, mods_latched,
>                             mods_locked, 0, 0, group);
>       notify_modifiers(&seat->base, serial_out);
> @@ -1066,20 +1068,22 @@ weston_output_find(struct weston_compositor *c, 
> int32_t x, int32_t y)
>  }
>  
>  static void
> -share_output_binding(struct weston_seat *seat, uint32_t time, uint32_t key,
> +share_output_binding(struct weston_keyboard *keyboard, uint32_t time, 
> uint32_t key,
>                    void *data)
>  {
>       struct weston_output *output;
> +     struct weston_pointer *pointer;
>       struct screen_share *ss = data;
>  
> -     if (!seat->pointer) {
> +     pointer = weston_seat_get_pointer(keyboard->seat);
> +     if (!pointer) {
>               weston_log("Cannot pick output: Seat does not have pointer\n");
>               return;
>       }
>  
> -     output = weston_output_find(seat->compositor,
> -                                 wl_fixed_to_int(seat->pointer->x),
> -                                 wl_fixed_to_int(seat->pointer->y));
> +     output = weston_output_find(pointer->seat->compositor,
> +                                 wl_fixed_to_int(pointer->x),
> +                                 wl_fixed_to_int(pointer->y));
>       if (!output) {
>               weston_log("Cannot pick output: Pointer not on any output\n");
>               return;
> 

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to