summaryrefslogtreecommitdiff
path: root/com32/menu
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2009-12-07 16:23:22 -0800
committerH. Peter Anvin <hpa@zytor.com>2009-12-07 16:23:22 -0800
commit2f74a2a8b56622951b2bad1ca19e61ad02eb9f03 (patch)
tree0208468772b4cffef6819d36b07f0b4ac9abb673 /com32/menu
parent2c36092660d8666a2a50c73da66717208b94eb4f (diff)
parent66a4a0bab62d10c66386c1f879a606366c5aea99 (diff)
downloadsyslinux-2f74a2a8b56622951b2bad1ca19e61ad02eb9f03.tar.gz
Merge branch 'softres'
Diffstat (limited to 'com32/menu')
-rw-r--r--com32/menu/menu.c9
-rw-r--r--com32/menu/menu.h6
-rw-r--r--com32/menu/menumain.c12
-rw-r--r--com32/menu/readconfig.c5
-rw-r--r--com32/menu/vesamenu.c9
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);
}