Within tests it is useful to be able to control rendering of the expo. Drop the automatic call to expo_render() within expo_poll() and adjust its callers to handle this instead.
Signed-off-by: Simon Glass <s...@chromium.org> --- (no changes since v1) boot/cedit.c | 4 ++++ boot/expo.c | 4 ---- cmd/bootflow.c | 3 +++ include/expo.h | 9 ++++++--- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/boot/cedit.c b/boot/cedit.c index 8faf230a9e2..56dc7c6af15 100644 --- a/boot/cedit.c +++ b/boot/cedit.c @@ -219,6 +219,10 @@ int cedit_run(struct expo *exp) do { struct expo_action act; + ret = expo_render(exp); + if (ret) + return log_msg_ret("cer", ret); + ret = expo_poll(exp, &act); if (!ret) cedit_do_action(exp, scn, vid_priv, &act); diff --git a/boot/expo.c b/boot/expo.c index ee8ffaf8920..94413acd381 100644 --- a/boot/expo.c +++ b/boot/expo.c @@ -320,10 +320,6 @@ int expo_poll(struct expo *exp, struct expo_action *act) { int ichar, key, ret; - ret = expo_render(exp); - if (ret) - return log_msg_ret("ere", ret); - ichar = cli_ch_process(&exp->cch, 0); if (!ichar) { int i; diff --git a/cmd/bootflow.c b/cmd/bootflow.c index 6b43bd50410..dda5742db73 100644 --- a/cmd/bootflow.c +++ b/cmd/bootflow.c @@ -116,6 +116,9 @@ __maybe_unused static int bootflow_handle_menu(struct bootstd_priv *std, return log_msg_ret("bhs", ret); do { + ret = expo_render(exp); + if (ret) + return log_msg_ret("bhr", ret); ret = bootflow_menu_poll(exp, &bflow); } while (ret == -EAGAIN); diff --git a/include/expo.h b/include/expo.h index dfecd6ed239..2addddd5012 100644 --- a/include/expo.h +++ b/include/expo.h @@ -1006,10 +1006,13 @@ int expo_build(ofnode root, struct expo **expp); int cb_expo_build(struct expo **expp); /** - * expo_poll() - render an expo and see if the user takes an action + * expo_poll() - see if the user takes an action * - * Thsi calls expo_render() and then checks for a keypress. If there is one, it - * is processed and the resulting action returned, if any + * This checks for a keypress. If there is one, it is processed and the + * resulting action returned, if any. + * + * Note that expo_render() should normally be called immediately before this + * function so that the user can see the latest state. * * @exp: Expo to poll * @act: Returns action on success -- 2.43.0