expo: Add scene_render_obj() to render by object ID

Add a function to render a single object by its ID. This provides a
convenient way to render individual objects without needing to look up
the object pointer first.

Assume that text mode is not used.

Co-developed-by: Claude <claude@anthropic.com>
Signed-off-by: Simon Glass <simon.glass@canonical.com>
This commit is contained in:
Simon Glass
2025-12-07 06:40:01 -07:00
parent ce66b13ea3
commit 7c059e682e
2 changed files with 27 additions and 0 deletions

View File

@@ -903,6 +903,24 @@ int scene_arrange(struct scene *scn)
return 0;
}
int scene_render_obj(struct scene *scn, uint id)
{
struct scene_obj *obj;
int ret;
obj = scene_obj_find(scn, id, SCENEOBJT_NONE);
if (!obj)
return log_msg_ret("obj", -ENOENT);
if (!(obj->flags & SCENEOF_HIDE)) {
ret = scene_obj_render(obj, false);
if (ret && ret != -ENOTSUPP)
return log_msg_ret("ren", ret);
}
return 0;
}
int scene_render_deps(struct scene *scn, uint id)
{
struct scene_obj *obj;

View File

@@ -314,6 +314,15 @@ bool scene_textline_within(const struct scene *scn,
*/
int scene_send_click(struct scene *scn, int x, int y, struct expo_action *event);
/**
* scene_render_obj() - Render an object
*
* @scn: Scene containing the object
* @id: Object ID to render
* Returns: 0 if OK, -ENOENT if object not found, -ve on other error
*/
int scene_render_obj(struct scene *scn, uint id);
/**
* scene_render_deps() - Render an object and its dependencies
*