From d720724d48302ca9740b653b3d6df95f67c18f62 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 16 Jul 2020 17:48:29 +0200 Subject: [PATCH] media-session: add method to iterate objects --- src/examples/media-session/media-session.c | 15 +++++++++++++++ src/examples/media-session/media-session.h | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/src/examples/media-session/media-session.c b/src/examples/media-session/media-session.c index 4a904d0cd..0ec4db863 100644 --- a/src/examples/media-session/media-session.c +++ b/src/examples/media-session/media-session.c @@ -1244,6 +1244,21 @@ int sm_media_session_destroy_object(struct sm_media_session *sess, uint32_t id) return 0; } +int sm_media_session_for_each_object(struct sm_media_session *sess, + int (*callback) (void *data, struct sm_object *object), + void *data) +{ + struct impl *impl = SPA_CONTAINER_OF(sess, struct impl, this); + struct sm_object *obj; + int res; + + spa_list_for_each(obj, &impl->global_list, link) { + if ((res = callback(data, obj)) != 0) + return res; + } + return 0; +} + int sm_media_session_schedule_rescan(struct sm_media_session *sess) { struct impl *impl = SPA_CONTAINER_OF(sess, struct impl, this); diff --git a/src/examples/media-session/media-session.h b/src/examples/media-session/media-session.h index b4e66b3bc..864631584 100644 --- a/src/examples/media-session/media-session.h +++ b/src/examples/media-session/media-session.h @@ -252,6 +252,10 @@ int sm_media_session_sync(struct sm_media_session *sess, struct sm_object *sm_media_session_find_object(struct sm_media_session *sess, uint32_t id); int sm_media_session_destroy_object(struct sm_media_session *sess, uint32_t id); +int sm_media_session_for_each_object(struct sm_media_session *sess, + int (*callback) (void *data, struct sm_object *object), + void *data); + int sm_media_session_schedule_rescan(struct sm_media_session *sess); struct pw_proxy *sm_media_session_export(struct sm_media_session *sess,