Message ID | 1300273214-19586-3-git-send-email-Jes.Sorensen@redhat.com |
---|---|
State | New |
Headers | show |
On 16 March 2011 11:00, <Jes.Sorensen@redhat.com> wrote: > From: Jes Sorensen <Jes.Sorensen@redhat.com> > > 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) You forgot to update the commit message when you took out 'serial'... Some minor nitpicking about docs wording follows (I know this text is just copied from the -sdl/-curses options, but since we're here...) > +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\n" > + " select display type\n", QEMU_ARCH_ALL) > +STEXI > +@item -display @var{type} > +@findex -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 > +@table @option > +@item sdl > +Pick the SDL display option. How about "Display video output via SDL (usually in a separate graphics window; see the SDL documentation for other possibilities)." ? > +@item 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. > +@end table > +ETEXI This kind of implies that the only kind of video is VGA, which isn't true. "Display video output via curses. For graphics device models which support a text mode, QEMU can display this output using a curses/ncurses interface. Nothing is displayed when the graphics device is in graphical mode or if the graphics device does not support a text mode. Generally only the VGA device models support text mode." ? -- PMM
On 03/16/11 12:46, Peter Maydell wrote: > On 16 March 2011 11:00, <Jes.Sorensen@redhat.com> wrote: >> From: Jes Sorensen <Jes.Sorensen@redhat.com> >> >> 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) > > You forgot to update the commit message when you took out 'serial'... Good catch, thanks! >> +Pick the SDL display option. > > How about "Display video output via SDL (usually in a separate graphics > window; see the SDL documentation for other possibilities)." ? Looks good to me. >> +@item 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. >> +@end table >> +ETEXI > > This kind of implies that the only kind of video is VGA, which isn't > true. > > "Display video output via curses. For graphics device models which > support a text mode, QEMU can display this output using a curses/ncurses > interface. Nothing is displayed when the graphics device is in > graphical mode or if the graphics device does not support a text mode. > Generally only the VGA device models support text mode." Ditto Cheers, Jes
diff --git a/qemu-options.hx b/qemu-options.hx index badb730..98db829 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -590,6 +590,26 @@ 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\n" + " select display type\n", QEMU_ARCH_ALL) +STEXI +@item -display @var{type} +@findex -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 +@table @option +@item sdl +Pick the SDL display option. +@item 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. +@end 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 b1a94aa..09d4d8c 100644 --- a/vl.c +++ b/vl.c @@ -1554,6 +1554,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; @@ -2152,6 +2224,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;