clipboard: add seat destroy signal handler
authorRafal Mielniczuk <rafal.mielniczuk2@gmail.com>
Wed, 11 Jul 2012 16:48:12 +0000 (18:48 +0200)
committerKristian Høgsberg <krh@bitplanet.net>
Wed, 11 Jul 2012 19:42:46 +0000 (15:42 -0400)
src/clipboard.c

index 22d4b26..7db5d04 100644 (file)
@@ -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;
 }