[coreboot] r3339 - trunk/payloads/coreinfo

svn at coreboot.org svn at coreboot.org
Tue May 20 22:16:04 CEST 2008


Author: jcrouse
Date: 2008-05-20 22:16:03 +0200 (Tue, 20 May 2008)
New Revision: 3339

Modified:
   trunk/payloads/coreinfo/coreinfo.c
Log:
coreinfo:  Fix the subwindow refresh based on the libpayload changes

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>


Modified: trunk/payloads/coreinfo/coreinfo.c
===================================================================
--- trunk/payloads/coreinfo/coreinfo.c	2008-05-20 20:10:49 UTC (rev 3338)
+++ trunk/payloads/coreinfo/coreinfo.c	2008-05-20 20:16:03 UTC (rev 3339)
@@ -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