Merge pull request #653 from emersion/fix-primary-selection-set-crash

primary-selection: fix crash in device_handle_set_selection
This commit is contained in:
Drew DeVault 2018-02-20 07:49:29 -05:00 committed by GitHub
commit 2e7d886254
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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,
&gtk_primary_selection_device_interface, &device_impl));
return wl_resource_get_user_data(resource);
}
static void device_handle_set_selection(struct wl_client *client, static void device_handle_set_selection(struct wl_client *client,
struct wl_resource *resource, struct wl_resource *source_resource, struct wl_resource *resource, struct wl_resource *source_resource,
uint32_t serial) { uint32_t serial) {
@ -262,7 +272,7 @@ static void device_handle_set_selection(struct wl_client *client,
} }
struct wlr_seat_client *seat_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 *wlr_source =
(struct wlr_primary_selection_source *)source; (struct wlr_primary_selection_source *)source;