We always call this with false first, then true. Drop the parameter and
handle this within the function itself.

Signed-off-by: Simon Glass <s...@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

Reply via email to