diff options
author | H. Peter Anvin <hpa@zytor.com> | 2009-12-07 16:23:22 -0800 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2009-12-07 16:23:22 -0800 |
commit | 2f74a2a8b56622951b2bad1ca19e61ad02eb9f03 (patch) | |
tree | 0208468772b4cffef6819d36b07f0b4ac9abb673 /com32/menu | |
parent | 2c36092660d8666a2a50c73da66717208b94eb4f (diff) | |
parent | 66a4a0bab62d10c66386c1f879a606366c5aea99 (diff) | |
download | syslinux-2f74a2a8b56622951b2bad1ca19e61ad02eb9f03.tar.gz |
Merge branch 'softres'
Diffstat (limited to 'com32/menu')
-rw-r--r-- | com32/menu/menu.c | 9 | ||||
-rw-r--r-- | com32/menu/menu.h | 6 | ||||
-rw-r--r-- | com32/menu/menumain.c | 12 | ||||
-rw-r--r-- | com32/menu/readconfig.c | 5 | ||||
-rw-r--r-- | com32/menu/vesamenu.c | 9 |
5 files changed, 30 insertions, 11 deletions
diff --git a/com32/menu/menu.c b/com32/menu/menu.c index 2c069fbe..797189b4 100644 --- a/com32/menu/menu.c +++ b/com32/menu/menu.c @@ -27,8 +27,13 @@ int draw_background(const char *arg) return 0; } -int main(int argc, char *argv[]) +void set_resolution(int x, int y) +{ + (void)x; + (void)y; +} + +void start_console(void) { console_ansi_raw(); - return menu_main(argc, argv); } diff --git a/com32/menu/menu.h b/com32/menu/menu.h index 3be3ba01..72f5c99e 100644 --- a/com32/menu/menu.h +++ b/com32/menu/menu.h @@ -184,6 +184,8 @@ extern long long totaltimeout; void parse_configs(char **argv); int draw_background(const char *filename); +void set_resolution(int x, int y); +void start_console(void); static inline int my_isspace(char c) { @@ -195,10 +197,6 @@ unsigned int hexval(char c); unsigned int hexval2(const char *p); uint32_t parse_argb(char **p); -int menu_main(int argc, char *argv[]); -void console_prepare(void); -void console_cleanup(void); - extern const int message_base_color, menu_color_table_size; int mygetkey(clock_t timeout); int show_message_file(const char *filename, const char *background); diff --git a/com32/menu/menumain.c b/com32/menu/menumain.c index f3f0154b..32ed1b08 100644 --- a/com32/menu/menumain.c +++ b/com32/menu/menumain.c @@ -1072,7 +1072,7 @@ static const char *run_menu(void) return cmdline; } -int menu_main(int argc, char *argv[]) +int main(int argc, char *argv[]) { const char *cmdline; struct menu *m; @@ -1081,14 +1081,20 @@ int menu_main(int argc, char *argv[]) (void)argc; + parse_configs(argv + 1); + + /* + * We don't start the console until we have parsed the configuration + * file, since the configuration file might impact the console + * configuration, e.g. MENU RESOLUTION. + */ + start_console(); if (getscreensize(1, &rows, &cols)) { /* Unknown screen size? */ rows = 24; cols = 80; } - parse_configs(argv + 1); - /* Some postprocessing for all menus */ for (m = menu_list; m; m = m->next) { if (!m->mparm[P_WIDTH]) diff --git a/com32/menu/readconfig.c b/com32/menu/readconfig.c index 135769e1..a248721e 100644 --- a/com32/menu/readconfig.c +++ b/com32/menu/readconfig.c @@ -818,6 +818,11 @@ static void parse_config_file(FILE * f) } } else if (looking_at(p, "start")) { start_menu = m; + } else if ((ep = looking_at(p, "resolution"))) { + int x, y; + x = strtoul(ep, &ep, 0); + y = strtoul(skipspace(ep), NULL, 0); + set_resolution(x, y); } else { /* Unknown, check for layout parameters */ enum parameter_number mp; diff --git a/com32/menu/vesamenu.c b/com32/menu/vesamenu.c index df5c94a6..22b46235 100644 --- a/com32/menu/vesamenu.c +++ b/com32/menu/vesamenu.c @@ -1,6 +1,7 @@ /* ----------------------------------------------------------------------- * * * Copyright 2004-2008 H. Peter Anvin - All Rights Reserved + * Copyright 2009 Intel Corporation; author: H. Peter Anvin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,8 +36,12 @@ int draw_background(const char *what) return vesacon_load_background(what); } -int main(int argc, char *argv[]) +void set_resolution(int x, int y) +{ + vesacon_set_resolution(x, y); +} + +void start_console(void) { openconsole(&dev_rawcon_r, &dev_vesaserial_w); - return menu_main(argc, argv); } |