Re: [PATCH weston v2] xwm: set the shell_surface's title

2013-09-15 Thread Axel Davy


This patch makes XWayland often crash for me.

Axel Davy

Le 11/09/2013 18:20, Giulio Camuffo a écrit :

add a new function pointer to the weston_shell_interface struct that
shells will set accordingly.
---
  src/compositor.h  |  2 ++
  src/shell.c   | 11 +--
  src/xwayland/window-manager.c | 11 +++
  3 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/src/compositor.h b/src/compositor.h
index 3c1b643..ead0c91 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -107,6 +107,8 @@ struct weston_shell_interface {
int (*move)(struct shell_surface *shsurf, struct weston_seat *ws);
int (*resize)(struct shell_surface *shsurf,
  struct weston_seat *ws, uint32_t edges);
+   void (*set_title)(struct shell_surface *shsurf,
+ const char *title);

  };

diff --git a/src/shell.c b/src/shell.c
index dc15bfa..ea4315a 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -1595,13 +1595,19 @@ shell_surface_pong(struct wl_client *client, struct 
wl_resource *resource,
  }

  static void
+set_title(struct shell_surface *shsurf, const char *title)
+{
+   free(shsurf-title);
+   shsurf-title = strdup(title);
+}
+
+static void
  shell_surface_set_title(struct wl_client *client,
struct wl_resource *resource, const char *title)
  {
struct shell_surface *shsurf = wl_resource_get_user_data(resource);

-   free(shsurf-title);
-   shsurf-title = strdup(title);
+   set_title(shsurf, title);
  }

  static void
@@ -4583,6 +4589,7 @@ module_init(struct weston_compositor *ec,
ec-shell_interface.set_xwayland = set_xwayland;
ec-shell_interface.move = surface_move;
ec-shell_interface.resize = surface_resize;
+   ec-shell_interface.set_title = set_title;

wl_list_init(shell-input_panel.surfaces);

diff --git a/src/xwayland/window-manager.c b/src/xwayland/window-manager.c
index f775734..b4f64d3 100644
--- a/src/xwayland/window-manager.c
+++ b/src/xwayland/window-manager.c
@@ -363,6 +363,8 @@ static void
  weston_wm_window_read_properties(struct weston_wm_window *window)
  {
struct weston_wm *wm = window-wm;
+   struct weston_shell_interface *shell_interface =
+   wm-server-compositor-shell_interface;

  #define F(field) offsetof(struct weston_wm_window, field)
const struct {
@@ -468,6 +470,9 @@ weston_wm_window_read_properties(struct weston_wm_window 
*window)
}
free(reply);
}
+
+   if (window-shsurf  window-name)
+   shell_interface-set_title(window-shsurf, window-name);
  }

  static void
@@ -1875,6 +1880,9 @@ surface_destroy(struct wl_listener *listener, void *data)

wm_log(surface for xid %d destroyed\n, window-id);

+   /* This should have been freed by the shell.
+   Don't try to use it later. */
+   window-shsurf = NULL;
window-surface = NULL;
  }

@@ -2029,6 +2037,9 @@ xserver_map_shell_surface(struct weston_wm *wm,
  window-surface,
  shell_client);

+   if (window-name)
+   shell_interface-set_title(window-shsurf, window-name);
+
if (window-fullscreen) {
window-saved_width = window-width;
window-saved_height = window-height;




___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


[PATCH] sanity-tests: Be even more aggressive in avoiding optimization

2013-09-15 Thread Aaron Faanes
clang optimizes the malloc away even when assert() is called. Printing
the memory address should be side-effecty enough to avoid this
optimization.
---
 tests/sanity-test.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tests/sanity-test.c b/tests/sanity-test.c
index 46f4f85..0df2e98 100644
--- a/tests/sanity-test.c
+++ b/tests/sanity-test.c
@@ -25,6 +25,7 @@
 #include sys/types.h
 #include signal.h
 #include unistd.h
+#include stdio.h
 
 #include test-runner.h
 #include wayland-util.h
@@ -75,6 +76,7 @@ FAIL_TEST(sanity_malloc_direct)
p = malloc(10); /* memory leak */
assert(p);  /* assert that we got memory, also prevents
 * the malloc from getting optimized away. */
+   printf(Avoiding optimization %p\n, p);
free(NULL); /* NULL must not be counted */
 }
 
