qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jes.Sorensen@redhat.com
To: qemu-devel@nongnu.org
Cc: jan.kiszka@siemens.com, peter.maydell@linaro.org
Subject: [Qemu-devel] [PATCH 2/7] Introduce -display argument
Date: Tue, 15 Mar 2011 16:45:24 +0100	[thread overview]
Message-ID: <1300203929-25823-3-git-send-email-Jes.Sorensen@redhat.com> (raw)
In-Reply-To: <1300203929-25823-1-git-send-email-Jes.Sorensen@redhat.com>

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)

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 qemu-options.hx |   20 ++++++++++++++
 vl.c            |   75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 95 insertions(+), 0 deletions(-)

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 5e007a7..2a1ac3c 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;
-- 
1.7.4

  parent reply	other threads:[~2011-03-15 15:46 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-15 15:45 [Qemu-devel] [PATCH v3 0/7] Introduce -display and make VNC optional Jes.Sorensen
2011-03-15 15:45 ` [Qemu-devel] [PATCH 1/7] Consolidate DisplaySurface allocation in qemu_alloc_display() Jes.Sorensen
2011-03-15 15:45 ` Jes.Sorensen [this message]
2011-03-15 15:45 ` [Qemu-devel] [PATCH 3/7] Introduce -display none Jes.Sorensen
2011-03-15 15:45 ` [Qemu-devel] [PATCH 4/7] Add support for -display vnc Jes.Sorensen
2011-03-15 15:45 ` [Qemu-devel] [PATCH 5/7] error message if user specifies SDL cmd line option when SDL is disabled Jes.Sorensen
2011-03-15 15:45 ` [Qemu-devel] [PATCH 6/7] error message if user specifies curses on cmd line when curses " Jes.Sorensen
2011-03-15 15:45 ` [Qemu-devel] [PATCH 7/7] Make VNC support optional Jes.Sorensen
  -- strict thread matches above, loose matches on Subject: below --
2011-03-16 12:33 [Qemu-devel] [PATCH v5 0/7] Introduce -display and make VNC optional Jes.Sorensen
2011-03-16 12:33 ` [Qemu-devel] [PATCH 2/7] Introduce -display argument Jes.Sorensen
2011-03-16 11:00 [Qemu-devel] [PATCH v4 0/7] Introduce -display and make VNC optional Jes.Sorensen
2011-03-16 11:00 ` [Qemu-devel] [PATCH 2/7] Introduce -display argument Jes.Sorensen
2011-03-15 12:36 [Qemu-devel] [PATCH v2 0/7] Introduce -display and make VNC optional Jes.Sorensen
2011-03-15 12:36 ` [Qemu-devel] [PATCH 2/7] Introduce -display argument Jes.Sorensen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1300203929-25823-3-git-send-email-Jes.Sorensen@redhat.com \
    --to=jes.sorensen@redhat.com \
    --cc=jan.kiszka@siemens.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).