[PATCH v2 59/60] expo: Set up menu fully in bootflow_menu_start()

Simon Glass sjg at chromium.org
Fri May 2 16:46:57 CEST 2025


Apply the theme, calculate dimensions, highlight the menu and arrange
the scene correctly, so that everything is ready to go when the expo
is rendered.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

(no changes since v1)

 boot/bootflow_menu.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/boot/bootflow_menu.c b/boot/bootflow_menu.c
index 56a34ac8ed5..43f074f19f5 100644
--- a/boot/bootflow_menu.c
+++ b/boot/bootflow_menu.c
@@ -212,10 +212,6 @@ int bootflow_menu_add_all(struct expo *exp)
 			return log_msg_ret("bao", ret);
 	}
 
-	ret = scene_arrange(scn);
-	if (ret)
-		return log_msg_ret("arr", ret);
-
 	return 0;
 }
 
@@ -296,7 +292,9 @@ int bootflow_menu_setup(struct bootstd_priv *std, bool text_mode,
 int bootflow_menu_start(struct bootstd_priv *std, bool text_mode,
 			struct expo **expp)
 {
+	struct scene *scn;
 	struct expo *exp;
+	uint scene_id;
 	int ret;
 
 	ret = bootflow_menu_setup(std, text_mode, &exp);
@@ -317,6 +315,18 @@ int bootflow_menu_start(struct bootstd_priv *std, bool text_mode,
 	if (ret)
 		return log_msg_ret("bmd", ret);
 
+	ret = expo_first_scene_id(exp);
+	if (ret < 0)
+		return log_msg_ret("scn", ret);
+	scene_id = ret;
+	scn = expo_lookup_scene_id(exp, scene_id);
+
+	scene_set_highlight_id(scn, OBJ_MENU);
+
+	ret = scene_arrange(scn);
+	if (ret)
+		return log_msg_ret("arr", ret);
+
 	*expp = exp;
 
 	return 0;
-- 
2.43.0



More information about the U-Boot mailing list