-- 
1.8.3.1

___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


[PATCH 1/2] utils: Document wl_container_of

2013-09-15 Thread Aaron Faanes
Modified this documentation to be much less verbose than before. I also added
an example, used better doxygen style, and mentioned that wl_container_of is
useful outside of just wl_list.

---
 src/wayland-util.h | 27 +++
 1 file changed, 27 insertions(+)

diff --git a/src/wayland-util.h b/src/wayland-util.h
index de2e464..f85c521 100644
--- a/src/wayland-util.h
+++ b/src/wayland-util.h
@@ -111,6 +111,33 @@ int wl_list_length(const struct wl_list *list);
 int wl_list_empty(const struct wl_list *list);
 void wl_list_insert_list(struct wl_list *list, struct wl_list *other);
 
+/**
+ * Retrieves a pointer to the container of a given item.
+ *
+ * This macro allows conversion from a pointer to a contained item to its
+ * container. This is useful if you have a contained item like a wl_list,
+ * wl_listener, or wl_signal, and would like to retrieve the struct that
+ * contains it.
+ *
+ * To demonstrate, given a wl_list contained by a wl_resource, the wl_resource
+ * can be retrieved as follows:
+ *
+ * \code
+ * struct wl_list *some_link = ...;
+ * struct wl_resource *resource = NULL;
+ *
+ * resource = wl_container_of(some_link, resource, link);
+ * \endcode
+ *
+ * \param ptr A valid pointer to the contained item.
+ *
+ * \param sample A pointer to the type of content that the list item stores.
+ * Sample does not need be a valid pointer; a null pointer will suffice.
+ *
+ * \param member The named location of ptr within the sample type.
+ *
+ * \return The container for the specified pointer.
+ */
 #ifdef __GNUC__
 #define wl_container_of(ptr, sample, member)   \
