diff options
author | emersion <contact@emersion.fr> | 2018-02-20 12:33:13 +0100 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2018-02-20 12:33:13 +0100 |
commit | 4eaffc3e45695ed95eda7d835a96717f153a1391 (patch) | |
tree | 2f4085e10fc299861811d49cf4862467cfc71ac7 | |
parent | c4fb9651445bb7302a904b05583c064ff09cb48e (diff) |
primary-selection: fix crash in device_handle_set_selection
-rw-r--r-- | types/wlr_primary_selection.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/types/wlr_primary_selection.c b/types/wlr_primary_selection.c index 9c267405..b8f3094b 100644 --- a/types/wlr_primary_selection.c +++ b/types/wlr_primary_selection.c @@ -253,6 +253,16 @@ void wlr_seat_set_primary_selection(struct wlr_seat *seat, } } + +static const struct gtk_primary_selection_device_interface device_impl; + +static struct wlr_seat_client *seat_client_from_device_resource( + struct wl_resource *resource) { + assert(wl_resource_instance_of(resource, + >k_primary_selection_device_interface, &device_impl)); + return wl_resource_get_user_data(resource); +} + static void device_handle_set_selection(struct wl_client *client, struct wl_resource *resource, struct wl_resource *source_resource, uint32_t serial) { @@ -262,7 +272,7 @@ static void device_handle_set_selection(struct wl_client *client, } struct wlr_seat_client *seat_client = - wlr_seat_client_from_resource(resource); + seat_client_from_device_resource(resource); struct wlr_primary_selection_source *wlr_source = (struct wlr_primary_selection_source *)source; |