Lift 255x255 erminal sie restriction to 65535x65535. Also change from
bitmasks to small structures of size chosen to fit in registers.
This commit is contained in:
parent
7abdac8e13
commit
e89c2d48a9
24 changed files with 266 additions and 244 deletions
|
@ -130,8 +130,8 @@ set_console_dimensions (void)
|
|||
|
||||
if (check_is_serial ())
|
||||
{
|
||||
grub_console_terminfo_output.width = 80;
|
||||
grub_console_terminfo_output.height = 24;
|
||||
grub_console_terminfo_output.size.x = 80;
|
||||
grub_console_terminfo_output.size.y = 24;
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -142,8 +142,8 @@ set_console_dimensions (void)
|
|||
info = GRUB_ARC_FIRMWARE_VECTOR->getdisplaystatus (GRUB_ARC_STDOUT);
|
||||
if (info)
|
||||
{
|
||||
grub_console_terminfo_output.width = info->w + 1;
|
||||
grub_console_terminfo_output.height = info->h + 1;
|
||||
grub_console_terminfo_output.size.x = info->w + 1;
|
||||
grub_console_terminfo_output.size.y = info->h + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -164,8 +164,7 @@ static struct grub_terminfo_input_state grub_console_terminfo_input =
|
|||
static struct grub_terminfo_output_state grub_console_terminfo_output =
|
||||
{
|
||||
.put = put,
|
||||
.width = 80,
|
||||
.height = 20
|
||||
.size = { 80, 20 }
|
||||
};
|
||||
|
||||
static struct grub_term_input grub_console_term_input =
|
||||
|
|
|
@ -142,7 +142,7 @@ grub_console_getkey (struct grub_term_input *term __attribute__ ((unused)))
|
|||
return GRUB_TERM_NO_KEY;
|
||||
}
|
||||
|
||||
static grub_uint16_t
|
||||
static struct grub_term_coordinate
|
||||
grub_console_getwh (struct grub_term_output *term __attribute__ ((unused)))
|
||||
{
|
||||
grub_efi_simple_text_output_interface_t *o;
|
||||
|
@ -157,24 +157,24 @@ grub_console_getwh (struct grub_term_output *term __attribute__ ((unused)))
|
|||
rows = 25;
|
||||
}
|
||||
|
||||
return ((columns << 8) | rows);
|
||||
return (struct grub_term_coordinate) { columns, rows };
|
||||
}
|
||||
|
||||
static grub_uint16_t
|
||||
static struct grub_term_coordinate
|
||||
grub_console_getxy (struct grub_term_output *term __attribute__ ((unused)))
|
||||
{
|
||||
grub_efi_simple_text_output_interface_t *o;
|
||||
|
||||
if (grub_efi_is_finished)
|
||||
return 0;
|
||||
return (struct grub_term_coordinate) { 0, 0 };
|
||||
|
||||
o = grub_efi_system_table->con_out;
|
||||
return ((o->mode->cursor_column << 8) | o->mode->cursor_row);
|
||||
return (struct grub_term_coordinate) { o->mode->cursor_column, o->mode->cursor_row };
|
||||
}
|
||||
|
||||
static void
|
||||
grub_console_gotoxy (struct grub_term_output *term __attribute__ ((unused)),
|
||||
grub_uint8_t x, grub_uint8_t y)
|
||||
struct grub_term_coordinate pos)
|
||||
{
|
||||
grub_efi_simple_text_output_interface_t *o;
|
||||
|
||||
|
@ -182,7 +182,7 @@ grub_console_gotoxy (struct grub_term_output *term __attribute__ ((unused)),
|
|||
return;
|
||||
|
||||
o = grub_efi_system_table->con_out;
|
||||
efi_call_3 (o->set_cursor_position, o, x, y);
|
||||
efi_call_3 (o->set_cursor_position, o, pos.x, pos.y);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -970,34 +970,34 @@ grub_gfxterm_getcharwidth (struct grub_term_output *term __attribute__ ((unused)
|
|||
/ virtual_screen.normal_char_width;
|
||||
}
|
||||
|
||||
static grub_uint16_t
|
||||
static struct grub_term_coordinate
|
||||
grub_virtual_screen_getwh (struct grub_term_output *term __attribute__ ((unused)))
|
||||
{
|
||||
return (virtual_screen.columns << 8) | virtual_screen.rows;
|
||||
return (struct grub_term_coordinate) { virtual_screen.columns, virtual_screen.rows };
|
||||
}
|
||||
|
||||
static grub_uint16_t
|
||||
static struct grub_term_coordinate
|
||||
grub_virtual_screen_getxy (struct grub_term_output *term __attribute__ ((unused)))
|
||||
{
|
||||
return ((virtual_screen.cursor_x << 8) | virtual_screen.cursor_y);
|
||||
return (struct grub_term_coordinate) { virtual_screen.cursor_x, virtual_screen.cursor_y };
|
||||
}
|
||||
|
||||
static void
|
||||
grub_gfxterm_gotoxy (struct grub_term_output *term __attribute__ ((unused)),
|
||||
grub_uint8_t x, grub_uint8_t y)
|
||||
struct grub_term_coordinate pos)
|
||||
{
|
||||
if (x >= virtual_screen.columns)
|
||||
x = virtual_screen.columns - 1;
|
||||
if (pos.x >= virtual_screen.columns)
|
||||
pos.x = virtual_screen.columns - 1;
|
||||
|
||||
if (y >= virtual_screen.rows)
|
||||
y = virtual_screen.rows - 1;
|
||||
if (pos.y >= virtual_screen.rows)
|
||||
pos.y = virtual_screen.rows - 1;
|
||||
|
||||
/* Erase current cursor, if any. */
|
||||
if (virtual_screen.cursor_state)
|
||||
draw_cursor (0);
|
||||
|
||||
virtual_screen.cursor_x = x;
|
||||
virtual_screen.cursor_y = y;
|
||||
virtual_screen.cursor_x = pos.x;
|
||||
virtual_screen.cursor_y = pos.y;
|
||||
|
||||
/* Draw cursor if visible. */
|
||||
if (virtual_screen.cursor_state)
|
||||
|
|
|
@ -51,8 +51,7 @@ put (struct grub_term_output *term __attribute__ ((unused)), const int c)
|
|||
struct grub_terminfo_output_state grub_cbmemc_terminfo_output =
|
||||
{
|
||||
.put = put,
|
||||
.width = 80,
|
||||
.height = 24
|
||||
.size = { 80, 24 }
|
||||
};
|
||||
|
||||
static struct grub_term_output grub_cbmemc_term_output =
|
||||
|
|
|
@ -47,7 +47,7 @@ int10_9 (grub_uint8_t ch, grub_uint16_t n)
|
|||
*/
|
||||
|
||||
|
||||
static grub_uint16_t
|
||||
static struct grub_term_coordinate
|
||||
grub_console_getxy (struct grub_term_output *term __attribute__ ((unused)))
|
||||
{
|
||||
struct grub_bios_int_registers regs;
|
||||
|
@ -57,7 +57,8 @@ grub_console_getxy (struct grub_term_output *term __attribute__ ((unused)))
|
|||
regs.flags = GRUB_CPU_INT_FLAGS_DEFAULT;
|
||||
grub_bios_interrupt (0x10, ®s);
|
||||
|
||||
return ((regs.edx & 0xff) << 8) | ((regs.edx & 0xff00) >> 8);
|
||||
return (struct grub_term_coordinate) {
|
||||
(regs.edx & 0xff), ((regs.edx & 0xff00) >> 8) };
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -69,14 +70,14 @@ grub_console_getxy (struct grub_term_output *term __attribute__ ((unused)))
|
|||
*/
|
||||
static void
|
||||
grub_console_gotoxy (struct grub_term_output *term __attribute__ ((unused)),
|
||||
grub_uint8_t x, grub_uint8_t y)
|
||||
struct grub_term_coordinate pos)
|
||||
{
|
||||
struct grub_bios_int_registers regs;
|
||||
|
||||
/* set page to 0 */
|
||||
regs.ebx = 0;
|
||||
regs.eax = 0x0200;
|
||||
regs.edx = (y << 8) | x;
|
||||
regs.edx = (pos.y << 8) | pos.x;
|
||||
regs.flags = GRUB_CPU_INT_FLAGS_DEFAULT;
|
||||
grub_bios_interrupt (0x10, ®s);
|
||||
}
|
||||
|
@ -94,7 +95,7 @@ static void
|
|||
grub_console_putchar_real (grub_uint8_t c)
|
||||
{
|
||||
struct grub_bios_int_registers regs;
|
||||
grub_uint16_t pos;
|
||||
struct grub_term_coordinate pos;
|
||||
|
||||
if (c == 7 || c == 8 || c == 0xa || c == 0xd)
|
||||
{
|
||||
|
@ -112,14 +113,14 @@ grub_console_putchar_real (grub_uint8_t c)
|
|||
int10_9 (c, 1);
|
||||
|
||||
/* check the column with the width */
|
||||
if ((pos & 0xff00) >= (79 << 8))
|
||||
if (pos.x >= 79)
|
||||
{
|
||||
grub_console_putchar_real (0x0d);
|
||||
grub_console_putchar_real (0x0a);
|
||||
}
|
||||
else
|
||||
grub_console_gotoxy (NULL, ((pos & 0xff00) >> 8) + 1, (pos & 0xff));
|
||||
|
||||
grub_console_gotoxy (NULL, (struct grub_term_coordinate) { pos.x + 1,
|
||||
pos.y });
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -141,13 +142,13 @@ static void
|
|||
grub_console_cls (struct grub_term_output *term)
|
||||
{
|
||||
/* move the cursor to the beginning */
|
||||
grub_console_gotoxy (term, 0, 0);
|
||||
grub_console_gotoxy (term, (struct grub_term_coordinate) { 0, 0 });
|
||||
|
||||
/* write spaces to the entire screen */
|
||||
int10_9 (' ', 80 * 25);
|
||||
|
||||
/* move back the cursor */
|
||||
grub_console_gotoxy (term, 0, 0);
|
||||
grub_console_gotoxy (term, (struct grub_term_coordinate) { 0, 0 });
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -247,10 +248,10 @@ grub_console_getkeystatus (struct grub_term_input *term __attribute__ ((unused))
|
|||
return bios_data_area->keyboard_flag_lower & ~0x80;
|
||||
}
|
||||
|
||||
static grub_uint16_t
|
||||
static struct grub_term_coordinate
|
||||
grub_console_getwh (struct grub_term_output *term __attribute__ ((unused)))
|
||||
{
|
||||
return (80 << 8) | 25;
|
||||
return (struct grub_term_coordinate) { 80, 25 };
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -42,7 +42,7 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
|||
#define COLS 80
|
||||
#define ROWS 25
|
||||
|
||||
static int grub_curr_x, grub_curr_y;
|
||||
static struct grub_term_coordinate grub_curr_pos;
|
||||
|
||||
#ifdef __mips__
|
||||
#define VGA_TEXT_SCREEN ((grub_uint16_t *) 0xb00b8000)
|
||||
|
@ -75,7 +75,7 @@ screen_read_char (int x, int y)
|
|||
static void
|
||||
update_cursor (void)
|
||||
{
|
||||
unsigned int pos = grub_curr_y * COLS + grub_curr_x;
|
||||
unsigned int pos = grub_curr_pos.y * COLS + grub_curr_pos.x;
|
||||
cr_write (pos >> 8, GRUB_VGA_CR_CURSOR_ADDR_HIGH);
|
||||
cr_write (pos & 0xFF, GRUB_VGA_CR_CURSOR_ADDR_LOW);
|
||||
}
|
||||
|
@ -83,9 +83,9 @@ update_cursor (void)
|
|||
static void
|
||||
inc_y (void)
|
||||
{
|
||||
grub_curr_x = 0;
|
||||
if (grub_curr_y < ROWS - 1)
|
||||
grub_curr_y++;
|
||||
grub_curr_pos.x = 0;
|
||||
if (grub_curr_pos.y < ROWS - 1)
|
||||
grub_curr_pos.y++;
|
||||
else
|
||||
{
|
||||
int x, y;
|
||||
|
@ -100,10 +100,10 @@ inc_y (void)
|
|||
static void
|
||||
inc_x (void)
|
||||
{
|
||||
if (grub_curr_x >= COLS - 1)
|
||||
if (grub_curr_pos.x >= COLS - 1)
|
||||
inc_y ();
|
||||
else
|
||||
grub_curr_x++;
|
||||
grub_curr_pos.x++;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -113,17 +113,17 @@ grub_vga_text_putchar (struct grub_term_output *term __attribute__ ((unused)),
|
|||
switch (c->base)
|
||||
{
|
||||
case '\b':
|
||||
if (grub_curr_x != 0)
|
||||
screen_write_char (grub_curr_x--, grub_curr_y, ' ');
|
||||
if (grub_curr_pos.x != 0)
|
||||
screen_write_char (grub_curr_pos.x--, grub_curr_pos.y, ' ');
|
||||
break;
|
||||
case '\n':
|
||||
inc_y ();
|
||||
break;
|
||||
case '\r':
|
||||
grub_curr_x = 0;
|
||||
grub_curr_pos.x = 0;
|
||||
break;
|
||||
default:
|
||||
screen_write_char (grub_curr_x, grub_curr_y,
|
||||
screen_write_char (grub_curr_pos.x, grub_curr_pos.y,
|
||||
c->base | (cur_color << 8));
|
||||
inc_x ();
|
||||
}
|
||||
|
@ -131,18 +131,17 @@ grub_vga_text_putchar (struct grub_term_output *term __attribute__ ((unused)),
|
|||
update_cursor ();
|
||||
}
|
||||
|
||||
static grub_uint16_t
|
||||
static struct grub_term_coordinate
|
||||
grub_vga_text_getxy (struct grub_term_output *term __attribute__ ((unused)))
|
||||
{
|
||||
return (grub_curr_x << 8) | grub_curr_y;
|
||||
return grub_curr_pos;
|
||||
}
|
||||
|
||||
static void
|
||||
grub_vga_text_gotoxy (struct grub_term_output *term __attribute__ ((unused)),
|
||||
grub_uint8_t x, grub_uint8_t y)
|
||||
struct grub_term_coordinate pos)
|
||||
{
|
||||
grub_curr_x = x;
|
||||
grub_curr_y = y;
|
||||
grub_curr_pos = pos;
|
||||
update_cursor ();
|
||||
}
|
||||
|
||||
|
@ -152,7 +151,7 @@ grub_vga_text_cls (struct grub_term_output *term)
|
|||
int i;
|
||||
for (i = 0; i < ROWS * COLS; i++)
|
||||
VGA_TEXT_SCREEN[i] = grub_cpu_to_le16 (' ' | (cur_color << 8));
|
||||
grub_vga_text_gotoxy (term, 0, 0);
|
||||
grub_vga_text_gotoxy (term, (struct grub_term_coordinate) { 0, 0 });
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -203,10 +202,10 @@ grub_vga_text_fini_real (struct grub_term_output *term)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static grub_uint16_t
|
||||
static struct grub_term_coordinate
|
||||
grub_vga_text_getwh (struct grub_term_output *term __attribute__ ((unused)))
|
||||
{
|
||||
return (80 << 8) | 25;
|
||||
return (struct grub_term_coordinate) { 80, 25 };
|
||||
}
|
||||
|
||||
#ifndef MODE_MDA
|
||||
|
|
|
@ -97,8 +97,8 @@ grub_console_dimensions (void)
|
|||
val[sizeof (val) - 1] = 0;
|
||||
if (grub_strcmp (val, "serial") == 0)
|
||||
{
|
||||
grub_console_terminfo_output.width = 80;
|
||||
grub_console_terminfo_output.height = 24;
|
||||
grub_console_terminfo_output.size.x = 80;
|
||||
grub_console_terminfo_output.size.y = 24;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -111,31 +111,31 @@ grub_console_dimensions (void)
|
|||
val, sizeof (val) - 1, 0))
|
||||
{
|
||||
val[sizeof (val) - 1] = 0;
|
||||
grub_console_terminfo_output.width
|
||||
grub_console_terminfo_output.size.x
|
||||
= (grub_uint8_t) grub_strtoul (val, 0, 10);
|
||||
}
|
||||
if (! grub_ieee1275_get_property (options, "screen-#rows",
|
||||
val, sizeof (val) - 1, 0))
|
||||
{
|
||||
val[sizeof (val) - 1] = 0;
|
||||
grub_console_terminfo_output.height
|
||||
grub_console_terminfo_output.size.y
|
||||
= (grub_uint8_t) grub_strtoul (val, 0, 10);
|
||||
}
|
||||
}
|
||||
|
||||
/* Bogus default value on SLOF in QEMU. */
|
||||
if (grub_console_terminfo_output.width == 200
|
||||
&& grub_console_terminfo_output.height == 200)
|
||||
if (grub_console_terminfo_output.size.x == 200
|
||||
&& grub_console_terminfo_output.size.y == 200)
|
||||
{
|
||||
grub_console_terminfo_output.width = 80;
|
||||
grub_console_terminfo_output.height = 24;
|
||||
grub_console_terminfo_output.size.x = 80;
|
||||
grub_console_terminfo_output.size.y = 24;
|
||||
}
|
||||
|
||||
/* Use a small console by default. */
|
||||
if (! grub_console_terminfo_output.width)
|
||||
grub_console_terminfo_output.width = 80;
|
||||
if (! grub_console_terminfo_output.height)
|
||||
grub_console_terminfo_output.height = 24;
|
||||
if (! grub_console_terminfo_output.size.x)
|
||||
grub_console_terminfo_output.size.x = 80;
|
||||
if (! grub_console_terminfo_output.size.y)
|
||||
grub_console_terminfo_output.size.y = 24;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -212,8 +212,7 @@ struct grub_terminfo_input_state grub_console_terminfo_input =
|
|||
struct grub_terminfo_output_state grub_console_terminfo_output =
|
||||
{
|
||||
.put = put,
|
||||
.width = 80,
|
||||
.height = 24
|
||||
.size = { 80, 24 }
|
||||
};
|
||||
|
||||
static struct grub_term_input grub_console_term_input =
|
||||
|
|
|
@ -92,8 +92,7 @@ static const struct grub_serial_output_state grub_serial_terminfo_output_templat
|
|||
.tinfo =
|
||||
{
|
||||
.put = serial_put,
|
||||
.width = 80,
|
||||
.height = 24
|
||||
.size = { 80, 24 }
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -109,8 +109,7 @@ grub_spkmodem_fini_output (struct grub_term_output *term __attribute__ ((unused)
|
|||
struct grub_terminfo_output_state grub_spkmodem_terminfo_output =
|
||||
{
|
||||
.put = put,
|
||||
.width = 80,
|
||||
.height = 24
|
||||
.size = { 80, 24 }
|
||||
};
|
||||
|
||||
static struct grub_term_output grub_spkmodem_term_output =
|
||||
|
|
|
@ -230,38 +230,37 @@ putstr (struct grub_term_output *term, const char *str)
|
|||
data->put (term, *str++);
|
||||
}
|
||||
|
||||
grub_uint16_t
|
||||
struct grub_term_coordinate
|
||||
grub_terminfo_getxy (struct grub_term_output *term)
|
||||
{
|
||||
struct grub_terminfo_output_state *data
|
||||
= (struct grub_terminfo_output_state *) term->data;
|
||||
|
||||
return ((data->xpos << 8) | data->ypos);
|
||||
return data->pos;
|
||||
}
|
||||
|
||||
void
|
||||
grub_terminfo_gotoxy (struct grub_term_output *term,
|
||||
grub_uint8_t x, grub_uint8_t y)
|
||||
struct grub_term_coordinate pos)
|
||||
{
|
||||
struct grub_terminfo_output_state *data
|
||||
= (struct grub_terminfo_output_state *) term->data;
|
||||
|
||||
if (x > grub_term_width (term) || y > grub_term_height (term))
|
||||
if (pos.x > grub_term_width (term) || pos.y > grub_term_height (term))
|
||||
{
|
||||
grub_error (GRUB_ERR_BUG, "invalid point (%u,%u)", x, y);
|
||||
grub_error (GRUB_ERR_BUG, "invalid point (%u,%u)", pos.x, pos.y);
|
||||
return;
|
||||
}
|
||||
|
||||
if (data->gotoxy)
|
||||
putstr (term, grub_terminfo_tparm (data->gotoxy, y, x));
|
||||
putstr (term, grub_terminfo_tparm (data->gotoxy, pos.y, pos.x));
|
||||
else
|
||||
{
|
||||
if ((y == data->ypos) && (x == data->xpos - 1))
|
||||
if ((pos.y == data->pos.y) && (pos.x == data->pos.x - 1))
|
||||
data->put (term, '\b');
|
||||
}
|
||||
|
||||
data->xpos = x;
|
||||
data->ypos = y;
|
||||
data->pos = pos;
|
||||
}
|
||||
|
||||
/* Clear the screen. */
|
||||
|
@ -272,7 +271,7 @@ grub_terminfo_cls (struct grub_term_output *term)
|
|||
= (struct grub_terminfo_output_state *) term->data;
|
||||
|
||||
putstr (term, grub_terminfo_tparm (data->cls));
|
||||
grub_terminfo_gotoxy (term, 0, 0);
|
||||
grub_terminfo_gotoxy (term, (struct grub_term_coordinate) { 0, 0 });
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -360,42 +359,42 @@ grub_terminfo_putchar (struct grub_term_output *term,
|
|||
|
||||
case '\b':
|
||||
case 127:
|
||||
if (data->xpos > 0)
|
||||
data->xpos--;
|
||||
if (data->pos.x > 0)
|
||||
data->pos.x--;
|
||||
break;
|
||||
|
||||
case '\n':
|
||||
if (data->ypos < grub_term_height (term) - 1)
|
||||
data->ypos++;
|
||||
if (data->pos.y < grub_term_height (term) - 1)
|
||||
data->pos.y++;
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
data->xpos = 0;
|
||||
data->pos.x = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
if (data->xpos + c->estimated_width >= grub_term_width (term) + 1)
|
||||
if ((int) data->pos.x + c->estimated_width >= (int) grub_term_width (term) + 1)
|
||||
{
|
||||
data->xpos = 0;
|
||||
if (data->ypos < grub_term_height (term) - 1)
|
||||
data->ypos++;
|
||||
data->pos.x = 0;
|
||||
if (data->pos.y < grub_term_height (term) - 1)
|
||||
data->pos.y++;
|
||||
data->put (term, '\r');
|
||||
data->put (term, '\n');
|
||||
}
|
||||
data->xpos += c->estimated_width;
|
||||
data->pos.x += c->estimated_width;
|
||||
break;
|
||||
}
|
||||
|
||||
data->put (term, c->base);
|
||||
}
|
||||
|
||||
grub_uint16_t
|
||||
struct grub_term_coordinate
|
||||
grub_terminfo_getwh (struct grub_term_output *term)
|
||||
{
|
||||
struct grub_terminfo_output_state *data
|
||||
= (struct grub_terminfo_output_state *) term->data;
|
||||
|
||||
return (data->width << 8) | data->height;
|
||||
return data->size;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -673,8 +672,8 @@ print_terminfo (void)
|
|||
grub_terminfo_get_current(cur),
|
||||
encoding_names[(cur->flags & GRUB_TERM_CODE_TYPE_MASK)
|
||||
>> GRUB_TERM_CODE_TYPE_SHIFT],
|
||||
((struct grub_terminfo_output_state *) cur->data)->width,
|
||||
((struct grub_terminfo_output_state *) cur->data)->height);
|
||||
((struct grub_terminfo_output_state *) cur->data)->pos.x,
|
||||
((struct grub_terminfo_output_state *) cur->data)->pos.y);
|
||||
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
|
@ -747,8 +746,8 @@ grub_cmd_terminfo (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||
{
|
||||
struct grub_terminfo_output_state *data
|
||||
= (struct grub_terminfo_output_state *) cur->data;
|
||||
data->width = w;
|
||||
data->height = h;
|
||||
data->pos.x = w;
|
||||
data->pos.y = h;
|
||||
}
|
||||
|
||||
if (argc == 1)
|
||||
|
|
|
@ -56,21 +56,10 @@ uboot_console_init_input (struct grub_term_input *term)
|
|||
|
||||
extern struct grub_terminfo_output_state uboot_console_terminfo_output;
|
||||
|
||||
static void
|
||||
uboot_console_dimensions (void)
|
||||
{
|
||||
/* Use a small console by default. */
|
||||
if (!uboot_console_terminfo_output.width)
|
||||
uboot_console_terminfo_output.width = 80;
|
||||
if (!uboot_console_terminfo_output.height)
|
||||
uboot_console_terminfo_output.height = 24;
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
uboot_console_init_output (struct grub_term_output *term)
|
||||
{
|
||||
uboot_console_dimensions ();
|
||||
|
||||
grub_terminfo_output_init (term);
|
||||
|
||||
return 0;
|
||||
|
@ -82,8 +71,9 @@ struct grub_terminfo_input_state uboot_console_terminfo_input = {
|
|||
|
||||
struct grub_terminfo_output_state uboot_console_terminfo_output = {
|
||||
.put = put,
|
||||
.width = 80,
|
||||
.height = 24
|
||||
/* FIXME: In rare cases when console isn't serial,
|
||||
determine real width. */
|
||||
.size = { 80, 24 }
|
||||
};
|
||||
|
||||
static struct grub_term_input uboot_console_term_input = {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue