<div dir="ltr"><div>---<br><br></div>Here's the updated patch. Thanks, Bill and Kristian, for your reviews. Feel free to let me know if anything else needs correcting with this one.<br><div><br> src/wayland-util.h | 27 +++++++++++++++++++++++++++<br>


 1 file changed, 27 insertions(+)<br><br>diff --git a/src/wayland-util.h b/src/wayland-util.h<br>index de2e464..bed8d2a 100644<br>--- a/src/wayland-util.h<br>+++ b/src/wayland-util.h<br>@@ -111,6 +111,33 @@ int wl_list_length(const struct wl_list *list);<br>


 int wl_list_empty(const struct wl_list *list);<br> void wl_list_insert_list(struct wl_list *list, struct wl_list *other);<br> <br>+/**<br>+ * Retrieves a pointer to the containing struct of a given member item.<br>+ *<br>


+ * This macro allows conversion from a pointer to a item to its containing<br>+ * struct. This is useful if you have a contained item like a wl_list,<br>+ * wl_listener, or wl_signal, provided via a callback or other means and would<br>


+ * like to retrieve the struct that contains it.<br>+ *<br>+ * To demonstrate, given a wl_list contained by a wl_resource in a member<br>+ * called link, the wl_resource can be retrieved as follows:<br>+ *<br>+ * \code<br>


+ * struct wl_list *some_link = ...;<br>+ * struct wl_resource *resource = NULL;<br>+ *<br>+ * resource = wl_container_of(some_link, resource, link);<br>+ * \endcode<br>+ *<br>+ * \param ptr A valid pointer to the contained item.<br>


+ *<br>+ * \param sample A pointer to the type of content that the list item stores.<br>+ * Sample does not need be a valid pointer; a null pointer will suffice.<br>+ *<br>+ * \param member The named location of ptr within the sample type.<br>


+ *<br>+ * \return The container for the specified pointer.<br>+ */<br> #ifdef __GNUC__<br> #define wl_container_of(ptr, sample, member)                           \<br>        (__typeof__(sample))((char *)(ptr)      -                       \<br>


</div></div>