[server-core] Add signal for creation of clients.

Giulio Camuffo giuliocamuffo at gmail.com
Tue Feb 9 15:31:27 UTC 2016


Hi,

thanks, i think this was long overdue. I have a few comments below.

2016-02-04 11:59 GMT+02:00  <nicesj at nicesj.com>:
>     Using display object, if a new client is created, emit a signal.
>
>     In the server-side, we can get the destroy event of a client,

The indentation is weird from here on.

>     But there is no way to get the client create event.
>     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.
>
>     Please review this and if possible, merge it to the stream.

I think this line is for the list, it should not be in the commit message.

>
>     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 e8e1e9c..cb72981 100644
> --- a/src/wayland-server-core.h
> +++ b/src/wayland-server-core.h
> @@ -156,6 +156,21 @@ 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
> + */

The documentation for the function should be in the .c file.

> +void
> +wl_display_add_create_client_listener(struct wl_display *display,
> +                                       struct wl_listener *listener);

I think i would prefer wl_display_add_client_connected_listener, it
flows better and makes it more clear that this is about when a client
connects to the display. Also i would reword the docs a bit, how about
" Registers a listener for the client connection signal.
  When a client connects to the display the \a listener will be
notified, carrying
  a pointer to the new wl_client object."


Thanks,
Giulio

> +
>  struct wl_listener *
>  wl_display_get_destroy_listener(struct wl_display *display,
>                                 wl_notify_func_t notify);
> diff --git a/src/wayland-server.c b/src/wayland-server.c
> index ae9365f..0eff8f6 100644
> --- a/src/wayland-server.c
> +++ b/src/wayland-server.c
> @@ -96,6 +96,7 @@ struct wl_display {
>         struct wl_list client_list;
>
>         struct wl_signal destroy_signal;
> +       struct wl_signal create_client_signal;
>
>         struct wl_array additional_shm_formats;
>  };
> @@ -448,6 +449,8 @@ wl_client_create(struct wl_display *display, int fd)
>
>         wl_list_insert(display->client_list.prev, &client->link);
>
> +       wl_signal_emit(&display->create_client_signal, client);
> +
>         return client;
>
>  err_map:
> @@ -864,6 +867,7 @@ wl_display_create(void)
>         wl_list_init(&display->registry_resource_list);
>
>         wl_signal_init(&display->destroy_signal);
> +       wl_signal_init(&display->create_client_signal);
>
>         display->id = 1;
>         display->serial = 0;
> @@ -1353,6 +1357,13 @@ wl_display_add_destroy_listener(struct wl_display *display,
>         wl_signal_add(&display->destroy_signal, listener);
>  }
>
> +WL_EXPORT void
> +wl_display_add_create_client_listener(struct wl_display *display,
> +                                       struct wl_listener *listener)
> +{
> +       wl_signal_add(&display->create_client_signal, listener);
> +}
> +
>  WL_EXPORT struct wl_listener *
>  wl_display_get_destroy_listener(struct wl_display *display,
>                                 wl_notify_func_t notify)
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list