[PATCH 05/19] expo: Drop the extra parameter to scene_calc_dims()
Simon Glass
sjg at chromium.org
Mon May 5 17:42:43 CEST 2025
We always call this with false first, then true. Drop the parameter and
handle this within the function itself.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
boot/expo.c | 9 +----
boot/scene.c | 93 ++++++++++++++++++++++++-------------------
boot/scene_internal.h | 3 +-
3 files changed, 55 insertions(+), 50 deletions(-)
diff --git a/boot/expo.c b/boot/expo.c
index d09cc1861da..64d3febacdb 100644
--- a/boot/expo.c
+++ b/boot/expo.c
@@ -150,14 +150,7 @@ int expo_calc_dims(struct expo *exp)
return log_msg_ret("dim", -ENOTSUPP);
list_for_each_entry(scn, &exp->scene_head, sibling) {
- /*
- * Do the menus last so that all the menus' text objects
- * are dimensioned
- */
- ret = scene_calc_dims(scn, false);
- if (ret)
- return log_msg_ret("scn", ret);
- ret = scene_calc_dims(scn, true);
+ ret = scene_calc_dims(scn);
if (ret)
return log_msg_ret("scn", ret);
}
diff --git a/boot/scene.c b/boot/scene.c
index 2ca82236300..2ea8e30ad83 100644
--- a/boot/scene.c
+++ b/boot/scene.c
@@ -1003,56 +1003,69 @@ int scene_obj_calc_bbox(struct scene_obj *obj, struct vidconsole_bbox bbox[])
return 0;
}
-int scene_calc_dims(struct scene *scn, bool do_menus)
+int scene_calc_dims(struct scene *scn)
{
struct scene_obj *obj;
- int ret;
+ int ret, i;
- list_for_each_entry(obj, &scn->obj_head, sibling) {
- switch (obj->type) {
- case SCENEOBJT_NONE:
- case SCENEOBJT_TEXT:
- case SCENEOBJT_BOX:
- case SCENEOBJT_TEXTEDIT:
- case SCENEOBJT_IMAGE: {
- int width;
-
- if (!do_menus) {
- ret = scene_obj_get_hw(scn, obj->id, &width);
- if (ret < 0)
- return log_msg_ret("get", ret);
- obj->dims.x = width;
- obj->dims.y = ret;
- if (!(obj->flags & SCENEOF_SIZE_VALID)) {
- obj->bbox.x1 = obj->bbox.x0 + width;
- obj->bbox.y1 = obj->bbox.y0 + ret;
- obj->flags |= SCENEOF_SIZE_VALID;
+ /*
+ * Do the menus last so that all the menus' text objects
+ * are dimensioned. Many objects are referenced by a menu and the size
+ * and position is set by the menu
+ */
+ for (i = 0; i < 2; i++) {
+ bool do_menus = i;
+
+ list_for_each_entry(obj, &scn->obj_head, sibling) {
+ switch (obj->type) {
+ case SCENEOBJT_NONE:
+ case SCENEOBJT_TEXT:
+ case SCENEOBJT_BOX:
+ case SCENEOBJT_TEXTEDIT:
+ case SCENEOBJT_IMAGE: {
+ int width;
+
+ if (!do_menus) {
+ ret = scene_obj_get_hw(scn, obj->id,
+ &width);
+ if (ret < 0)
+ return log_msg_ret("get", ret);
+ obj->dims.x = width;
+ obj->dims.y = ret;
+ if (!(obj->flags & SCENEOF_SIZE_VALID)) {
+ obj->bbox.x1 = obj->bbox.x0 +
+ width;
+ obj->bbox.y1 = obj->bbox.y0 +
+ ret;
+ obj->flags |=
+ SCENEOF_SIZE_VALID;
+ }
}
+ break;
}
- break;
- }
- case SCENEOBJT_MENU: {
- struct scene_obj_menu *menu;
+ case SCENEOBJT_MENU: {
+ struct scene_obj_menu *menu;
- if (do_menus) {
- menu = (struct scene_obj_menu *)obj;
+ if (do_menus) {
+ menu = (struct scene_obj_menu *)obj;
- ret = scene_menu_calc_dims(menu);
- if (ret)
- return log_msg_ret("men", ret);
+ ret = scene_menu_calc_dims(menu);
+ if (ret)
+ return log_msg_ret("men", ret);
+ }
+ break;
}
- break;
- }
- case SCENEOBJT_TEXTLINE: {
- struct scene_obj_textline *tline;
+ case SCENEOBJT_TEXTLINE: {
+ struct scene_obj_textline *tline;
- tline = (struct scene_obj_textline *)obj;
- ret = scene_textline_calc_dims(tline);
- if (ret)
- return log_msg_ret("men", ret);
+ tline = (struct scene_obj_textline *)obj;
+ ret = scene_textline_calc_dims(tline);
+ if (ret)
+ return log_msg_ret("men", ret);
- break;
- }
+ break;
+ }
+ }
}
}
diff --git a/boot/scene_internal.h b/boot/scene_internal.h
index 95927472875..04218b4b911 100644
--- a/boot/scene_internal.h
+++ b/boot/scene_internal.h
@@ -117,10 +117,9 @@ int scene_obj_flag_clrset(struct scene *scn, uint id, uint clr, uint set);
* Updates the width and height of all objects based on their contents
*
* @scn: Scene to update
- * @do_menus: true to calculate only menus, false to calculate everything else
* Returns 0 if OK, -ENOTSUPP if there is no graphical console
*/
-int scene_calc_dims(struct scene *scn, bool do_menus);
+int scene_calc_dims(struct scene *scn);
/**
* scene_menu_arrange() - Set the position of things in the menu
--
2.43.0
More information about the U-Boot
mailing list