[PATCH wayland 4/5] Add a resource creation signal
Pekka Paalanen
ppaalanen at gmail.com
Fri Jun 17 11:56:45 UTC 2016
On Mon, 7 Mar 2016 18:31:34 +0100
Giulio Camuffo <giuliocamuffo at gmail.com> wrote:
> ---
> src/wayland-server-core.h | 4 ++++
> src/wayland-server.c | 20 ++++++++++++++++++++
> 2 files changed, 24 insertions(+)
>
> diff --git a/src/wayland-server-core.h b/src/wayland-server-core.h
> index 4201b2c..9af2481 100644
> --- a/src/wayland-server-core.h
> +++ b/src/wayland-server-core.h
> @@ -217,6 +217,10 @@ wl_client_get_object(struct wl_client *client, uint32_t id);
> void
> wl_client_post_no_memory(struct wl_client *client);
>
> +void
> +wl_client_add_resource_created_listener(struct wl_client *client,
> + struct wl_listener *listener);
> +
> /** \class wl_listener
> *
> * \brief A single listener for Wayland signals
> diff --git a/src/wayland-server.c b/src/wayland-server.c
> index a5527eb..56e17c3 100644
> --- a/src/wayland-server.c
> +++ b/src/wayland-server.c
> @@ -81,6 +81,7 @@ struct wl_client {
> struct wl_signal destroy_signal;
> struct ucred ucred;
> int error;
> + struct wl_signal resource_created_signal;
> };
>
> struct wl_display {
> @@ -421,6 +422,7 @@ wl_client_create(struct wl_display *display, int fd)
> if (client == NULL)
> return NULL;
>
> + wl_signal_init(&client->resource_created_signal);
> client->display = display;
> client->source = wl_event_loop_add_fd(display->loop, fd,
> WL_EVENT_READABLE,
> @@ -1451,6 +1453,7 @@ wl_resource_create(struct wl_client *client,
> return NULL;
> }
>
> + wl_signal_emit(&client->resource_created_signal, resource);
Again, the documentation could mention the relationship to
wl_client_add_resource_created_listener().
> return resource;
> }
>
> @@ -1564,6 +1567,23 @@ wl_client_from_link(struct wl_list *link)
> return wl_container_of(link, (struct wl_client *)0, link);
> }
>
> +/** Add a listener for the client's resource creation signal
> + *
> + * \param client The client object
> + * \param listener The listener to be added
> + *
> + * When a new resource is created for this client the listener
> + * will be notified, carrying the new resource as the data argument.
> + *
> + * \memberof wl_client
> + */
> +WL_EXPORT void
> +wl_client_add_resource_created_listener(struct wl_client *client,
> + struct wl_listener *listener)
> +{
> + wl_signal_add(&client->resource_created_signal, listener);
> +}
> +
> /** \cond */ /* Deprecated functions below. */
>
> uint32_t
Could you say something about why this is better as per-client
signal/listener than a per-wl_display in the commit message?
I'm not saying it isn't, I'd just like to see some justification, as
compositor-wide instrumentation would usually be interested in all
clients. Would it not?
Once more, an almost perfect patch.
Thanks,
pq
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 811 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20160617/f7a5f763/attachment-0001.sig>
More information about the wayland-devel
mailing list