aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2018-02-20 07:49:29 -0500
committerGitHub <noreply@github.com>2018-02-20 07:49:29 -0500
commit2e7d8862549a786c5aafcbe20db290377e3228ac (patch)
tree2f4085e10fc299861811d49cf4862467cfc71ac7
parentc4fb9651445bb7302a904b05583c064ff09cb48e (diff)
parent4eaffc3e45695ed95eda7d835a96717f153a1391 (diff)
Merge pull request #653 from emersion/fix-primary-selection-set-crash
primary-selection: fix crash in device_handle_set_selection
-rw-r--r--types/wlr_primary_selection.c12
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,
+ &gtk_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;