From: Jes Sorensen<address@hidden>
This patch introduces a -display argument which consolidates the
setting of the display mode. Valid options are:
sdl/curses/default/serial (serial is equivalent to -nographic)
Signed-off-by: Jes Sorensen<address@hidden>
---
qemu-options.hx | 27 +++++++++++++++++++
vl.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 104 insertions(+), 0 deletions(-)
diff --git a/qemu-options.hx b/qemu-options.hx
index badb730..f08ffb1 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -590,6 +590,33 @@ STEXI
@table @option
ETEXI
+DEF("display", HAS_ARG, QEMU_OPTION_display,
+ "-display sdl[,frame=on|off][,alt_grab=on|off][,ctrl_grab=on|off]\n"
+ " [,window_close=on|off]|curses|serial\n"
+ " select display type\n", QEMU_ARCH_ALL)
+STEXI
address@hidden -display @var{type}
address@hidden -display
+Select type of display to use. This option is a replacement for the
+old style -sdl/-curses/... options. Valid values for @var{type} are
address@hidden @option
address@hidden sdl
+Pick the SDL display option.
address@hidden curses
+Pick the curses display option. Normally, QEMU uses SDL to display the
+VGA output. With this option, QEMU can display the VGA output when in
+text mode using a curses/ncurses interface. Nothing is displayed in
+graphical mode.
address@hidden serial
+Normally, QEMU uses SDL to display the VGA output. With this option,
+you can totally disable graphical output so that QEMU is a simple
+command line application. The emulated serial port is redirected on
+the console. Therefore, you can still use QEMU to debug a Linux kernel
+with a serial console. This option is equivalent to the old -nographic
+argument.
address@hidden table
+ETEXI
+
DEF("nographic", 0, QEMU_OPTION_nographic,
"-nographic disable graphical output and redirect serial I/Os to
console\n",
QEMU_ARCH_ALL)
diff --git a/vl.c b/vl.c
index 5e007a7..c88ee58 100644
--- a/vl.c
+++ b/vl.c
@@ -1554,6 +1554,80 @@ 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 if (strstart(p, "serial",&opts)) {
+ display = DT_NOGRAPHIC;
+ } else {
+ invalid_display:
+ fprintf(stderr, "Unknown display type: %s\n", p);
+ exit(1);
+ }
+
+ return display;
+}
+
static int balloon_parse(const char *arg)
{
QemuOpts *opts;
@@ -2152,6 +2226,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;