mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-05-05 04:36:13 +02:00
expo: Add CLI context to the expo
An expo generally needs to keep track of the keyboard state while it is running, so move the context into struct expo Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
4f4b9477f4
commit
5c365ecabc
@ -178,7 +178,6 @@ int bootflow_menu_apply_theme(struct expo *exp, ofnode node)
|
||||
int bootflow_menu_run(struct bootstd_priv *std, bool text_mode,
|
||||
struct bootflow **bflowp)
|
||||
{
|
||||
struct cli_ch_state s_cch, *cch = &s_cch;
|
||||
struct bootflow *sel_bflow;
|
||||
struct udevice *dev;
|
||||
struct expo *exp;
|
||||
@ -186,8 +185,6 @@ int bootflow_menu_run(struct bootstd_priv *std, bool text_mode,
|
||||
bool done;
|
||||
int ret;
|
||||
|
||||
cli_ch_init(cch);
|
||||
|
||||
sel_bflow = NULL;
|
||||
*bflowp = NULL;
|
||||
|
||||
@ -225,16 +222,16 @@ int bootflow_menu_run(struct bootstd_priv *std, bool text_mode,
|
||||
if (ret)
|
||||
break;
|
||||
|
||||
ichar = cli_ch_process(cch, 0);
|
||||
ichar = cli_ch_process(&exp->cch, 0);
|
||||
if (!ichar) {
|
||||
while (!ichar && !tstc()) {
|
||||
schedule();
|
||||
mdelay(2);
|
||||
ichar = cli_ch_process(cch, -ETIMEDOUT);
|
||||
ichar = cli_ch_process(&exp->cch, -ETIMEDOUT);
|
||||
}
|
||||
if (!ichar) {
|
||||
ichar = getchar();
|
||||
ichar = cli_ch_process(cch, ichar);
|
||||
ichar = cli_ch_process(&exp->cch, ichar);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -151,14 +151,12 @@ int cedit_prepare(struct expo *exp, struct video_priv **vid_privp,
|
||||
|
||||
int cedit_run(struct expo *exp)
|
||||
{
|
||||
struct cli_ch_state s_cch, *cch = &s_cch;
|
||||
struct video_priv *vid_priv;
|
||||
uint scene_id;
|
||||
struct scene *scn;
|
||||
bool done, save;
|
||||
int ret;
|
||||
|
||||
cli_ch_init(cch);
|
||||
ret = cedit_prepare(exp, &vid_priv, &scn);
|
||||
if (ret < 0)
|
||||
return log_msg_ret("prep", ret);
|
||||
@ -174,16 +172,16 @@ int cedit_run(struct expo *exp)
|
||||
if (ret)
|
||||
break;
|
||||
|
||||
ichar = cli_ch_process(cch, 0);
|
||||
ichar = cli_ch_process(&exp->cch, 0);
|
||||
if (!ichar) {
|
||||
while (!ichar && !tstc()) {
|
||||
schedule();
|
||||
mdelay(2);
|
||||
ichar = cli_ch_process(cch, -ETIMEDOUT);
|
||||
ichar = cli_ch_process(&exp->cch, -ETIMEDOUT);
|
||||
}
|
||||
if (!ichar) {
|
||||
ichar = getchar();
|
||||
ichar = cli_ch_process(cch, ichar);
|
||||
ichar = cli_ch_process(&exp->cch, ichar);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -30,6 +30,7 @@ int expo_new(const char *name, void *priv, struct expo **expp)
|
||||
INIT_LIST_HEAD(&exp->scene_head);
|
||||
INIT_LIST_HEAD(&exp->str_head);
|
||||
exp->next_id = EXPOID_BASE_ID;
|
||||
cli_ch_init(&exp->cch);
|
||||
|
||||
*expp = exp;
|
||||
|
||||
|
||||
@ -108,6 +108,7 @@ struct expo_theme {
|
||||
* @theme: Information about fonts styles, etc.
|
||||
* @scene_head: List of scenes
|
||||
* @str_head: list of strings
|
||||
* @cch: Keyboard context for input
|
||||
*/
|
||||
struct expo {
|
||||
char *name;
|
||||
@ -122,6 +123,7 @@ struct expo {
|
||||
struct expo_theme theme;
|
||||
struct list_head scene_head;
|
||||
struct list_head str_head;
|
||||
struct cli_ch_state cch;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user