[coreboot] [patch 1/2] coreinfo: Fix the subwindow refresh based onthe libpayload changes

Myles Watson mylesgw at gmail.com
Thu May 15 18:24:42 CEST 2008



> 
> 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>

> 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





More information about the coreboot mailing list