X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=ui%2Fncurses%2Fnc-boot-editor.c;h=4012ec5a7658dfdc8f429e00130307ed7692ec44;hp=e2357f9b4623e556e15830c6ce5206c52c4aad88;hb=203ad2cb596a4b8df13df4afdc8d7e0d999a5fd5;hpb=f84a33d3b924b3fff999826e4bf86d64067728b2 diff --git a/ui/ncurses/nc-boot-editor.c b/ui/ncurses/nc-boot-editor.c index e2357f9..4012ec5 100644 --- a/ui/ncurses/nc-boot-editor.c +++ b/ui/ncurses/nc-boot-editor.c @@ -44,6 +44,7 @@ struct boot_editor { struct pmenu_item *item, struct pb_boot_data *bd); bool need_redraw; + bool need_update; int label_x; int field_x; @@ -109,7 +110,14 @@ static struct boot_editor *boot_editor_from_arg(void *arg) static int boot_editor_post(struct nc_scr *scr) { struct boot_editor *boot_editor = boot_editor_from_scr(scr); - widgetset_post(boot_editor->widgetset); + + if (boot_editor->need_update) { + boot_editor_update(boot_editor, boot_editor->cui->sysinfo); + boot_editor->need_update = false; + } else { + widgetset_post(boot_editor->widgetset); + } + nc_scr_frame_draw(scr); if (boot_editor->need_redraw) { redrawwin(scr->main_ncw); @@ -506,6 +514,11 @@ void boot_editor_update(struct boot_editor *boot_editor, { int height; + if (boot_editor->cui->current != boot_editor_scr(boot_editor)) { + boot_editor->need_update = true; + return; + } + widgetset_unpost(boot_editor->widgetset); height = pad_height(sysinfo ? sysinfo->n_blockdevs : 0); @@ -546,6 +559,7 @@ struct boot_editor *boot_editor_init(struct cui *cui, boot_editor->on_exit = on_exit; boot_editor->state = STATE_EDIT; boot_editor->need_redraw = false; + boot_editor->need_update = false; int ncols1 = strncols(_("Device tree:")); int ncols2 = strncols(_("Boot arguments:"));