From 633b3dc75536a7a878126c41babc248c095b66fe Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 14 Aug 2023 16:40:21 -0600 Subject: expo: Make scene_obj_find() take a const scene This does not change the scene, so mark the pointer const. Signed-off-by: Simon Glass --- boot/scene.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'boot/scene.c') diff --git a/boot/scene.c b/boot/scene.c index e52333371f9..b4c36c41702 100644 --- a/boot/scene.c +++ b/boot/scene.c @@ -79,7 +79,7 @@ int scene_obj_count(struct scene *scn) return count; } -void *scene_obj_find(struct scene *scn, uint id, enum scene_obj_t type) +void *scene_obj_find(const struct scene *scn, uint id, enum scene_obj_t type) { struct scene_obj *obj; -- cgit v1.2.3 From f2eb6ad50a3e610897d6386bb3192c049dc6fd12 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 14 Aug 2023 16:40:23 -0600 Subject: expo: Provide a way to iterate through all scene objects For some operations it is necessary to process all objects in an expo. Provide an iterator to handle this. Signed-off-by: Simon Glass --- boot/scene.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'boot/scene.c') diff --git a/boot/scene.c b/boot/scene.c index b4c36c41702..6c52948eb69 100644 --- a/boot/scene.c +++ b/boot/scene.c @@ -681,3 +681,19 @@ int scene_set_open(struct scene *scn, uint id, bool open) return 0; } + +int scene_iter_objs(struct scene *scn, expo_scene_obj_iterator iter, + void *priv) +{ + struct scene_obj *obj; + + list_for_each_entry(obj, &scn->obj_head, sibling) { + int ret; + + ret = iter(obj, priv); + if (ret) + return log_msg_ret("itr", ret); + } + + return 0; +} -- cgit v1.2.3