[coreboot] r3578 - trunk/payloads/libpayload/curses

svn at coreboot.org svn at coreboot.org
Fri Sep 12 23:50:58 CEST 2008


Author: stepan
Date: 2008-09-12 23:50:57 +0200 (Fri, 12 Sep 2008)
New Revision: 3578

Modified:
   trunk/payloads/libpayload/curses/tinycurses.c
Log:
* Implement scrolling in tinycurses
* Fix an off by one bug

Signed-off-by: Stefan Reinauer <stepan at coresystems.de>
Acked-by: Jordan Crouse <jordan.crouse at amd.com>




Modified: trunk/payloads/libpayload/curses/tinycurses.c
===================================================================
--- trunk/payloads/libpayload/curses/tinycurses.c	2008-09-12 20:39:04 UTC (rev 3577)
+++ trunk/payloads/libpayload/curses/tinycurses.c	2008-09-12 21:50:57 UTC (rev 3578)
@@ -70,7 +70,7 @@
 static struct ldat ldat_list[MAX_WINDOWS][SCREEN_Y];
 static int ldat_count = 0;
 
-/* One item bigger than SCREEN_X to reverse place for a NUL byte. */
+/* One item bigger than SCREEN_X to reserve space for a NUL byte. */
 static NCURSES_CH_T linebuf_list[SCREEN_Y * MAX_WINDOWS][SCREEN_X + 1];
 static int linebuf_count = 0;
 
@@ -305,8 +305,8 @@
 	stdscr = newwin(SCREEN_Y, SCREEN_X + 1, 0, 0);
 	// TODO: curscr, newscr?
 
-	for (y = 0; y < stdscr->_maxy; y++) {
-		for (x = 0; x < stdscr->_maxx; x++) {
+	for (y = 0; y <= stdscr->_maxy; y++) {
+		for (x = 0; x <= stdscr->_maxx; x++) {
 			stdscr->_line[y].text[x].chars[0] = ' ';
 			stdscr->_line[y].text[x].attr = A_NORMAL;
 		}
@@ -817,6 +817,22 @@
 		return ERR;
 
 	if (n != 0) {
+		int x, y;
+
+		for (y = 0; y <= (win->_maxy - n); y++) {
+			for (x = 0; x <= win->_maxx; x++) {
+				win->_line[y].text[x].chars[0] = win->_line[y + n].text[x].chars[0];
+				win->_line[y].text[x].attr = win->_line[y + n].text[x].attr;
+			}
+		}
+
+		for (y = (win->_maxy+1 - n); y <= win->_maxy; y++) {
+			for (x = 0; x <= win->_maxx; x++) {
+				win->_line[y].text[x].chars[0] = ' ';
+				win->_line[y].text[x].attr = A_NORMAL;
+			}
+		}
+
 		// _nc_scroll_window(win, n, win->_regtop, win->_regbottom, win->_nc_bkgd);
 		// _nc_synchook(win);
 	}





More information about the coreboot mailing list