[coreboot] coreinfo: Fix the subwindow refresh based onthe libpayload changes
Jordan Crouse
jordan.crouse at amd.com
Tue May 20 22:09:30 CEST 2008
On 15/05/08 10:24 -0600, Myles Watson 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: Myles Watson <mylesgw at gmail.com>
Oops - answered the wrong email. This hasn't been comitted yet.
> > 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++)
> >
> > --
> > Jordan Crouse
> > Systems Software Development Engineer
> > Advanced Micro Devices, Inc.
> >
> >
> > --
> > coreboot mailing list
> > coreboot at coreboot.org
> > http://www.coreboot.org/mailman/listinfo/coreboot
>
>
--
Jordan Crouse
Systems Software Development Engineer
Advanced Micro Devices, Inc.
More information about the coreboot
mailing list