* [Qemu-devel] [PATCH 0/5] Introduce -display and make VNC optional
@ 2011-03-14 12:28 Jes.Sorensen
2011-03-14 12:28 ` [Qemu-devel] [PATCH 1/5] Introduce -display argument Jes.Sorensen
` (4 more replies)
0 siblings, 5 replies; 9+ messages in thread
From: Jes.Sorensen @ 2011-03-14 12:28 UTC (permalink / raw)
To: qemu-devel; +Cc: jan.kiszka, peter.maydell
From: Jes Sorensen <Jes.Sorensen@redhat.com>
Hi,
Here is the follow-up patches after the discussion on Friday. I have
introduced a new -display argument to consolidate the current
-sdl/-curses/-nographic arguments. Patch 2 introduces -display none
which was suggested by Anthony. Patches 3+4 adds error warnings if a
user tries to call -sdl or -curses when these features are not enabled
and patch five finally makes VNC optional in the build.
Longer term we should add sub-argument support to -display so we can
make -display handle all the sub-arguments for -sdl etc.
Comments?
Cheers,
Jes
Jes Sorensen (5):
Introduce -display argument
Introduce -display none
error message if user specifies SDL cmd line option when SDL is
disabled
error message if user specifies curses on cmd line when curses is
disabled
Make VNC support optional
Makefile.objs | 19 +++++++-------
configure | 37 +++++++++++++++++++---------
console.h | 26 ++++++++++++++++++-
monitor.c | 22 +++++++---------
qemu-options.hx | 46 ++++++++++++++++++++++++++---------
qerror.h | 3 ++
sysemu.h | 1 +
ui/vnc.c | 14 +++++++---
vl.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++----
9 files changed, 183 insertions(+), 57 deletions(-)
--
1.7.4
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH 1/5] Introduce -display argument
2011-03-14 12:28 [Qemu-devel] [PATCH 0/5] Introduce -display and make VNC optional Jes.Sorensen
@ 2011-03-14 12:28 ` Jes.Sorensen
2011-03-14 12:40 ` [Qemu-devel] " Peter Maydell
2011-03-14 13:37 ` Anthony Liguori
2011-03-14 12:28 ` [Qemu-devel] [PATCH 2/5] Introduce -display none Jes.Sorensen
` (3 subsequent siblings)
4 siblings, 2 replies; 9+ messages in thread
From: Jes.Sorensen @ 2011-03-14 12:28 UTC (permalink / raw)
To: qemu-devel; +Cc: jan.kiszka, peter.maydell
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/nographic
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
qemu-options.hx | 28 ++++++++++++++++++++++++++++
vl.c | 34 ++++++++++++++++++++++++++++++++++
2 files changed, 62 insertions(+), 0 deletions(-)
diff --git a/qemu-options.hx b/qemu-options.hx
index badb730..f14ff02 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -590,6 +590,34 @@ STEXI
@table @option
ETEXI
+DEF("display", HAS_ARG, QEMU_OPTION_display,
+ "-display [default|sdl|curses|nographic|none]\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 default
+Pick the default display option. This will depend on how QEMU was
+configured. (This one is the default)
+@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.
+@item nographic
+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.
+@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..e797e61 100644
--- a/vl.c
+++ b/vl.c
@@ -1554,6 +1554,37 @@ static void select_vgahw (const char *p)
}
}
+static DisplayType select_display(const char *p)
+{
+ const char *opts;
+ DisplayType display = DT_DEFAULT;
+
+ if (strstart(p, "default", &opts)) {
+ display = DT_DEFAULT;
+ } else if (strstart(p, "sdl", &opts)) {
+#ifdef CONFIG_SDL
+ display = DT_SDL;
+#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, "nographic", &opts)) {
+ display = DT_NOGRAPHIC;
+ } else {
+ fprintf(stderr, "Unknown display type: %s\n", p);
+ exit(1);
+ }
+
+ return display;
+}
+
static int balloon_parse(const char *arg)
{
QemuOpts *opts;
@@ -2152,6 +2183,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
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH 2/5] Introduce -display none
2011-03-14 12:28 [Qemu-devel] [PATCH 0/5] Introduce -display and make VNC optional Jes.Sorensen
2011-03-14 12:28 ` [Qemu-devel] [PATCH 1/5] Introduce -display argument Jes.Sorensen
@ 2011-03-14 12:28 ` Jes.Sorensen
2011-03-14 12:28 ` [Qemu-devel] [PATCH 3/5] error message if user specifies SDL cmd line option when SDL is disabled Jes.Sorensen
` (2 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Jes.Sorensen @ 2011-03-14 12:28 UTC (permalink / raw)
To: qemu-devel; +Cc: jan.kiszka, peter.maydell
From: Jes Sorensen <Jes.Sorensen@redhat.com>
New option -display none. This option differs from -display nographic
by not trying to take control of stdio etc. but instead behaves as if
a graphics display is enabled, except that it doesn't show one.
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
qemu-options.hx | 6 ++++++
sysemu.h | 1 +
vl.c | 2 ++
3 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/qemu-options.hx b/qemu-options.hx
index f14ff02..21c0d97 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -615,6 +615,12 @@ 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.
+@item none
+Pick the none display option. This option will still run with an
+emulated graphics card, but none will be displayed to the QEMU
+user. This options differs from the -nographic option in that QEMU
+will behave like if one of the display options had been picked, it
+will not change the control on the command line.
@end table
ETEXI
diff --git a/sysemu.h b/sysemu.h
index 0a83ab9..c43c7af 100644
--- a/sysemu.h
+++ b/sysemu.h
@@ -110,6 +110,7 @@ typedef enum DisplayType
DT_CURSES,
DT_SDL,
DT_NOGRAPHIC,
+ DT_NONE,
} DisplayType;
extern int autostart;
diff --git a/vl.c b/vl.c
index e797e61..8ed4607 100644
--- a/vl.c
+++ b/vl.c
@@ -1577,6 +1577,8 @@ static DisplayType select_display(const char *p)
#endif
} else if (strstart(p, "nographic", &opts)) {
display = DT_NOGRAPHIC;
+ } else if (strstart(p, "none", &opts)) {
+ display = DT_NONE;
} else {
fprintf(stderr, "Unknown display type: %s\n", p);
exit(1);
--
1.7.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH 3/5] error message if user specifies SDL cmd line option when SDL is disabled
2011-03-14 12:28 [Qemu-devel] [PATCH 0/5] Introduce -display and make VNC optional Jes.Sorensen
2011-03-14 12:28 ` [Qemu-devel] [PATCH 1/5] Introduce -display argument Jes.Sorensen
2011-03-14 12:28 ` [Qemu-devel] [PATCH 2/5] Introduce -display none Jes.Sorensen
@ 2011-03-14 12:28 ` Jes.Sorensen
2011-03-14 12:28 ` [Qemu-devel] [PATCH 4/5] error message if user specifies curses on cmd line when curses " Jes.Sorensen
2011-03-14 12:28 ` [Qemu-devel] [PATCH 5/5] Make VNC support optional Jes.Sorensen
4 siblings, 0 replies; 9+ messages in thread
From: Jes.Sorensen @ 2011-03-14 12:28 UTC (permalink / raw)
To: qemu-devel; +Cc: jan.kiszka, peter.maydell
From: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
qemu-options.hx | 10 ----------
vl.c | 8 ++++++++
2 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/qemu-options.hx b/qemu-options.hx
index 21c0d97..960762a 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -650,11 +650,9 @@ QEMU can display the VGA output when in text mode using a
curses/ncurses interface. Nothing is displayed in graphical mode.
ETEXI
-#ifdef CONFIG_SDL
DEF("no-frame", 0, QEMU_OPTION_no_frame,
"-no-frame open SDL window without a frame and window decorations\n",
QEMU_ARCH_ALL)
-#endif
STEXI
@item -no-frame
@findex -no-frame
@@ -663,42 +661,34 @@ available screen space. This makes the using QEMU in a dedicated desktop
workspace more convenient.
ETEXI
-#ifdef CONFIG_SDL
DEF("alt-grab", 0, QEMU_OPTION_alt_grab,
"-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)\n",
QEMU_ARCH_ALL)
-#endif
STEXI
@item -alt-grab
@findex -alt-grab
Use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt).
ETEXI
-#ifdef CONFIG_SDL
DEF("ctrl-grab", 0, QEMU_OPTION_ctrl_grab,
"-ctrl-grab use Right-Ctrl to grab mouse (instead of Ctrl-Alt)\n",
QEMU_ARCH_ALL)
-#endif
STEXI
@item -ctrl-grab
@findex -ctrl-grab
Use Right-Ctrl to grab mouse (instead of Ctrl-Alt).
ETEXI
-#ifdef CONFIG_SDL
DEF("no-quit", 0, QEMU_OPTION_no_quit,
"-no-quit disable SDL window close capability\n", QEMU_ARCH_ALL)
-#endif
STEXI
@item -no-quit
@findex -no-quit
Disable SDL window close capability.
ETEXI
-#ifdef CONFIG_SDL
DEF("sdl", 0, QEMU_OPTION_sdl,
"-sdl enable SDL\n", QEMU_ARCH_ALL)
-#endif
STEXI
@item -sdl
@findex -sdl
diff --git a/vl.c b/vl.c
index 8ed4607..ab78e4c 100644
--- a/vl.c
+++ b/vl.c
@@ -2569,6 +2569,14 @@ int main(int argc, char **argv, char **envp)
case QEMU_OPTION_sdl:
display_type = DT_SDL;
break;
+#else
+ case QEMU_OPTION_no_frame:
+ case QEMU_OPTION_alt_grab:
+ case QEMU_OPTION_ctrl_grab:
+ case QEMU_OPTION_no_quit:
+ case QEMU_OPTION_sdl:
+ fprintf(stderr, "SDL support is disabled\n");
+ exit(1);
#endif
case QEMU_OPTION_pidfile:
pid_file = optarg;
--
1.7.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH 4/5] error message if user specifies curses on cmd line when curses is disabled
2011-03-14 12:28 [Qemu-devel] [PATCH 0/5] Introduce -display and make VNC optional Jes.Sorensen
` (2 preceding siblings ...)
2011-03-14 12:28 ` [Qemu-devel] [PATCH 3/5] error message if user specifies SDL cmd line option when SDL is disabled Jes.Sorensen
@ 2011-03-14 12:28 ` Jes.Sorensen
2011-03-14 12:28 ` [Qemu-devel] [PATCH 5/5] Make VNC support optional Jes.Sorensen
4 siblings, 0 replies; 9+ messages in thread
From: Jes.Sorensen @ 2011-03-14 12:28 UTC (permalink / raw)
To: qemu-devel; +Cc: jan.kiszka, peter.maydell
From: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
qemu-options.hx | 2 --
vl.c | 7 +++++--
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/qemu-options.hx b/qemu-options.hx
index 960762a..55f0872 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -637,11 +637,9 @@ the console. Therefore, you can still use QEMU to debug a Linux kernel
with a serial console.
ETEXI
-#ifdef CONFIG_CURSES
DEF("curses", 0, QEMU_OPTION_curses,
"-curses use a curses/ncurses interface instead of SDL\n",
QEMU_ARCH_ALL)
-#endif
STEXI
@item -curses
@findex curses
diff --git a/vl.c b/vl.c
index ab78e4c..f256f86 100644
--- a/vl.c
+++ b/vl.c
@@ -2191,11 +2191,14 @@ int main(int argc, char **argv, char **envp)
case QEMU_OPTION_nographic:
display_type = DT_NOGRAPHIC;
break;
-#ifdef CONFIG_CURSES
case QEMU_OPTION_curses:
+#ifdef CONFIG_CURSES
display_type = DT_CURSES;
- break;
+#else
+ fprintf(stderr, "Curses support is disabled\n");
+ exit(1);
#endif
+ break;
case QEMU_OPTION_portrait:
graphic_rotate = 1;
break;
--
1.7.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH 5/5] Make VNC support optional
2011-03-14 12:28 [Qemu-devel] [PATCH 0/5] Introduce -display and make VNC optional Jes.Sorensen
` (3 preceding siblings ...)
2011-03-14 12:28 ` [Qemu-devel] [PATCH 4/5] error message if user specifies curses on cmd line when curses " Jes.Sorensen
@ 2011-03-14 12:28 ` Jes.Sorensen
4 siblings, 0 replies; 9+ messages in thread
From: Jes.Sorensen @ 2011-03-14 12:28 UTC (permalink / raw)
To: qemu-devel; +Cc: jan.kiszka, peter.maydell
From: Jes Sorensen <Jes.Sorensen@redhat.com>
Per default VNC is enabled.
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
Makefile.objs | 19 ++++++++++---------
configure | 37 +++++++++++++++++++++++++------------
console.h | 26 ++++++++++++++++++++++++--
monitor.c | 22 ++++++++++------------
qerror.h | 3 +++
ui/vnc.c | 14 ++++++++++----
vl.c | 21 +++++++++++++++++----
7 files changed, 99 insertions(+), 43 deletions(-)
diff --git a/Makefile.objs b/Makefile.objs
index a52f42f..9796d12 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -127,19 +127,20 @@ common-obj-y += $(addprefix audio/, $(audio-obj-y))
ui-obj-y += keymaps.o
ui-obj-$(CONFIG_SDL) += sdl.o sdl_zoom.o x_keymap.o
ui-obj-$(CONFIG_CURSES) += curses.o
-ui-obj-y += vnc.o d3des.o
-ui-obj-y += vnc-enc-zlib.o vnc-enc-hextile.o
-ui-obj-y += vnc-enc-tight.o vnc-palette.o
-ui-obj-y += vnc-enc-zrle.o
-ui-obj-$(CONFIG_VNC_TLS) += vnc-tls.o vnc-auth-vencrypt.o
-ui-obj-$(CONFIG_VNC_SASL) += vnc-auth-sasl.o
-ui-obj-$(CONFIG_COCOA) += cocoa.o
+vnc-obj-y += vnc.o d3des.o
+vnc-obj-y += vnc-enc-zlib.o vnc-enc-hextile.o
+vnc-obj-y += vnc-enc-tight.o vnc-palette.o
+vnc-obj-y += vnc-enc-zrle.o
+vnc-obj-$(CONFIG_VNC_TLS) += vnc-tls.o vnc-auth-vencrypt.o
+vnc-obj-$(CONFIG_VNC_SASL) += vnc-auth-sasl.o
+vnc-obj-$(CONFIG_COCOA) += cocoa.o
ifdef CONFIG_VNC_THREAD
-ui-obj-y += vnc-jobs-async.o
+vnc-obj-y += vnc-jobs-async.o
else
-ui-obj-y += vnc-jobs-sync.o
+vnc-obj-y += vnc-jobs-sync.o
endif
common-obj-y += $(addprefix ui/, $(ui-obj-y))
+common-obj-$(CONFIG_VNC) += $(addprefix ui/, $(vnc-obj-y))
common-obj-y += iov.o acl.o
common-obj-$(CONFIG_POSIX) += qemu-thread-posix.o compatfd.o
diff --git a/configure b/configure
index a166de0..abd3317 100755
--- a/configure
+++ b/configure
@@ -117,6 +117,7 @@ kvm=""
kvm_para=""
nptl=""
sdl=""
+vnc="yes"
sparse="no"
uuid=""
vde=""
@@ -539,6 +540,10 @@ for opt do
;;
--enable-sdl) sdl="yes"
;;
+ --disable-vnc) vnc="no"
+ ;;
+ --enable-vnc) vnc="yes"
+ ;;
--fmod-lib=*) fmod_lib="$optarg"
;;
--fmod-inc=*) fmod_inc="$optarg"
@@ -836,6 +841,8 @@ echo " --disable-strip disable stripping binaries"
echo " --disable-werror disable compilation abort on warning"
echo " --disable-sdl disable SDL"
echo " --enable-sdl enable SDL"
+echo " --disable-vnc disable VNC"
+echo " --enable-vnc enable VNC"
echo " --enable-cocoa enable COCOA (Mac OS X only)"
echo " --audio-drv-list=LIST set audio drivers list:"
echo " Available drivers: $audio_possible_drivers"
@@ -1273,7 +1280,7 @@ fi
##########################################
# VNC TLS detection
-if test "$vnc_tls" != "no" ; then
+if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
cat > $TMPC <<EOF
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
@@ -1293,7 +1300,7 @@ fi
##########################################
# VNC SASL detection
-if test "$vnc_sasl" != "no" ; then
+if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
cat > $TMPC <<EOF
#include <sasl/sasl.h>
#include <stdio.h>
@@ -1315,7 +1322,7 @@ fi
##########################################
# VNC JPEG detection
-if test "$vnc_jpeg" != "no" ; then
+if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
cat > $TMPC <<EOF
#include <stdio.h>
#include <jpeglib.h>
@@ -1336,7 +1343,7 @@ fi
##########################################
# VNC PNG detection
-if test "$vnc_png" != "no" ; then
+if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
cat > $TMPC <<EOF
//#include <stdio.h>
#include <png.h>
@@ -2495,11 +2502,14 @@ echo "Audio drivers $audio_drv_list"
echo "Extra audio cards $audio_card_list"
echo "Block whitelist $block_drv_whitelist"
echo "Mixer emulation $mixemu"
-echo "VNC TLS support $vnc_tls"
-echo "VNC SASL support $vnc_sasl"
-echo "VNC JPEG support $vnc_jpeg"
-echo "VNC PNG support $vnc_png"
-echo "VNC thread $vnc_thread"
+echo "VNC support $vnc"
+if test "$vnc" = "yes" ; then
+ echo "VNC TLS support $vnc_tls"
+ echo "VNC SASL support $vnc_sasl"
+ echo "VNC JPEG support $vnc_jpeg"
+ echo "VNC PNG support $vnc_png"
+ echo "VNC thread $vnc_thread"
+fi
if test -n "$sparc_cpu"; then
echo "Target Sparc Arch $sparc_cpu"
fi
@@ -2649,6 +2659,9 @@ echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak
if test "$mixemu" = "yes" ; then
echo "CONFIG_MIXEMU=y" >> $config_host_mak
fi
+if test "$vnc" = "yes" ; then
+ echo "CONFIG_VNC=y" >> $config_host_mak
+fi
if test "$vnc_tls" = "yes" ; then
echo "CONFIG_VNC_TLS=y" >> $config_host_mak
echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
@@ -2657,15 +2670,15 @@ if test "$vnc_sasl" = "yes" ; then
echo "CONFIG_VNC_SASL=y" >> $config_host_mak
echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
fi
-if test "$vnc_jpeg" != "no" ; then
+if test "$vnc_jpeg" = "yes" ; then
echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak
fi
-if test "$vnc_png" != "no" ; then
+if test "$vnc_png" = "yes" ; then
echo "CONFIG_VNC_PNG=y" >> $config_host_mak
echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak
fi
-if test "$vnc_thread" != "no" ; then
+if test "$vnc_thread" = "yes" ; then
echo "CONFIG_VNC_THREAD=y" >> $config_host_mak
fi
if test "$fnmatch" = "yes" ; then
diff --git a/console.h b/console.h
index dec9a76..317da1b 100644
--- a/console.h
+++ b/console.h
@@ -4,6 +4,8 @@
#include "qemu-char.h"
#include "qdict.h"
#include "notify.h"
+#include "qerror.h"
+#include "monitor.h"
/* keyboard/mouse support */
@@ -371,12 +373,32 @@ void cocoa_display_init(DisplayState *ds, int full_screen);
void vnc_display_init(DisplayState *ds);
void vnc_display_close(DisplayState *ds);
int vnc_display_open(DisplayState *ds, const char *display);
-int vnc_display_password(DisplayState *ds, const char *password);
int vnc_display_disable_login(DisplayState *ds);
+char *vnc_display_local_addr(DisplayState *ds);
+#ifdef CONFIG_VNC
+int vnc_display_password(DisplayState *ds, const char *password);
int vnc_display_pw_expire(DisplayState *ds, time_t expires);
void do_info_vnc_print(Monitor *mon, const QObject *data);
void do_info_vnc(Monitor *mon, QObject **ret_data);
-char *vnc_display_local_addr(DisplayState *ds);
+#else
+static inline int vnc_display_password(DisplayState *ds, const char *password)
+{
+ qerror_report(QERR_FEATURE_DISABLED, "vnc");
+ return -ENODEV;
+}
+static inline int vnc_display_pw_expire(DisplayState *ds, time_t expires)
+{
+ qerror_report(QERR_FEATURE_DISABLED, "vnc");
+ return -ENODEV;
+};
+static inline void do_info_vnc(Monitor *mon, QObject **ret_data)
+{
+};
+static inline void do_info_vnc_print(Monitor *mon, const QObject *data)
+{
+ monitor_printf(mon, "VNC support disabled\n");
+};
+#endif
/* curses.c */
void curses_display_init(DisplayState *ds, int full_screen);
diff --git a/monitor.c b/monitor.c
index 22ae3bb..4a54c55 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1016,6 +1016,7 @@ static int do_quit(Monitor *mon, const QDict *qdict, QObject **ret_data)
return 0;
}
+#ifdef CONFIG_VNC
static int change_vnc_password(const char *password)
{
if (!password || !password[0]) {
@@ -1062,6 +1063,13 @@ static int do_change_vnc(Monitor *mon, const char *target, const char *arg)
return 0;
}
+#else
+static int do_change_vnc(Monitor *mon, const char *target, const char *arg)
+{
+ qerror_report(QERR_FEATURE_DISABLED, "vnc");
+ return -ENODEV;
+}
+#endif
/**
* do_change(): Change a removable medium, or VNC configuration
@@ -1127,12 +1135,7 @@ static int set_password(Monitor *mon, const QDict *qdict, QObject **ret_data)
}
/* Note that setting an empty password will not disable login through
* this interface. */
- rc = vnc_display_password(NULL, password);
- if (rc != 0) {
- qerror_report(QERR_SET_PASSWD_FAILED);
- return -1;
- }
- return 0;
+ return vnc_display_password(NULL, password);
}
qerror_report(QERR_INVALID_PARAMETER, "protocol");
@@ -1171,12 +1174,7 @@ static int expire_password(Monitor *mon, const QDict *qdict, QObject **ret_data)
}
if (strcmp(protocol, "vnc") == 0) {
- rc = vnc_display_pw_expire(NULL, when);
- if (rc != 0) {
- qerror_report(QERR_SET_PASSWD_FAILED);
- return -1;
- }
- return 0;
+ return vnc_display_pw_expire(NULL, when);
}
qerror_report(QERR_INVALID_PARAMETER, "protocol");
diff --git a/qerror.h b/qerror.h
index f732d45..df61d2c 100644
--- a/qerror.h
+++ b/qerror.h
@@ -171,4 +171,7 @@ QError *qobject_to_qerror(const QObject *obj);
#define QERR_VNC_SERVER_FAILED \
"{ 'class': 'VNCServerFailed', 'data': { 'target': %s } }"
+#define QERR_FEATURE_DISABLED \
+ "{ 'class': 'FeatureDisabled', 'data': { 'name': %s } }"
+
#endif /* QERROR_H */
diff --git a/ui/vnc.c b/ui/vnc.c
index 34dc0cd..dd7a44a 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -2638,16 +2638,19 @@ int vnc_display_disable_login(DisplayState *ds)
int vnc_display_password(DisplayState *ds, const char *password)
{
+ int ret = 0;
VncDisplay *vs = ds ? (VncDisplay *)ds->opaque : vnc_display;
if (!vs) {
- return -1;
+ ret = -EINVAL;
+ goto out;
}
if (!password) {
/* This is not the intention of this interface but err on the side
of being safe */
- return vnc_display_disable_login(ds);
+ ret = vnc_display_disable_login(ds);
+ goto out;
}
if (vs->password) {
@@ -2656,8 +2659,11 @@ int vnc_display_password(DisplayState *ds, const char *password)
}
vs->password = qemu_strdup(password);
vs->auth = VNC_AUTH_VNC;
-
- return 0;
+out:
+ if (ret != 0) {
+ qerror_report(QERR_SET_PASSWD_FAILED);
+ }
+ return ret;
}
int vnc_display_pw_expire(DisplayState *ds, time_t expires)
diff --git a/vl.c b/vl.c
index f256f86..dbc98f1 100644
--- a/vl.c
+++ b/vl.c
@@ -206,7 +206,9 @@ int smp_cpus = 1;
int max_cpus = 0;
int smp_cores = 1;
int smp_threads = 1;
+#ifdef CONFIG_VNC
const char *vnc_display;
+#endif
int acpi_enabled = 1;
int no_hpet = 0;
int fd_bootchk = 1;
@@ -1970,7 +1972,9 @@ int main(int argc, char **argv, char **envp)
int tb_size;
const char *pid_file = NULL;
const char *incoming = NULL;
+#ifdef CONFIG_VNC
int show_vnc_port = 0;
+#endif
int defconfig = 1;
const char *trace_file = NULL;
@@ -2628,9 +2632,14 @@ int main(int argc, char **argv, char **envp)
}
break;
case QEMU_OPTION_vnc:
+#ifdef CONFIG_VNC
display_remote++;
- vnc_display = optarg;
- break;
+ vnc_display = optarg;
+#else
+ fprintf(stderr, "VNC support is disabled\n");
+ exit(1);
+#endif
+ break;
case QEMU_OPTION_no_acpi:
acpi_enabled = 0;
break;
@@ -3084,12 +3093,14 @@ int main(int argc, char **argv, char **envp)
if (display_type == DT_DEFAULT && !display_remote) {
#if defined(CONFIG_SDL) || defined(CONFIG_COCOA)
display_type = DT_SDL;
-#else
+#elif defined(CONFIG_VNC)
vnc_display = "localhost:0,to=99";
show_vnc_port = 1;
+#else
+ display_type = DT_NONE;
#endif
}
-
+
/* init local displays */
switch (display_type) {
@@ -3113,6 +3124,7 @@ int main(int argc, char **argv, char **envp)
break;
}
+#ifdef CONFIG_VNC
/* init remote displays */
if (vnc_display) {
vnc_display_init(ds);
@@ -3123,6 +3135,7 @@ int main(int argc, char **argv, char **envp)
printf("VNC server running on `%s'\n", vnc_display_local_addr(ds));
}
}
+#endif
#ifdef CONFIG_SPICE
if (using_spice && !qxl_enabled) {
qemu_spice_display_init(ds);
--
1.7.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] Re: [PATCH 1/5] Introduce -display argument
2011-03-14 12:28 ` [Qemu-devel] [PATCH 1/5] Introduce -display argument Jes.Sorensen
@ 2011-03-14 12:40 ` Peter Maydell
2011-03-14 12:41 ` Jes Sorensen
2011-03-14 13:37 ` Anthony Liguori
1 sibling, 1 reply; 9+ messages in thread
From: Peter Maydell @ 2011-03-14 12:40 UTC (permalink / raw)
To: Jes.Sorensen; +Cc: jan.kiszka, qemu-devel
On 14 March 2011 12:28, <Jes.Sorensen@redhat.com> wrote:
> This patch introduces a -display argument which consolidates the
> setting of the display mode. Valid options are:
> sdl/curses/default/nographic
I wasn't expecting to see "nographic" as an option here -- my
preference would be to retain the existing '-nographic' switch
for backwards-compatibility, but '-display foo' should only
affect the video type. (ie the equivalent of '-nographic' ought
to be a set of options including '-display none', '-serial mon:stdio'
and so on, not a single '-display:nographic').
-- PMM
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Qemu-devel] Re: [PATCH 1/5] Introduce -display argument
2011-03-14 12:40 ` [Qemu-devel] " Peter Maydell
@ 2011-03-14 12:41 ` Jes Sorensen
0 siblings, 0 replies; 9+ messages in thread
From: Jes Sorensen @ 2011-03-14 12:41 UTC (permalink / raw)
To: Peter Maydell; +Cc: jan.kiszka, qemu-devel
On 03/14/11 13:40, Peter Maydell wrote:
> On 14 March 2011 12:28, <Jes.Sorensen@redhat.com> wrote:
>> This patch introduces a -display argument which consolidates the
>> setting of the display mode. Valid options are:
>> sdl/curses/default/nographic
>
> I wasn't expecting to see "nographic" as an option here -- my
> preference would be to retain the existing '-nographic' switch
> for backwards-compatibility, but '-display foo' should only
> affect the video type. (ie the equivalent of '-nographic' ought
> to be a set of options including '-display none', '-serial mon:stdio'
> and so on, not a single '-display:nographic').
It would be easy to remove it from the -display option, but I think it
is fair to keep it in. I was pretty much trying to cover every DT_foo
option we have. If nographic is going away as a display option, we
should make it in the code that it is for legacy support only.
Cheers,
Jes
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Qemu-devel] Re: [PATCH 1/5] Introduce -display argument
2011-03-14 12:28 ` [Qemu-devel] [PATCH 1/5] Introduce -display argument Jes.Sorensen
2011-03-14 12:40 ` [Qemu-devel] " Peter Maydell
@ 2011-03-14 13:37 ` Anthony Liguori
1 sibling, 0 replies; 9+ messages in thread
From: Anthony Liguori @ 2011-03-14 13:37 UTC (permalink / raw)
To: Jes.Sorensen; +Cc: jan.kiszka, qemu-devel, peter.maydell
On 03/14/2011 07:28 AM, 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/nographic
>
> Signed-off-by: Jes Sorensen<Jes.Sorensen@redhat.com>
I'd suggest using 'serial' instead of 'nographic' as that makes it more
obvious to the user that they need to configure a serial session.
I would drop 'default' for no other reason than we don't really expose
default as a choice anywhere else and I'm struggling to justify it to
myself.
I think we also need to leave room to make -display take per-display
specific parameters via QemuOpts. That said, converting -vnc to
QemuOpts is hard so what I'd suggest doing is just cheating for the
moment. Document the option to take per-display args after the main
display, and then do something like:
if (strstarts(optarg, "vnc,", &p)) {
vnc_display_init(p);
}
We have a bunch of little stupid SDL options like -sdl-no-frame and it
would be good to eventually be able to express that as -display
sdl,frame=off
Regards,
Anthony Liguori
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2011-03-14 13:37 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-14 12:28 [Qemu-devel] [PATCH 0/5] Introduce -display and make VNC optional Jes.Sorensen
2011-03-14 12:28 ` [Qemu-devel] [PATCH 1/5] Introduce -display argument Jes.Sorensen
2011-03-14 12:40 ` [Qemu-devel] " Peter Maydell
2011-03-14 12:41 ` Jes Sorensen
2011-03-14 13:37 ` Anthony Liguori
2011-03-14 12:28 ` [Qemu-devel] [PATCH 2/5] Introduce -display none Jes.Sorensen
2011-03-14 12:28 ` [Qemu-devel] [PATCH 3/5] error message if user specifies SDL cmd line option when SDL is disabled Jes.Sorensen
2011-03-14 12:28 ` [Qemu-devel] [PATCH 4/5] error message if user specifies curses on cmd line when curses " Jes.Sorensen
2011-03-14 12:28 ` [Qemu-devel] [PATCH 5/5] Make VNC support optional Jes.Sorensen
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).