[PATCH wayland] server: add listener API for new clients

nicesj at nicesj.com nicesj at nicesj.com
Thu Feb 11 12:20:00 UTC 2016


Using display object, Emit a signal if a new client is created.

In the server-side, we can get the destroy event of a client,
But there is no way to get the created event of it.
Of course, we can get the client object from the global registry
binding callbacks.
But it can be called several times with same client object.
And even if A client creates display object,
(so there is a connection), The server could not know that.
There could be more use-cases not only for this.

Signed-off-by: Sung-jae Park <nicesj at nicesj.com>

diff --git a/src/wayland-server-core.h b/src/wayland-server-core.h
index cb72981..1bc4d6b 100644
--- a/src/wayland-server-core.h
+++ b/src/wayland-server-core.h
@@ -156,19 +156,8 @@ void
 wl_display_add_destroy_listener(struct wl_display *display,
 				struct wl_listener *listener);
 
-/** Add a listener for getting a notification of creation of clients.
- *  If you add a listener, server will emits a signal if a new client
- *  is created.
- *
- *  \ref wl_client_create
- *  \ref wl_display
- *  \ref wl_listener
- *
- * \param display The display object
- * \param listener Signal handler object
- */
 void
-wl_display_add_create_client_listener(struct wl_display *display,
+wl_display_add_client_created_listener(struct wl_display *display,
 					struct wl_listener *listener);
 
 struct wl_listener *
diff --git a/src/wayland-server.c b/src/wayland-server.c
index 0eff8f6..2857b1d 100644
--- a/src/wayland-server.c
+++ b/src/wayland-server.c
@@ -1357,8 +1357,19 @@ wl_display_add_destroy_listener(struct wl_display *display,
 	wl_signal_add(&display->destroy_signal, listener);
 }
 
+/** Registers a listener for the client connection signal.
+ *  When a new client object is created, \a listener will be notified, carring
+ *  a pointer to the new wl_client object.
+ *
+ *  \ref wl_client_create
+ *  \ref wl_display
+ *  \ref wl_listener
+ *
+ * \param display The display object
+ * \param listener Signal handler object
+ */
 WL_EXPORT void
-wl_display_add_create_client_listener(struct wl_display *display,
+wl_display_add_client_created_listener(struct wl_display *display,
 					struct wl_listener *listener)
 {
 	wl_signal_add(&display->create_client_signal, listener);


More information about the wayland-devel mailing list