libpayload: Fix curses subwindows

This fixes subwindows in curses so that they draw and refresh correctly.

Signed-off-by: Jordan Crouse <jordan.crouse@amd.com>
Acked-by: Myles Watson <mylesgw@gmail.com>


git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3336 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Jordan Crouse 2008-05-20 20:08:11 +00:00
parent 9d10dc4ffc
commit d43841defc
1 changed files with 7 additions and 7 deletions

View File

@ -66,7 +66,7 @@ static WINDOW window_list[MAX_WINDOWS];
static int window_count = 1; static int window_count = 1;
// struct ldat foo; // struct ldat foo;
static struct ldat ldat_list[3]; static struct ldat ldat_list[MAX_WINDOWS][SCREEN_Y];
static int ldat_count = 0; 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 reverse place for a NUL byte. */
@ -306,7 +306,7 @@ WINDOW *newwin(int num_lines, int num_columns, int begy, int begx)
win->_begx = begx; win->_begx = begx;
// win->_yoffset = SP->_topstolen; // win->_yoffset = SP->_topstolen;
win->_line = &ldat_list[ldat_count++]; win->_line = ldat_list[ldat_count++];
/* FIXME: Is this right? Should the window attributes be normal? */ /* FIXME: Is this right? Should the window attributes be normal? */
win->_color = PAIR_NUMBER(0); win->_color = PAIR_NUMBER(0);
@ -523,8 +523,8 @@ int wcolor_set(WINDOW *win, short color_pair_number, void *opts)
int werase(WINDOW *win) int werase(WINDOW *win)
{ {
int x, y; int x, y;
for (y = 0; y < win->_maxy; y++) { for (y = 0; y <= win->_maxy; y++) {
for (x = 0; x < win->_maxx; x++) { for (x = 0; x <= win->_maxx; x++) {
win->_line[y].text[x].chars[0] = ' '; win->_line[y].text[x].chars[0] = ' ';
win->_line[y].text[x].attr = WINDOW_ATTRS(win); win->_line[y].text[x].attr = WINDOW_ATTRS(win);
} }
@ -591,8 +591,8 @@ int wnoutrefresh(WINDOW *win)
// FIXME. // FIXME.
int x, y; int x, y;
for (y = 0; y < win->_maxy; y++) { for (y = 0; y <= win->_maxy; y++) {
for (x = 0; x < win->_maxx; x++) { for (x = 0; x <= win->_maxx; x++) {
if (curses_flags & F_ENABLE_SERIAL) if (curses_flags & F_ENABLE_SERIAL)
serial_putchar(win->_line[y].text[x].chars[0]); serial_putchar(win->_line[y].text[x].chars[0]);
@ -619,7 +619,7 @@ int wnoutrefresh(WINDOW *win)
* but this will break wide characters! * but this will break wide characters!
*/ */
c |= (chtype) (win->_line[y].text[x].chars[0] & 0xff); c |= (chtype) (win->_line[y].text[x].chars[0] & 0xff);
video_console_putc(y, x, c); video_console_putc(win->_begy + y, win->_begx + x, c);
} }
} }
} }