From 649448fb5f349f56dfd30fbafddeb8ab79f58aff Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 6 May 2020 15:56:31 +0200 Subject: [PATCH] array: add and use pw_array_consume --- src/examples/media-session/metadata.c | 8 +------- src/pipewire/array.h | 5 +++++ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/examples/media-session/metadata.c b/src/examples/media-session/metadata.c index c60843b1f..eff8b4f97 100644 --- a/src/examples/media-session/metadata.c +++ b/src/examples/media-session/metadata.c @@ -145,14 +145,8 @@ static int clear_subjects(struct metadata *this, uint32_t subject) static void clear_items(struct metadata *this) { struct item *item; - - while (true) { - item = pw_array_first(&this->metadata); - if (!pw_array_check(&this->metadata, item)) - break; - + pw_array_consume(item, &this->metadata) clear_subjects(this, item->subject); - } pw_array_reset(&this->metadata); } diff --git a/src/pipewire/array.h b/src/pipewire/array.h index a5fa362c1..e009c834f 100644 --- a/src/pipewire/array.h +++ b/src/pipewire/array.h @@ -69,6 +69,11 @@ struct pw_array { pw_array_check(array, pos); \ (pos)++) +#define pw_array_consume(pos, array) \ + for (pos = (__typeof__(pos)) pw_array_first(array); \ + pw_array_check(array, pos); \ + pos = (__typeof__(pos)) pw_array_first(array)) + #define pw_array_remove(a,p) \ ({ \ (a)->size -= sizeof(*(p)); \