]> git.ozlabs.org Git - petitboot/blobdiff - ui/ncurses/nc-boot-editor.c
ui/ncurses: Reduce unnecessary calls to redrawwin
[petitboot] / ui / ncurses / nc-boot-editor.c
index f78da5611e5838ea3c75050fb5121853fb2f0513..274bd9d2fa1b4df079eb050c10524bc46abad5b1 100644 (file)
@@ -44,6 +44,7 @@ struct boot_editor {
        void                    (*on_exit)(struct cui *cui,
                                        struct pmenu_item *item,
                                        struct pb_boot_data *bd);
+       bool                    need_redraw;
 
        int                     label_x;
        int                     field_x;
@@ -111,7 +112,10 @@ static int boot_editor_post(struct nc_scr *scr)
        struct boot_editor *boot_editor = boot_editor_from_scr(scr);
        widgetset_post(boot_editor->widgetset);
        nc_scr_frame_draw(scr);
-       redrawwin(scr->main_ncw);
+       if (boot_editor->need_redraw) {
+               redrawwin(scr->main_ncw);
+               boot_editor->need_redraw = false;
+       }
        wrefresh(boot_editor->scr.main_ncw);
        pad_refresh(boot_editor);
        return 0;
@@ -231,6 +235,7 @@ static void boot_editor_process_key(struct nc_scr *scr, int key)
                break;
        case STATE_HELP:
                boot_editor->state = STATE_EDIT;
+               boot_editor->need_redraw = true;
                cui_show_help(boot_editor->cui, _("Boot Option Editor"),
                                &boot_editor_help_text);
                break;
@@ -568,6 +573,7 @@ struct boot_editor *boot_editor_init(struct cui *cui,
        boot_editor->item = item;
        boot_editor->on_exit = on_exit;
        boot_editor->state = STATE_EDIT;
+       boot_editor->need_redraw = false;
 
        int ncols1 = strncols(_("Device tree:"));
        int ncols2 = strncols(_("Boot arguments:"));