(__typeof__(sample))((char *)(ptr)  -   \
-- 
1.8.3.1

___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


[PATCH 2/2] wayland-server: Document wl_listener

2013-09-15 Thread Aaron Faanes
This patch takes Kristian's comments into account, adding a demonstration and
giving a more thorough idea of how wl_listener is used.

---
 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@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


[PATCH 0/6] More utils/wayland-server documentation

2013-09-15 Thread Aaron Faanes
Howdy,

I went ahead and added some more documentation for some utils classes, the
big one being wl_list.

I know I have some patches still outstanding, so I apologize if it's rude
to submit another batch before the previous ones have been resolved. These
patches apply regardless of whether the others are eventually accepted, so
in that sense, they're independent.

I've been prefixing my commits with the conventional prefix for that file
(e.g. utils: for wayland-utils.*, wayland-server and so forth). Should
I prefix these with doc: instead?

Thanks for your feedback!

Aaron Faanes (6):
  utils: Reference some useful methods in wl_signal's doxygen
  utils: Add doxygen for wayland-util.h
  wayland-server: Improve wording for wl_signal_get's doc
  doc: Include wayland-util.* for doxygen output
  utils: Ensure wl_list's doxygen formats properly
  utils: Document wl_list methods

 doc/doxygen/Makefile.am |   6 +++
 src/wayland-server.h|   9 +++-
 src/wayland-util.h  | 113 
 3 files changed, 107 insertions(+), 21 deletions(-)

-- 
1.8.3.1

___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


[PATCH 1/6] utils: Reference some useful methods in wl_signal's doxygen

2013-09-15 Thread Aaron Faanes
This commit adds a bit more detail on the lifecycle of a signal.
---
 src/wayland-server.h | 7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/wayland-server.h b/src/wayland-server.h
index f345d2a..2e616c1 100644
--- a/src/wayland-server.h
+++ b/src/wayland-server.h
@@ -185,7 +185,12 @@ struct wl_listener {
  *
  * Signals are recognized points where significant events can be observed.
  * Compositors as well as the server can provide signals. Observers are
- * added through \ref wl_signal_add.
+ * wl_listener's that are added through #wl_signal_add. Signals are emitted
+ * using #wl_signal_emit, which will invoke all listeners until that
+ * listener is removed by #wl_list_remove (or whenever the signal is
+ * destroyed).
+ *
+ * \sa wl_listener for more information on using wl_signal
  */
 struct wl_signal {
struct wl_list listener_list;
-- 
1.8.3.1

___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


[PATCH 2/6] utils: Add doxygen for wayland-util.h

2013-09-15 Thread Aaron Faanes
This is needed for doxygen to generate output for macro definitions, such
as wl_container_of, that are contained by this file. Classes like
wl_list would be documented regardless.
---
 src/wayland-util.h | 5 +
 1 file changed, 5 insertions(+)

diff --git a/src/wayland-util.h b/src/wayland-util.h
index f85c521..31a1ac2 100644
--- a/src/wayland-util.h
+++ b/src/wayland-util.h
@@ -20,6 +20,11 @@
  * OF THIS SOFTWARE.
  */
 
+/** \file wayland-util.h
+ *
+ * \brief Utility classes, functions, and macros.
+ */
+
 #ifndef WAYLAND_UTIL_H
 #define WAYLAND_UTIL_H
 
-- 
1.8.3.1

___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


[PATCH 3/6] wayland-server: Improve wording for wl_signal_get's doc

2013-09-15 Thread Aaron Faanes
The old description was a bit vague; this commit hopefully improves
describing what is returned.
---
 src/wayland-server.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/wayland-server.h b/src/wayland-server.h
index 2e616c1..997e6c7 100644
--- a/src/wayland-server.h
+++ b/src/wayland-server.h
@@ -221,7 +221,7 @@ wl_signal_add(struct wl_signal *signal, struct wl_listener 
*listener)
wl_list_insert(signal-listener_list.prev, listener-link);
 }
 
-/** Gets the list item for the specified listener.
+/** Gets the listener struct for the specified callback.
  *
  * \param signal The signal that contains the specified listener
  * \param notify The listener that is the target of this search
-- 
1.8.3.1

___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


[PATCH 4/6] doc: Include wayland-util.* for doxygen output

2013-09-15 Thread Aaron Faanes
This commit creates a shared file list that is included by both the
client and the server for the XML Makefile targets, as classes within
util are used by both the client and the server.
---

I must admit that I'm not too familiar with why these are separated into
server and client XML files. As a result, this patch is a bit of a guess.

 doc/doxygen/Makefile.am | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/doc/doxygen/Makefile.am b/doc/doxygen/Makefile.am
index ec43519..0351c1e 100644
--- a/doc/doxygen/Makefile.am
+++ b/doc/doxygen/Makefile.am
@@ -2,11 +2,17 @@
 noinst_DATA = xml/client/index.xml xml/server/index.xml
 dist_noinst_DATA = wayland.doxygen.in
 
+scanned_src_files_shared = \
+   $(top_srcdir)/src/wayland-util.c\
+   $(top_srcdir)/src/wayland-util.h
+
 scanned_src_files_client = \
+   $(scanned_src_files_shared) \
$(top_srcdir)/src/wayland-client.c  \
$(top_srcdir)/src/wayland-client.h
 
 scanned_src_files_server = \
+   $(scanned_src_files_shared) \
$(top_srcdir)/src/wayland-server.c  \
$(top_srcdir)/src/wayland-server.h
 
-- 
1.8.3.1

___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


[PATCH 5/6] utils: Ensure wl_list's doxygen formats properly

2013-09-15 Thread Aaron Faanes
This changes the struct foo mentions to use tt, which appears as
monospaced font. This also wraps code examples with \code tags to
ensure they're detected as code.

The code example uses C++ style // comments. I would have preferred to
use /* */ comments for consistency, but this is not possible since we're
already in this type of block comment. Doxygen picks it up fine,
however.

This commit doesn't contain any changes in terms of wording. Most of the
diff noise is due to the whitespace changes. git diff -w should help
point out the real changes.
---
 src/wayland-util.h | 44 +---
 1 file changed, 25 insertions(+), 19 deletions(-)

diff --git a/src/wayland-util.h b/src/wayland-util.h
index 31a1ac2..51de3f6 100644
--- a/src/wayland-util.h
+++ b/src/wayland-util.h
@@ -70,39 +70,45 @@ struct wl_interface {
  *
  * \brief doubly-linked list
  *
- * The list head is of struct wl_list type, and must be initialized
- * using wl_list_init().  All entries in the list must be of the same
- * type.  The item type must have a struct wl_list member. This
- * member will be initialized by wl_list_insert(). There is no need to
- * call wl_list_init() on the individual item. To query if the list is
- * empty in O(1), use wl_list_empty().
+ * The list head is of ttstruct wl_list/tt type, and must be initialized
+ * using #wl_list_init.  All entries in the list must be of the same
+ * type.  The item type must have a ttstruct wl_list/tt member. This
+ * member will be initialized by #wl_list_insert. There is no need to
+ * call #wl_list_init  on the individual item. To query if the list is
+ * empty in O(1), use #wl_list_empty.
  *
- * Let's call the list reference struct wl_list foo_list, the item type as
- * item_t, and the item member as struct wl_list link.
+ * Let's call the list reference ttstruct wl_list foo_list/tt, the item 
type as
+ * ttitem_t/tt, and the item member as ttstruct wl_list link/tt.
  *
  * The following code will initialize a list:
  *
- * struct wl_list foo_list;
+ * \code
+ * struct wl_list foo_list;
  *
- * struct item_t {
- * int foo;
- * struct wl_list link;
- * };
- * struct item_t item1, item2, item3;
+ * struct item_t {
+ * int foo;
+ * struct wl_list link;
+ * };
+ * struct item_t item1, item2, item3;
  *
- * wl_list_init(foo_list);
- * wl_list_insert(foo_list, item1.link); Pushes item1 at the head
- * wl_list_insert(foo_list, item2.link); Pushes item2 at the head
- * wl_list_insert(item2.link, item3.link); Pushes item3 after item2
+ * wl_list_init(foo_list);
+ * wl_list_insert(foo_list, item1.link);   // Pushes item1 at the head
+ * wl_list_insert(foo_list, item2.link);   // Pushes item2 at the head
+ * wl_list_insert(item2.link, item3.link); // Pushes item3 after item2
+ * \endcode
  *
- * The list now looks like [item2, item3, item1]
+ * The list now looks like tt[item2, item3, item1]/tt
  *
  * Will iterate the list in ascending order:
  *
+ * \code
  * item_t *item;
  * wl_list_for_each(item, foo_list, link) {
  * Do_something_with_item(item);
  * }
+ * \endcode
+ *
+ * \sa wl_container_of
  */
 struct wl_list {
struct wl_list *prev;
-- 
1.8.3.1

___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


[PATCH 6/6] utils: Document wl_list methods

2013-09-15 Thread Aaron Faanes
---

As I understand it, a wl_list can be either content-bearing node or a list head.
I believe this is correct, but if it isn't (in other words, there is no 
distinction
between list heads and content-bearing elements), then this documentation is 
going
to be tragically incorrect.

 src/wayland-util.h | 64 ++
 1 file changed, 64 insertions(+)

diff --git a/src/wayland-util.h b/src/wayland-util.h
index 51de3f6..86d03f2 100644
--- a/src/wayland-util.h
+++ b/src/wayland-util.h
@@ -115,11 +115,75 @@ struct wl_list {
struct wl_list *next;
 };
 
+/** Initializes a new wl_list for use as a list.
+ *
+ * There is no need to call this method for wl_list nodes that will only be 
used as
+ * elements within other lists, though there is no harm in doing so.
+ *
+ * \param list The list that will be initialized.
+ *
+ * \memberof wl_list
+ */
 void wl_list_init(struct wl_list *list);
+
+/** Inserts the specified element directly after the specified list node.
+ *
+ * \param list the list that will be directly previous to \c elm
+ * \param elm The element that will be added after \c list
+ *
+ * \memberof wl_list
+ */
 void wl_list_insert(struct wl_list *list, struct wl_list *elm);
+
+/** Removes the specified wl_list node from the list that contains it.
+ *
+ * \param elm the list to remove
+ *
+ * \memberof wl_list
+ */
 void wl_list_remove(struct wl_list *elm);
+
+/** Returns the number of elements in the specified list.
+ *
+ * Prefer #wl_list_empty if you're just interested if the list is empty.
+ *
+ * \param list The list that will be queried.
+ * \return The number of elements in the specified list.
+ *
+ * \sa wl_list_empty
+ * \memberof wl_list
+ */
 int wl_list_length(const struct wl_list *list);
+
+/** Queries whether the specified list is empty.
+ *
+ * This method runs in O(1).
+ *
+ * \param list The list that will be queried.
+ * \return \c true if the list is empty, \c false otherwise
+ *
+ * \sa wl_list_length
+ * \memberof wl_list
+ */
 int wl_list_empty(const struct wl_list *list);
+
+/** Inserts all elements in the specified other list into \c list.
+ *
+ * All elements in \other will be added in order directly before \c list.
+ *
+ * \code
+ * wl_list foo; // [1, 2, 3]
+ * wl_list bar; // [4, 5, 6]
+ *
+ * wl_list_insert_list(foo, other);
+ * // foo now contains [4, 5, 6, 1, 2, 3]
+ * \endcode
+ *
+ * \param list The list that will be added to
+ * \param other The list that contains the elements to add.
+ *
+ * \memberof wl_list
+ */
 void wl_list_insert_list(struct wl_list *list, struct wl_list *other);
 
 /**
-- 
1.8.3.1

___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


Problems building Weston/demo applications on the Raspberry Pi

2013-09-15 Thread Silvan Jegen
Hi everyone

I am trying to build libwayland, Weston and the demo programs on my
Raspberry Pi following the guide at

http://wayland.freedesktop.org/raspberrypi.html

When compiling Weston and the demo programs however, I get the attached
error and no Makefile is being created.

What confuses me is that the guide says that When adding
--disable-wayland-compositor you can remove the dummy wayland-egl.pc
pkg-config file, except that the --disable-wayland-compositor-flag is
present by default in the build guide and the wayland-egl.pc file has
not been mentioned before at all (i. e. does not seem to belong to the
group of pkg-conf files that the guide mentions earlier).

Is there something obvious I am missing?

Thanks for your support!


Kind regards,

Silvan

autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I /home/pi/local/share/aclocal --force 
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in `.'.
libtoolize: copying file `./ltmain.sh'
libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and
libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree.
libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
autoreconf: Leaving directory `.'
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... 64
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking whether make supports nested variables... yes
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking for a sed that does not truncate output... /bin/sed
checking build system type... armv6l-unknown-linux-gnueabihf
checking host system type... armv6l-unknown-linux-gnueabihf
checking how to print strings... printf
checking for a sed that does not truncate output... (cached) /bin/sed
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands +=... yes
checking how to convert armv6l-unknown-linux-gnueabihf file names to 
armv6l-unknown-linux-gnueabihf format... func_convert_file_noop
checking how to convert armv6l-unknown-linux-gnueabihf file names to toolchain 
format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC

Re: [PATCH 1/2] utils: Document wl_container_of

2013-09-15 Thread Bill Spitzak

On 09/15/2013 11:09 AM, Aaron Faanes wrote:

Modified this documentation to be much less verbose than before. I also added
an example, used better doxygen style, and mentioned that wl_container_of is
useful outside of just wl_list.

---
  src/wayland-util.h | 27 +++
  1 file changed, 27 insertions(+)

diff --git a/src/wayland-util.h b/src/wayland-util.h
index de2e464..f85c521 100644
--- a/src/wayland-util.h
+++ b/src/wayland-util.h
@@ -111,6 +111,33 @@ int wl_list_length(const struct wl_list *list);
  int wl_list_empty(const struct wl_list *list);
  void wl_list_insert_list(struct wl_list *list, struct wl_list *other);

+/**
+ * Retrieves a pointer to the container of a given item.
+ *
+ * This macro allows conversion from a pointer to a contained item to its
+ * container. This is useful if you have a contained item like a wl_list,
+ * wl_listener, or wl_signal, and would like to retrieve the struct that
+ * contains it.
+ *
+ * To demonstrate, given a wl_list contained by a wl_resource


I think you might want to add in a member called 'link' Without this 
information it took a bit of puzzling to figure out exactly what was 
going on.



+ *
+ * \code
+ * struct wl_list *some_link = ...;


I don't know if there are any real examples with a simpler object but 
the doc is a little confusing by making the inner object a complex one 
like wl_list. Is there an example where the member is something simple 
like an int?


___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel