diff options
author | Jason Ekstrand <jason@jlekstrand.net> | 2013-01-11 14:29:32 -0600 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2013-01-11 15:52:39 -0500 |
commit | 31511d0ea08e9419bf6a3169ea196a551b4a94be (patch) | |
tree | bd928e6744b225d3f39a9e27487b73f73c199e9a /src | |
parent | 0d2c233e15137abf9c9ec55b8b9b120318af1375 (diff) |
Added a destroy signal to the wl_display object.
Added a destroy signal to the wl_display object.
Diffstat (limited to 'src')
-rw-r--r-- | src/wayland-server.c | 20 | ||||
-rw-r--r-- | src/wayland-server.h | 5 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/wayland-server.c b/src/wayland-server.c index f7f4c14..dae7177 100644 --- a/src/wayland-server.c +++ b/src/wayland-server.c @@ -90,6 +90,8 @@ struct wl_display { struct wl_list global_list; struct wl_list socket_list; struct wl_list client_list; + + struct wl_signal destroy_signal; }; struct wl_global { @@ -1096,6 +1098,8 @@ wl_display_create(void) wl_list_init(&display->client_list); wl_list_init(&display->registry_resource_list); + wl_signal_init(&display->destroy_signal); + display->id = 1; display->serial = 0; @@ -1115,6 +1119,8 @@ wl_display_destroy(struct wl_display *display) struct wl_socket *s, *next; struct wl_global *global, *gnext; + wl_signal_emit(&display->destroy_signal, display); + wl_list_for_each_safe(s, next, &display->socket_list, link) { wl_event_source_remove(s->source); unlink(s->addr.sun_path); @@ -1381,6 +1387,20 @@ wl_display_add_socket(struct wl_display *display, const char *name) return 0; } +WL_EXPORT void +wl_display_add_destroy_listener(struct wl_display *display, + struct wl_listener *listener) +{ + wl_signal_add(&display->destroy_signal, listener); +} + +WL_EXPORT struct wl_listener * +wl_display_get_destroy_listener(struct wl_display *display, + wl_notify_func_t notify) +{ + return wl_signal_get(&display->destroy_signal, notify); +} + WL_EXPORT struct wl_resource * wl_client_add_object(struct wl_client *client, const struct wl_interface *interface, diff --git a/src/wayland-server.h b/src/wayland-server.h index 3357105..576304f 100644 --- a/src/wayland-server.h +++ b/src/wayland-server.h @@ -106,6 +106,11 @@ void wl_display_remove_global(struct wl_display *display, uint32_t wl_display_get_serial(struct wl_display *display); uint32_t wl_display_next_serial(struct wl_display *display); +void wl_display_add_destroy_listener(struct wl_display *display, + struct wl_listener *listener); +struct wl_listener *wl_display_get_destroy_listener(struct wl_display *display, + wl_notify_func_t notify); + struct wl_client *wl_client_create(struct wl_display *display, int fd); void wl_client_destroy(struct wl_client *client); void wl_client_flush(struct wl_client *client); |