[PATCH 2/2] wayland-server: Document wl_listener
Kristian Høgsberg
hoegsberg at gmail.com
Mon Sep 16 21:49:54 PDT 2013
On Sun, Sep 15, 2013 at 01:09:18PM -0500, Aaron Faanes wrote:
> This patch takes Kristian's comments into account, adding a demonstration and
> giving a more thorough idea of how wl_listener is used.
This looks fine. I'd rather see
/* Direct access */
instead of
// Direct access
but we can't nest the /* */ style comments. I've applied it as is,
but if doxygen has some kind of escape mechanism, I'd like to use that
to use /* */ style comments.
thanks,
Kristian
> ---
> src/wayland-server.h | 45 +++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 45 insertions(+)
>
> diff --git a/src/wayland-server.h b/src/wayland-server.h
> index 67f3bdd..f345d2a 100644
> --- a/src/wayland-server.h
> +++ b/src/wayland-server.h
> @@ -129,6 +129,51 @@ wl_client_get_object(struct wl_client *client, uint32_t id);
> void
> wl_client_post_no_memory(struct wl_client *client);
>
> +/** \class wl_listener
> + *
> + * \brief A single listener for Wayland signals
> + *
> + * wl_listener provides the means to listen for wl_signal notifications. Many
> + * Wayland objects use wl_listener for notification of significant events like
> + * object destruction.
> + *
> + * Clients should create wl_listener objects manually and can register them as
> + * listeners to signals using #wl_signal_add, assuming the signal is
> + * directly accessible. For opaque structs like wl_event_loop, adding a
> + * listener should be done through provided accessor methods. A listener can
> + * only listen to one signal at a time.
> + *
> + * \code
> + * struct wl_listener your_listener;
> + * your_listener.notify = your_callback_method;
> + *
> + * // Direct access
> + * wl_signal_add(&some_object->destroy_signal, &your_listener);
> + *
> + * // Accessor access
> + * wl_event_loop *loop = ...;
> + * wl_event_loop_add_destroy_listener(loop, &your_listener);
> + * \endcode
> + *
> + * If the listener is part of a larger struct, #wl_container_of can be used
> + * to retrieve a pointer to it:
> + *
> + * \code
> + * void your_listener(struct wl_listener *listener, void *data)
> + * {
> + * struct your_data *data = NULL;
> + * your_data = wl_container_of(listener, data, your_member_name);
> + * }
> + * \endcode
> + *
> + * If you need to remove a listener from a signal, use #wl_list_remove.
> + *
> + * \code
> + * wl_list_remove(&your_listener.link);
> + * \endcode
> + *
> + * \sa wl_signal
> + */
> struct wl_listener {
> struct wl_list link;
> wl_notify_func_t notify;
> --
> 1.8.3.1
>
> _______________________________________________
> 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