From: Rob Bradford <r...@linux.intel.com>

A version of wl_resource_for_each that is safe for iteration when items
in the list are removed.
---
 src/wayland-server.h | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/wayland-server.h b/src/wayland-server.h
index d77050d..c0365c0 100644
--- a/src/wayland-server.h
+++ b/src/wayland-server.h
@@ -313,6 +313,14 @@ wl_resource_get_destroy_listener(struct wl_resource 
*resource,
             wl_resource_get_link(resource) != (list);                          
\
             resource = 
wl_resource_from_link(wl_resource_get_link(resource)->next))
 
+#define wl_resource_for_each_safe(resource, tmp, list)                         
        \
+       for (resource = 0, tmp = 0,                                             
        \
+            resource = wl_resource_from_link((list)->next),    \
+            tmp = wl_resource_from_link((list)->next->next);   \
+            wl_resource_get_link(resource) != (list);                          
\
+            resource = tmp,                                                    
\
+            tmp = wl_resource_from_link(wl_resource_get_link(resource)->next))
+
 struct wl_shm_buffer;
 
 struct wl_shm_buffer *
-- 
1.8.3.1

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

Reply via email to