[coreboot] [patch 1/2] coreinfo: Fix the subwindow refresh based on the libpayload changes
Peter Stuge
peter at stuge.se
Thu May 15 01:43:29 CEST 2008
On Tue, May 13, 2008 at 05:38:47PM -0600, jordan.crouse at amd.com wrote:
> Changes to libpayload to fix subwindows "broke" coreinfo. This fixes it,
> and improves performance by eliminating the entire screen refresh every
> second.
>
> Signed-off-by: Jordan Crouse <jordan.crouse at amd.com>
Acked-by: Peter Stuge <peter at stuge.se>
> Index: coreinfo/coreinfo.c
> ===================================================================
> --- coreinfo.orig/coreinfo.c 2008-05-13 14:31:34.000000000 -0600
> +++ coreinfo/coreinfo.c 2008-05-13 17:36:05.000000000 -0600
> @@ -19,7 +19,7 @@
>
> #include "coreinfo.h"
>
> -#define SCREEN_Y 24
> +#define SCREEN_Y 25
> #define SCREEN_X 80
>
> extern struct coreinfo_module cpuinfo_module;
> @@ -73,6 +73,8 @@
>
>
> static WINDOW *modwin;
> +static WINDOW *menuwin;
> +
> static int curwin;
>
> void print_module_title(WINDOW *win, const char *title)
> @@ -94,10 +96,10 @@
> char menu[80];
> char *ptr = menu;
>
> - wmove(stdscr, SCREEN_Y - 2, 0);
> + wmove(menuwin, 0, 0);
>
> for (j = 0; j < SCREEN_X; j++)
> - waddch(stdscr, ' ');
> + waddch(menuwin, ' ');
>
> if (!cat->count)
> return;
> @@ -105,7 +107,7 @@
> for (i = 0; i < cat->count; i++)
> ptr += sprintf(ptr, "[%c: %s] ", 'A' + i, cat->modules[i]->name);
>
> - mvprintw(SCREEN_Y - 2, 0, menu);
> + mvwprintw(menuwin, 0, 0, menu);
> }
>
> #ifdef CONFIG_SHOW_DATE_TIME
> @@ -118,7 +120,7 @@
>
> rtc_read_clock(&tm);
>
> - mvprintw(23, 57, "%02d/%02d/%04d - %02d:%02d:%02d",
> + mvwprintw(menuwin, 0, 57, "%02d/%02d/%04d - %02d:%02d:%02d",
> tm.tm_mon, tm.tm_mday, 1900+tm.tm_year, tm.tm_hour,
> tm.tm_min, tm.tm_sec);
> }
> @@ -130,10 +132,10 @@
> char menu[80];
> char *ptr = menu;
>
> - wmove(stdscr, SCREEN_Y - 1, 0);
> + wmove(menuwin, 1, 0);
>
> for (j = 0; j < SCREEN_X; j++)
> - waddch(stdscr, ' ');
> + waddch(menuwin, ' ');
>
> for (i = 0; i < ARRAY_SIZE(categories); i++) {
> if (categories[i].count == 0)
> @@ -142,7 +144,7 @@
> ptr += sprintf(ptr, "F%d: %s ", i + 1, categories[i].name);
> }
>
> - mvprintw(23, 0, menu);
> + mvwprintw(menuwin, 1, 0, menu);
>
> #ifdef CONFIG_SHOW_DATE_TIME
> print_time_and_date();
> @@ -192,7 +194,7 @@
>
> wclear(modwin);
> cat->modules[cat->cur]->redraw(modwin);
> - refresh();
> + wrefresh(modwin);
> }
>
> static void handle_category_key(struct coreinfo_cat *cat, int key)
> @@ -219,6 +221,7 @@
> int key;
>
> center(0, "coreinfo v0.1");
> + refresh();
>
> print_menu();
> print_submenu(&categories[curwin]);
> @@ -229,7 +232,7 @@
> while (1) {
> #ifdef CONFIG_SHOW_DATE_TIME
> print_time_and_date();
> - refresh();
> + wrefresh(menuwin);
> #endif
>
> key = getch();
> @@ -271,10 +274,12 @@
> init_pair(2, COLOR_BLACK, COLOR_WHITE);
> init_pair(3, COLOR_WHITE, COLOR_WHITE);
>
> - modwin = newwin(SCREEN_Y-2, SCREEN_X, 1, 0);
> + modwin = newwin(SCREEN_Y - 3, SCREEN_X, 1, 0);
> + menuwin = newwin(2, SCREEN_X, SCREEN_Y - 2, 0);
>
> wattrset(stdscr, COLOR_PAIR(1) | A_BOLD);
> wattrset(modwin, COLOR_PAIR(2));
> + wattrset(menuwin, COLOR_PAIR(1) | A_BOLD);
>
> for (i = 0; i < SCREEN_Y - 1; i++) {
> wmove(modwin, i - 1, 0);
> @@ -283,7 +288,7 @@
> waddch(modwin, ' ');
> }
>
> - refresh();
> + wrefresh(modwin);
>
> for (i = 0; i < ARRAY_SIZE(categories); i++) {
> for(j = 0; j < categories[i].count; j++)
More information about the coreboot
mailing list