summaryrefslogtreecommitdiff
path: root/src/clipboard.c
diff options
context:
space:
mode:
authorRafal Mielniczuk <rafal.mielniczuk2@gmail.com>2012-07-11 18:48:12 +0200
committerKristian Høgsberg <krh@bitplanet.net>2012-07-11 15:42:46 -0400
commit96ddcb25abe308340f088954e1b32e25c1fab8ed (patch)
tree3c3472756a6d5712f4aa744f4ae99a7d84a226a9 /src/clipboard.c
parent28f59b027a56da58a2cde306d8f0497a8a804ad3 (diff)
downloadweston-96ddcb25abe308340f088954e1b32e25c1fab8ed.tar.gz
clipboard: add seat destroy signal handler
Diffstat (limited to 'src/clipboard.c')
-rw-r--r--src/clipboard.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/clipboard.c b/src/clipboard.c
index 22d4b261..7db5d045 100644
--- a/src/clipboard.c
+++ b/src/clipboard.c
@@ -243,6 +243,17 @@ clipboard_set_selection(struct wl_listener *listener, void *data)
return;
}
+static void
+clipboard_destroy(struct wl_listener *listener, void *data)
+{
+ struct clipboard *clipboard =
+ container_of(listener, struct clipboard, destroy_listener);
+
+ wl_list_remove(&clipboard->selection_listener.link);
+
+ free(clipboard);
+}
+
struct clipboard *
clipboard_create(struct weston_seat *seat)
{
@@ -255,9 +266,12 @@ clipboard_create(struct weston_seat *seat)
clipboard->seat = seat;
clipboard->selection_listener.notify = clipboard_set_selection;
+ clipboard->destroy_listener.notify = clipboard_destroy;
wl_signal_add(&seat->seat.selection_signal,
&clipboard->selection_listener);
+ wl_signal_add(&seat->seat.destroy_signal,
+ &clipboard->destroy_listener);
return clipboard;
}