From 1472a95bab1e7dc4d6cab83dc3853574cb829211 Mon Sep 17 00:00:00 2001 From: Jes Sorensen Date: Wed, 16 Mar 2011 13:33:31 +0100 Subject: Introduce -display argument This patch introduces a -display argument which consolidates the setting of the display mode. Valid options are: sdl/curses/default Signed-off-by: Jes Sorensen Signed-off-by: Anthony Liguori --- vl.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) (limited to 'vl.c') diff --git a/vl.c b/vl.c index ac4721110c..dd026aac81 100644 --- a/vl.c +++ b/vl.c @@ -1555,6 +1555,78 @@ static void select_vgahw (const char *p) } } +static DisplayType select_display(const char *p) +{ + const char *opts; + DisplayType display = DT_DEFAULT; + + if (strstart(p, "sdl", &opts)) { +#ifdef CONFIG_SDL + display = DT_SDL; + while (*opts) { + const char *nextopt; + + if (strstart(opts, ",frame=", &nextopt)) { + opts = nextopt; + if (strstart(opts, "on", &nextopt)) { + no_frame = 0; + } else if (strstart(opts, "off", &nextopt)) { + no_frame = 1; + } else { + goto invalid_display; + } + } else if (strstart(opts, ",alt_grab=", &nextopt)) { + opts = nextopt; + if (strstart(opts, "on", &nextopt)) { + alt_grab = 1; + } else if (strstart(opts, "off", &nextopt)) { + alt_grab = 0; + } else { + goto invalid_display; + } + } else if (strstart(opts, ",ctrl_grab=", &nextopt)) { + opts = nextopt; + if (strstart(opts, "on", &nextopt)) { + ctrl_grab = 1; + } else if (strstart(opts, "off", &nextopt)) { + ctrl_grab = 0; + } else { + goto invalid_display; + } + } else if (strstart(opts, ",window_close=", &nextopt)) { + opts = nextopt; + if (strstart(opts, "on", &nextopt)) { + no_quit = 0; + } else if (strstart(opts, "off", &nextopt)) { + no_quit = 1; + } else { + goto invalid_display; + } + } else { + goto invalid_display; + } + opts = nextopt; + } +#else + fprintf(stderr, "SDL support is disabled\n"); + exit(1); +#endif + } else if (strstart(p, "curses", &opts)) { +#ifdef CONFIG_CURSES + display = DT_CURSES; +#else + fprintf(stderr, "Curses support is disabled\n"); + exit(1); +#endif + } else { + invalid_display: + fprintf(stderr, "Unknown display type: %s\n", p); + exit(1); + } + + return display; +} + static int balloon_parse(const char *arg) { QemuOpts *opts; @@ -2153,6 +2225,9 @@ int main(int argc, char **argv, char **envp) } numa_add(optarg); break; + case QEMU_OPTION_display: + display_type = select_display(optarg); + break; case QEMU_OPTION_nographic: display_type = DT_NOGRAPHIC; break; -- cgit v1.2.3