* [Qemu-devel] [PATCH v5 0/7] Introduce -display and make VNC optional
@ 2011-03-16 12:33 Jes.Sorensen
2011-03-16 12:33 ` [Qemu-devel] [PATCH 1/7] Consolidate DisplaySurface allocation in qemu_alloc_display() Jes.Sorensen
` (7 more replies)
0 siblings, 8 replies; 14+ messages in thread
From: Jes.Sorensen @ 2011-03-16 12:33 UTC (permalink / raw)
To: qemu-devel; +Cc: jan.kiszka, peter.maydell
From: Jes Sorensen <Jes.Sorensen@redhat.com>
Hi,
This is v5 version of the -display patches and the option to
make VNC optional.
It introduces a new -display argument to consolidate the current
-sdl/-curses/-nographic/-vnc arguments.
v5 fixes the commit messages and adds some documentation changes
suggested by Peter Maydell. There are no code changes.
Only change in v4 was to fix the problem where the build would fail
with vnc disabled. This was introduced when I added -display support,
I forgot to take this into account in the disable-vnc patch.
Cheers,
Jes
Jes Sorensen (7):
Consolidate DisplaySurface allocation in qemu_alloc_display()
Introduce -display argument
Introduce -display none
Add support for -display vnc
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.c | 46 ++++++++++---------
console.h | 28 +++++++++++-
monitor.c | 22 ++++-----
qemu-options.hx | 43 +++++++++++++-----
qerror.h | 3 +
sysemu.h | 1 +
ui/sdl.c | 20 +++-----
ui/vnc.c | 14 ++++--
vl.c | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
11 files changed, 274 insertions(+), 91 deletions(-)
--
1.7.4
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 1/7] Consolidate DisplaySurface allocation in qemu_alloc_display()
2011-03-16 12:33 [Qemu-devel] [PATCH v5 0/7] Introduce -display and make VNC optional Jes.Sorensen
@ 2011-03-16 12:33 ` Jes.Sorensen
2011-03-16 12:33 ` [Qemu-devel] [PATCH 2/7] Introduce -display argument Jes.Sorensen
` (6 subsequent siblings)
7 siblings, 0 replies; 14+ messages in thread
From: Jes.Sorensen @ 2011-03-16 12:33 UTC (permalink / raw)
To: qemu-devel; +Cc: jan.kiszka, peter.maydell
From: Jes Sorensen <Jes.Sorensen@redhat.com>
This removes various code duplication from console.e and sdl.c
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
console.c | 46 ++++++++++++++++++++++++----------------------
console.h | 2 ++
ui/sdl.c | 20 ++++++++------------
3 files changed, 34 insertions(+), 34 deletions(-)
diff --git a/console.c b/console.c
index 57d6eb5..f86186f 100644
--- a/console.c
+++ b/console.c
@@ -1278,38 +1278,40 @@ static DisplaySurface* defaultallocator_create_displaysurface(int width, int hei
{
DisplaySurface *surface = (DisplaySurface*) qemu_mallocz(sizeof(DisplaySurface));
- surface->width = width;
- surface->height = height;
- surface->linesize = width * 4;
- surface->pf = qemu_default_pixelformat(32);
-#ifdef HOST_WORDS_BIGENDIAN
- surface->flags = QEMU_ALLOCATED_FLAG | QEMU_BIG_ENDIAN_FLAG;
-#else
- surface->flags = QEMU_ALLOCATED_FLAG;
-#endif
- surface->data = (uint8_t*) qemu_mallocz(surface->linesize * surface->height);
-
+ int linesize = width * 4;
+ qemu_alloc_display(surface, width, height, linesize,
+ qemu_default_pixelformat(32), 0);
return surface;
}
static DisplaySurface* defaultallocator_resize_displaysurface(DisplaySurface *surface,
int width, int height)
{
+ int linesize = width * 4;
+ qemu_alloc_display(surface, width, height, linesize,
+ qemu_default_pixelformat(32), 0);
+ return surface;
+}
+
+void qemu_alloc_display(DisplaySurface *surface, int width, int height,
+ int linesize, PixelFormat pf, int newflags)
+{
+ void *data;
surface->width = width;
surface->height = height;
- surface->linesize = width * 4;
- surface->pf = qemu_default_pixelformat(32);
- if (surface->flags & QEMU_ALLOCATED_FLAG)
- surface->data = (uint8_t*) qemu_realloc(surface->data, surface->linesize * surface->height);
- else
- surface->data = (uint8_t*) qemu_malloc(surface->linesize * surface->height);
+ surface->linesize = linesize;
+ surface->pf = pf;
+ if (surface->flags & QEMU_ALLOCATED_FLAG) {
+ data = qemu_realloc(surface->data,
+ surface->linesize * surface->height);
+ } else {
+ data = qemu_malloc(surface->linesize * surface->height);
+ }
+ surface->data = (uint8_t *)data;
+ surface->flags = newflags | QEMU_ALLOCATED_FLAG;
#ifdef HOST_WORDS_BIGENDIAN
- surface->flags = QEMU_ALLOCATED_FLAG | QEMU_BIG_ENDIAN_FLAG;
-#else
- surface->flags = QEMU_ALLOCATED_FLAG;
+ surface->flags |= QEMU_BIG_ENDIAN_FLAG;
#endif
-
- return surface;
}
DisplaySurface* qemu_create_displaysurface_from(int width, int height, int bpp,
diff --git a/console.h b/console.h
index f4e4741..711895e 100644
--- a/console.h
+++ b/console.h
@@ -189,6 +189,8 @@ void register_displaystate(DisplayState *ds);
DisplayState *get_displaystate(void);
DisplaySurface* qemu_create_displaysurface_from(int width, int height, int bpp,
int linesize, uint8_t *data);
+void qemu_alloc_display(DisplaySurface *surface, int width, int height,
+ int linesize, PixelFormat pf, int newflags);
PixelFormat qemu_different_endianness_pixelformat(int bpp);
PixelFormat qemu_default_pixelformat(int bpp);
diff --git a/ui/sdl.c b/ui/sdl.c
index 47ac49c..c5bb0a3 100644
--- a/ui/sdl.c
+++ b/ui/sdl.c
@@ -176,22 +176,18 @@ static DisplaySurface* sdl_create_displaysurface(int width, int height)
surface->width = width;
surface->height = height;
-
+
if (scaling_active) {
+ int linesize;
+ PixelFormat pf;
if (host_format.BytesPerPixel != 2 && host_format.BytesPerPixel != 4) {
- surface->linesize = width * 4;
- surface->pf = qemu_default_pixelformat(32);
+ linesize = width * 4;
+ pf = qemu_default_pixelformat(32);
} else {
- surface->linesize = width * host_format.BytesPerPixel;
- surface->pf = sdl_to_qemu_pixelformat(&host_format);
+ linesize = width * host_format.BytesPerPixel;
+ pf = sdl_to_qemu_pixelformat(&host_format);
}
-#ifdef HOST_WORDS_BIGENDIAN
- surface->flags = QEMU_ALLOCATED_FLAG | QEMU_BIG_ENDIAN_FLAG;
-#else
- surface->flags = QEMU_ALLOCATED_FLAG;
-#endif
- surface->data = (uint8_t*) qemu_mallocz(surface->linesize * surface->height);
-
+ qemu_alloc_display(surface, width, height, linesize, pf, 0);
return surface;
}
--
1.7.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 2/7] Introduce -display argument
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 1/7] Consolidate DisplaySurface allocation in qemu_alloc_display() Jes.Sorensen
@ 2011-03-16 12:33 ` Jes.Sorensen
2011-03-16 12:33 ` [Qemu-devel] [PATCH 3/7] Introduce -display none Jes.Sorensen
` (5 subsequent siblings)
7 siblings, 0 replies; 14+ messages in thread
From: Jes.Sorensen @ 2011-03-16 12:33 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
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
qemu-options.hx | 22 ++++++++++++++++
vl.c | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 97 insertions(+), 0 deletions(-)
diff --git a/qemu-options.hx b/qemu-options.hx
index badb730..a3191e6 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -590,6 +590,28 @@ 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
+Display video output via SDL (usually in a separate graphics
+window; see the SDL documentation for other possibilities).
+@item curses
+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.
+@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;
--
1.7.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 3/7] Introduce -display none
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 1/7] Consolidate DisplaySurface allocation in qemu_alloc_display() Jes.Sorensen
2011-03-16 12:33 ` [Qemu-devel] [PATCH 2/7] Introduce -display argument Jes.Sorensen
@ 2011-03-16 12:33 ` Jes.Sorensen
2011-03-16 12:33 ` [Qemu-devel] [PATCH 4/7] Add support for -display vnc Jes.Sorensen
` (4 subsequent siblings)
7 siblings, 0 replies; 14+ messages in thread
From: Jes.Sorensen @ 2011-03-16 12:33 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 -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 | 8 +++++++-
sysemu.h | 1 +
vl.c | 2 ++
3 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/qemu-options.hx b/qemu-options.hx
index a3191e6..08a99b5 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -592,7 +592,7 @@ 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"
+ " [,window_close=on|off]|curses|none\n"
" select display type\n", QEMU_ARCH_ALL)
STEXI
@item -display @var{type}
@@ -609,6 +609,12 @@ 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.
+@item none
+Do not display video output. The guest will still see an emulated
+graphics card, but its output will not be displayed to the QEMU
+user. This option differs from the -nographic option in that it
+only affects what is done with video output; -nographic also changes
+the destination of the serial and parallel port data.
@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 09d4d8c..0a409f4 100644
--- a/vl.c
+++ b/vl.c
@@ -1617,6 +1617,8 @@ static DisplayType select_display(const char *p)
fprintf(stderr, "Curses support is disabled\n");
exit(1);
#endif
+ } else if (strstart(p, "none", &opts)) {
+ display = DT_NONE;
} else {
invalid_display:
fprintf(stderr, "Unknown display type: %s\n", p);
--
1.7.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 4/7] Add support for -display vnc
2011-03-16 12:33 [Qemu-devel] [PATCH v5 0/7] Introduce -display and make VNC optional Jes.Sorensen
` (2 preceding siblings ...)
2011-03-16 12:33 ` [Qemu-devel] [PATCH 3/7] Introduce -display none Jes.Sorensen
@ 2011-03-16 12:33 ` Jes.Sorensen
2011-03-16 12:33 ` [Qemu-devel] [PATCH 5/7] error message if user specifies SDL cmd line option when SDL is disabled Jes.Sorensen
` (3 subsequent siblings)
7 siblings, 0 replies; 14+ messages in thread
From: Jes.Sorensen @ 2011-03-16 12:33 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 | 5 ++++-
vl.c | 14 ++++++++++++++
2 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/qemu-options.hx b/qemu-options.hx
index 08a99b5..5f8dc04 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -592,7 +592,8 @@ 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|none\n"
+ " [,window_close=on|off]|curses|none|\n"
+ " vnc=<display>[,<optargs>]\n"
" select display type\n", QEMU_ARCH_ALL)
STEXI
@item -display @var{type}
@@ -615,6 +616,8 @@ graphics card, but its output will not be displayed to the QEMU
user. This option differs from the -nographic option in that it
only affects what is done with video output; -nographic also changes
the destination of the serial and parallel port data.
+@item vnc
+Start a VNC server on display <arg>
@end table
ETEXI
diff --git a/vl.c b/vl.c
index 0a409f4..555bc49 100644
--- a/vl.c
+++ b/vl.c
@@ -1610,6 +1610,20 @@ static DisplayType select_display(const char *p)
fprintf(stderr, "SDL support is disabled\n");
exit(1);
#endif
+ } else if (strstart(p, "vnc", &opts)) {
+ display_remote++;
+
+ if (*opts) {
+ const char *nextopt;
+
+ if (strstart(opts, "=", &nextopt)) {
+ vnc_display = nextopt;
+ }
+ }
+ if (!vnc_display) {
+ fprintf(stderr, "VNC requires a display argument vnc=<display>\n");
+ exit(1);
+ }
} else if (strstart(p, "curses", &opts)) {
#ifdef CONFIG_CURSES
display = DT_CURSES;
--
1.7.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 5/7] error message if user specifies SDL cmd line option when SDL is disabled
2011-03-16 12:33 [Qemu-devel] [PATCH v5 0/7] Introduce -display and make VNC optional Jes.Sorensen
` (3 preceding siblings ...)
2011-03-16 12:33 ` [Qemu-devel] [PATCH 4/7] Add support for -display vnc Jes.Sorensen
@ 2011-03-16 12:33 ` Jes.Sorensen
2011-03-16 12:33 ` [Qemu-devel] [PATCH 6/7] error message if user specifies curses on cmd line when curses " Jes.Sorensen
` (2 subsequent siblings)
7 siblings, 0 replies; 14+ messages in thread
From: Jes.Sorensen @ 2011-03-16 12:33 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 5f8dc04..1193d94 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -647,11 +647,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
@@ -660,42 +658,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 555bc49..1104636 100644
--- a/vl.c
+++ b/vl.c
@@ -2624,6 +2624,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] 14+ messages in thread
* [Qemu-devel] [PATCH 6/7] error message if user specifies curses on cmd line when curses is disabled
2011-03-16 12:33 [Qemu-devel] [PATCH v5 0/7] Introduce -display and make VNC optional Jes.Sorensen
` (4 preceding siblings ...)
2011-03-16 12:33 ` [Qemu-devel] [PATCH 5/7] error message if user specifies SDL cmd line option when SDL is disabled Jes.Sorensen
@ 2011-03-16 12:33 ` Jes.Sorensen
2011-03-16 12:33 ` [Qemu-devel] [PATCH 7/7] Make VNC support optional Jes.Sorensen
2011-03-22 16:28 ` [Qemu-devel] [PATCH v5 0/7] Introduce -display and make VNC optional Anthony Liguori
7 siblings, 0 replies; 14+ messages in thread
From: Jes.Sorensen @ 2011-03-16 12:33 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 1193d94..ef60730 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -634,11 +634,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 1104636..4ab3d79 100644
--- a/vl.c
+++ b/vl.c
@@ -2246,11 +2246,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] 14+ messages in thread
* [Qemu-devel] [PATCH 7/7] Make VNC support optional
2011-03-16 12:33 [Qemu-devel] [PATCH v5 0/7] Introduce -display and make VNC optional Jes.Sorensen
` (5 preceding siblings ...)
2011-03-16 12:33 ` [Qemu-devel] [PATCH 6/7] error message if user specifies curses on cmd line when curses " Jes.Sorensen
@ 2011-03-16 12:33 ` Jes.Sorensen
2011-06-02 18:59 ` [Qemu-devel] [PATCH] cocoa: Revert dependency on VNC Andreas Färber
2011-03-22 16:28 ` [Qemu-devel] [PATCH v5 0/7] Introduce -display and make VNC optional Anthony Liguori
7 siblings, 1 reply; 14+ messages in thread
From: Jes.Sorensen @ 2011-03-16 12:33 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 | 26 ++++++++++++++++++++++----
7 files changed, 104 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 711895e..64d1f09 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 */
@@ -370,12 +372,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 1b68965..e35f844 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 4ab3d79..d297a1a 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;
@@ -1611,6 +1613,7 @@ static DisplayType select_display(const char *p)
exit(1);
#endif
} else if (strstart(p, "vnc", &opts)) {
+#ifdef CONFIG_VNC
display_remote++;
if (*opts) {
@@ -1624,6 +1627,10 @@ static DisplayType select_display(const char *p)
fprintf(stderr, "VNC requires a display argument vnc=<display>\n");
exit(1);
}
+#else
+ fprintf(stderr, "VNC support is disabled\n");
+ exit(1);
+#endif
} else if (strstart(p, "curses", &opts)) {
#ifdef CONFIG_CURSES
display = DT_CURSES;
@@ -2025,7 +2032,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;
@@ -2683,9 +2692,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;
@@ -3141,12 +3155,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) {
@@ -3170,6 +3186,7 @@ int main(int argc, char **argv, char **envp)
break;
}
+#ifdef CONFIG_VNC
/* init remote displays */
if (vnc_display) {
vnc_display_init(ds);
@@ -3180,6 +3197,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] 14+ messages in thread
* Re: [Qemu-devel] [PATCH v5 0/7] Introduce -display and make VNC optional
2011-03-16 12:33 [Qemu-devel] [PATCH v5 0/7] Introduce -display and make VNC optional Jes.Sorensen
` (6 preceding siblings ...)
2011-03-16 12:33 ` [Qemu-devel] [PATCH 7/7] Make VNC support optional Jes.Sorensen
@ 2011-03-22 16:28 ` Anthony Liguori
7 siblings, 0 replies; 14+ messages in thread
From: Anthony Liguori @ 2011-03-22 16:28 UTC (permalink / raw)
To: Jes.Sorensen; +Cc: jan.kiszka, qemu-devel, peter.maydell
On 03/16/2011 07:33 AM, Jes.Sorensen@redhat.com wrote:
> From: Jes Sorensen<Jes.Sorensen@redhat.com>
>
> Hi,
>
> This is v5 version of the -display patches and the option to
> make VNC optional.
>
> It introduces a new -display argument to consolidate the current
> -sdl/-curses/-nographic/-vnc arguments.
>
> v5 fixes the commit messages and adds some documentation changes
> suggested by Peter Maydell. There are no code changes.
>
> Only change in v4 was to fix the problem where the build would fail
> with vnc disabled. This was introduced when I added -display support,
> I forgot to take this into account in the disable-vnc patch.
>
> Cheers,
> Jes
Applied all, thanks.
Regards,
Anthony Liguori
> Jes Sorensen (7):
> Consolidate DisplaySurface allocation in qemu_alloc_display()
> Introduce -display argument
> Introduce -display none
> Add support for -display vnc
> 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.c | 46 ++++++++++---------
> console.h | 28 +++++++++++-
> monitor.c | 22 ++++-----
> qemu-options.hx | 43 +++++++++++++-----
> qerror.h | 3 +
> sysemu.h | 1 +
> ui/sdl.c | 20 +++-----
> ui/vnc.c | 14 ++++--
> vl.c | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
> 11 files changed, 274 insertions(+), 91 deletions(-)
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH] cocoa: Revert dependency on VNC
2011-03-16 12:33 ` [Qemu-devel] [PATCH 7/7] Make VNC support optional Jes.Sorensen
@ 2011-06-02 18:59 ` Andreas Färber
2011-06-09 18:31 ` Andreas Färber
0 siblings, 1 reply; 14+ messages in thread
From: Andreas Färber @ 2011-06-02 18:59 UTC (permalink / raw)
To: qemu-devel; +Cc: Jes Sorensen, Andreas Färber, Anthony Liguori
In 821601ea5b02a68ada479731a4d3d07a9876632a (Make VNC support optional)
cocoa.o was moved from ui-obj-$(CONFIG_COCOA) to vnc-obj-$(CONFIG_COCOA),
adding a dependency on $(CONFIG_VNC). That must've been unintentional.
Cc: Jes Sorensen <Jes.Sorensen@redhat.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Andreas Färber <andreas.faerber@web.de>
---
Makefile.objs | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/Makefile.objs b/Makefile.objs
index 90838f6..2e6419f 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -126,6 +126,7 @@ 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_COCOA) += cocoa.o
ui-obj-$(CONFIG_CURSES) += curses.o
vnc-obj-y += vnc.o d3des.o
vnc-obj-y += vnc-enc-zlib.o vnc-enc-hextile.o
@@ -133,7 +134,6 @@ 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
vnc-obj-y += vnc-jobs-async.o
else
--
1.7.5.3
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH] cocoa: Revert dependency on VNC
2011-06-02 18:59 ` [Qemu-devel] [PATCH] cocoa: Revert dependency on VNC Andreas Färber
@ 2011-06-09 18:31 ` Andreas Färber
0 siblings, 0 replies; 14+ messages in thread
From: Andreas Färber @ 2011-06-09 18:31 UTC (permalink / raw)
To: qemu-devel Developers; +Cc: Jes Sorensen, Anthony Liguori
Am 02.06.2011 um 20:59 schrieb Andreas Färber:
> In 821601ea5b02a68ada479731a4d3d07a9876632a (Make VNC support
> optional)
> cocoa.o was moved from ui-obj-$(CONFIG_COCOA) to vnc-obj-$
> (CONFIG_COCOA),
> adding a dependency on $(CONFIG_VNC). That must've been unintentional.
>
> Cc: Jes Sorensen <Jes.Sorensen@redhat.com>
> Cc: Anthony Liguori <aliguori@us.ibm.com>
> Signed-off-by: Andreas Färber <andreas.faerber@web.de>
Applied to the cocoa branch.
Andreas
> ---
> Makefile.objs | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/Makefile.objs b/Makefile.objs
> index 90838f6..2e6419f 100644
> --- a/Makefile.objs
> +++ b/Makefile.objs
> @@ -126,6 +126,7 @@ 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_COCOA) += cocoa.o
> ui-obj-$(CONFIG_CURSES) += curses.o
> vnc-obj-y += vnc.o d3des.o
> vnc-obj-y += vnc-enc-zlib.o vnc-enc-hextile.o
> @@ -133,7 +134,6 @@ 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
> vnc-obj-y += vnc-jobs-async.o
> else
> --
> 1.7.5.3
>
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 1/7] Consolidate DisplaySurface allocation in qemu_alloc_display()
2011-03-16 11:00 [Qemu-devel] [PATCH v4 " Jes.Sorensen
@ 2011-03-16 11:00 ` Jes.Sorensen
0 siblings, 0 replies; 14+ messages in thread
From: Jes.Sorensen @ 2011-03-16 11:00 UTC (permalink / raw)
To: qemu-devel; +Cc: jan.kiszka, peter.maydell
From: Jes Sorensen <Jes.Sorensen@redhat.com>
This removes various code duplication from console.e and sdl.c
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
console.c | 46 ++++++++++++++++++++++++----------------------
console.h | 2 ++
ui/sdl.c | 20 ++++++++------------
3 files changed, 34 insertions(+), 34 deletions(-)
diff --git a/console.c b/console.c
index 57d6eb5..f86186f 100644
--- a/console.c
+++ b/console.c
@@ -1278,38 +1278,40 @@ static DisplaySurface* defaultallocator_create_displaysurface(int width, int hei
{
DisplaySurface *surface = (DisplaySurface*) qemu_mallocz(sizeof(DisplaySurface));
- surface->width = width;
- surface->height = height;
- surface->linesize = width * 4;
- surface->pf = qemu_default_pixelformat(32);
-#ifdef HOST_WORDS_BIGENDIAN
- surface->flags = QEMU_ALLOCATED_FLAG | QEMU_BIG_ENDIAN_FLAG;
-#else
- surface->flags = QEMU_ALLOCATED_FLAG;
-#endif
- surface->data = (uint8_t*) qemu_mallocz(surface->linesize * surface->height);
-
+ int linesize = width * 4;
+ qemu_alloc_display(surface, width, height, linesize,
+ qemu_default_pixelformat(32), 0);
return surface;
}
static DisplaySurface* defaultallocator_resize_displaysurface(DisplaySurface *surface,
int width, int height)
{
+ int linesize = width * 4;
+ qemu_alloc_display(surface, width, height, linesize,
+ qemu_default_pixelformat(32), 0);
+ return surface;
+}
+
+void qemu_alloc_display(DisplaySurface *surface, int width, int height,
+ int linesize, PixelFormat pf, int newflags)
+{
+ void *data;
surface->width = width;
surface->height = height;
- surface->linesize = width * 4;
- surface->pf = qemu_default_pixelformat(32);
- if (surface->flags & QEMU_ALLOCATED_FLAG)
- surface->data = (uint8_t*) qemu_realloc(surface->data, surface->linesize * surface->height);
- else
- surface->data = (uint8_t*) qemu_malloc(surface->linesize * surface->height);
+ surface->linesize = linesize;
+ surface->pf = pf;
+ if (surface->flags & QEMU_ALLOCATED_FLAG) {
+ data = qemu_realloc(surface->data,
+ surface->linesize * surface->height);
+ } else {
+ data = qemu_malloc(surface->linesize * surface->height);
+ }
+ surface->data = (uint8_t *)data;
+ surface->flags = newflags | QEMU_ALLOCATED_FLAG;
#ifdef HOST_WORDS_BIGENDIAN
- surface->flags = QEMU_ALLOCATED_FLAG | QEMU_BIG_ENDIAN_FLAG;
-#else
- surface->flags = QEMU_ALLOCATED_FLAG;
+ surface->flags |= QEMU_BIG_ENDIAN_FLAG;
#endif
-
- return surface;
}
DisplaySurface* qemu_create_displaysurface_from(int width, int height, int bpp,
diff --git a/console.h b/console.h
index f4e4741..711895e 100644
--- a/console.h
+++ b/console.h
@@ -189,6 +189,8 @@ void register_displaystate(DisplayState *ds);
DisplayState *get_displaystate(void);
DisplaySurface* qemu_create_displaysurface_from(int width, int height, int bpp,
int linesize, uint8_t *data);
+void qemu_alloc_display(DisplaySurface *surface, int width, int height,
+ int linesize, PixelFormat pf, int newflags);
PixelFormat qemu_different_endianness_pixelformat(int bpp);
PixelFormat qemu_default_pixelformat(int bpp);
diff --git a/ui/sdl.c b/ui/sdl.c
index 47ac49c..c5bb0a3 100644
--- a/ui/sdl.c
+++ b/ui/sdl.c
@@ -176,22 +176,18 @@ static DisplaySurface* sdl_create_displaysurface(int width, int height)
surface->width = width;
surface->height = height;
-
+
if (scaling_active) {
+ int linesize;
+ PixelFormat pf;
if (host_format.BytesPerPixel != 2 && host_format.BytesPerPixel != 4) {
- surface->linesize = width * 4;
- surface->pf = qemu_default_pixelformat(32);
+ linesize = width * 4;
+ pf = qemu_default_pixelformat(32);
} else {
- surface->linesize = width * host_format.BytesPerPixel;
- surface->pf = sdl_to_qemu_pixelformat(&host_format);
+ linesize = width * host_format.BytesPerPixel;
+ pf = sdl_to_qemu_pixelformat(&host_format);
}
-#ifdef HOST_WORDS_BIGENDIAN
- surface->flags = QEMU_ALLOCATED_FLAG | QEMU_BIG_ENDIAN_FLAG;
-#else
- surface->flags = QEMU_ALLOCATED_FLAG;
-#endif
- surface->data = (uint8_t*) qemu_mallocz(surface->linesize * surface->height);
-
+ qemu_alloc_display(surface, width, height, linesize, pf, 0);
return surface;
}
--
1.7.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 1/7] Consolidate DisplaySurface allocation in qemu_alloc_display()
2011-03-15 15:45 [Qemu-devel] [PATCH v3 0/7] Introduce -display and make VNC optional Jes.Sorensen
@ 2011-03-15 15:45 ` Jes.Sorensen
0 siblings, 0 replies; 14+ messages in thread
From: Jes.Sorensen @ 2011-03-15 15:45 UTC (permalink / raw)
To: qemu-devel; +Cc: jan.kiszka, peter.maydell
From: Jes Sorensen <Jes.Sorensen@redhat.com>
This removes various code duplication from console.e and sdl.c
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
console.c | 46 ++++++++++++++++++++++++----------------------
console.h | 2 ++
ui/sdl.c | 20 ++++++++------------
3 files changed, 34 insertions(+), 34 deletions(-)
diff --git a/console.c b/console.c
index 57d6eb5..f86186f 100644
--- a/console.c
+++ b/console.c
@@ -1278,38 +1278,40 @@ static DisplaySurface* defaultallocator_create_displaysurface(int width, int hei
{
DisplaySurface *surface = (DisplaySurface*) qemu_mallocz(sizeof(DisplaySurface));
- surface->width = width;
- surface->height = height;
- surface->linesize = width * 4;
- surface->pf = qemu_default_pixelformat(32);
-#ifdef HOST_WORDS_BIGENDIAN
- surface->flags = QEMU_ALLOCATED_FLAG | QEMU_BIG_ENDIAN_FLAG;
-#else
- surface->flags = QEMU_ALLOCATED_FLAG;
-#endif
- surface->data = (uint8_t*) qemu_mallocz(surface->linesize * surface->height);
-
+ int linesize = width * 4;
+ qemu_alloc_display(surface, width, height, linesize,
+ qemu_default_pixelformat(32), 0);
return surface;
}
static DisplaySurface* defaultallocator_resize_displaysurface(DisplaySurface *surface,
int width, int height)
{
+ int linesize = width * 4;
+ qemu_alloc_display(surface, width, height, linesize,
+ qemu_default_pixelformat(32), 0);
+ return surface;
+}
+
+void qemu_alloc_display(DisplaySurface *surface, int width, int height,
+ int linesize, PixelFormat pf, int newflags)
+{
+ void *data;
surface->width = width;
surface->height = height;
- surface->linesize = width * 4;
- surface->pf = qemu_default_pixelformat(32);
- if (surface->flags & QEMU_ALLOCATED_FLAG)
- surface->data = (uint8_t*) qemu_realloc(surface->data, surface->linesize * surface->height);
- else
- surface->data = (uint8_t*) qemu_malloc(surface->linesize * surface->height);
+ surface->linesize = linesize;
+ surface->pf = pf;
+ if (surface->flags & QEMU_ALLOCATED_FLAG) {
+ data = qemu_realloc(surface->data,
+ surface->linesize * surface->height);
+ } else {
+ data = qemu_malloc(surface->linesize * surface->height);
+ }
+ surface->data = (uint8_t *)data;
+ surface->flags = newflags | QEMU_ALLOCATED_FLAG;
#ifdef HOST_WORDS_BIGENDIAN
- surface->flags = QEMU_ALLOCATED_FLAG | QEMU_BIG_ENDIAN_FLAG;
-#else
- surface->flags = QEMU_ALLOCATED_FLAG;
+ surface->flags |= QEMU_BIG_ENDIAN_FLAG;
#endif
-
- return surface;
}
DisplaySurface* qemu_create_displaysurface_from(int width, int height, int bpp,
diff --git a/console.h b/console.h
index f4e4741..711895e 100644
--- a/console.h
+++ b/console.h
@@ -189,6 +189,8 @@ void register_displaystate(DisplayState *ds);
DisplayState *get_displaystate(void);
DisplaySurface* qemu_create_displaysurface_from(int width, int height, int bpp,
int linesize, uint8_t *data);
+void qemu_alloc_display(DisplaySurface *surface, int width, int height,
+ int linesize, PixelFormat pf, int newflags);
PixelFormat qemu_different_endianness_pixelformat(int bpp);
PixelFormat qemu_default_pixelformat(int bpp);
diff --git a/ui/sdl.c b/ui/sdl.c
index 47ac49c..c5bb0a3 100644
--- a/ui/sdl.c
+++ b/ui/sdl.c
@@ -176,22 +176,18 @@ static DisplaySurface* sdl_create_displaysurface(int width, int height)
surface->width = width;
surface->height = height;
-
+
if (scaling_active) {
+ int linesize;
+ PixelFormat pf;
if (host_format.BytesPerPixel != 2 && host_format.BytesPerPixel != 4) {
- surface->linesize = width * 4;
- surface->pf = qemu_default_pixelformat(32);
+ linesize = width * 4;
+ pf = qemu_default_pixelformat(32);
} else {
- surface->linesize = width * host_format.BytesPerPixel;
- surface->pf = sdl_to_qemu_pixelformat(&host_format);
+ linesize = width * host_format.BytesPerPixel;
+ pf = sdl_to_qemu_pixelformat(&host_format);
}
-#ifdef HOST_WORDS_BIGENDIAN
- surface->flags = QEMU_ALLOCATED_FLAG | QEMU_BIG_ENDIAN_FLAG;
-#else
- surface->flags = QEMU_ALLOCATED_FLAG;
-#endif
- surface->data = (uint8_t*) qemu_mallocz(surface->linesize * surface->height);
-
+ qemu_alloc_display(surface, width, height, linesize, pf, 0);
return surface;
}
--
1.7.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 1/7] Consolidate DisplaySurface allocation in qemu_alloc_display()
2011-03-15 12:36 [Qemu-devel] [PATCH v2 0/7] Introduce -display and make VNC optional Jes.Sorensen
@ 2011-03-15 12:36 ` Jes.Sorensen
0 siblings, 0 replies; 14+ messages in thread
From: Jes.Sorensen @ 2011-03-15 12:36 UTC (permalink / raw)
To: qemu-devel; +Cc: jan.kiszka, peter.maydell
From: Jes Sorensen <Jes.Sorensen@redhat.com>
This removes various code duplication from console.e and sdl.c
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
console.c | 45 +++++++++++++++++++++++++--------------------
console.h | 3 +++
ui/sdl.c | 21 ++++++++-------------
3 files changed, 36 insertions(+), 33 deletions(-)
diff --git a/console.c b/console.c
index 57d6eb5..4939a72 100644
--- a/console.c
+++ b/console.c
@@ -1278,35 +1278,40 @@ static DisplaySurface* defaultallocator_create_displaysurface(int width, int hei
{
DisplaySurface *surface = (DisplaySurface*) qemu_mallocz(sizeof(DisplaySurface));
- surface->width = width;
- surface->height = height;
- surface->linesize = width * 4;
- surface->pf = qemu_default_pixelformat(32);
-#ifdef HOST_WORDS_BIGENDIAN
- surface->flags = QEMU_ALLOCATED_FLAG | QEMU_BIG_ENDIAN_FLAG;
-#else
- surface->flags = QEMU_ALLOCATED_FLAG;
-#endif
- surface->data = (uint8_t*) qemu_mallocz(surface->linesize * surface->height);
-
+ int linesize = width * 4;
+ surface = qemu_alloc_display(surface, width, height, linesize,
+ qemu_default_pixelformat(32), 0);
return surface;
}
static DisplaySurface* defaultallocator_resize_displaysurface(DisplaySurface *surface,
int width, int height)
{
+ int linesize = width * 4;
+ surface = qemu_alloc_display(surface, width, height, linesize,
+ qemu_default_pixelformat(32), 0);
+ return surface;
+}
+
+DisplaySurface*
+qemu_alloc_display(DisplaySurface *surface, int width, int height,
+ int linesize, PixelFormat pf, int newflags)
+{
+ void *data;
surface->width = width;
surface->height = height;
- surface->linesize = width * 4;
- surface->pf = qemu_default_pixelformat(32);
- if (surface->flags & QEMU_ALLOCATED_FLAG)
- surface->data = (uint8_t*) qemu_realloc(surface->data, surface->linesize * surface->height);
- else
- surface->data = (uint8_t*) qemu_malloc(surface->linesize * surface->height);
+ surface->linesize = linesize;
+ surface->pf = pf;
+ if (surface->flags & QEMU_ALLOCATED_FLAG) {
+ data = qemu_realloc(surface->data,
+ surface->linesize * surface->height);
+ } else {
+ data = qemu_malloc(surface->linesize * surface->height);
+ }
+ surface->data = (uint8_t *)data;
+ surface->flags = newflags | QEMU_ALLOCATED_FLAG;
#ifdef HOST_WORDS_BIGENDIAN
- surface->flags = QEMU_ALLOCATED_FLAG | QEMU_BIG_ENDIAN_FLAG;
-#else
- surface->flags = QEMU_ALLOCATED_FLAG;
+ surface->flags |= QEMU_BIG_ENDIAN_FLAG;
#endif
return surface;
diff --git a/console.h b/console.h
index f4e4741..dec9a76 100644
--- a/console.h
+++ b/console.h
@@ -189,6 +189,9 @@ void register_displaystate(DisplayState *ds);
DisplayState *get_displaystate(void);
DisplaySurface* qemu_create_displaysurface_from(int width, int height, int bpp,
int linesize, uint8_t *data);
+DisplaySurface* qemu_alloc_display(DisplaySurface *surface, int width,
+ int height, int linesize,
+ PixelFormat pf, int newflags);
PixelFormat qemu_different_endianness_pixelformat(int bpp);
PixelFormat qemu_default_pixelformat(int bpp);
diff --git a/ui/sdl.c b/ui/sdl.c
index 47ac49c..6c10ea6 100644
--- a/ui/sdl.c
+++ b/ui/sdl.c
@@ -176,23 +176,18 @@ static DisplaySurface* sdl_create_displaysurface(int width, int height)
surface->width = width;
surface->height = height;
-
+
if (scaling_active) {
+ int linesize;
+ PixelFormat pf;
if (host_format.BytesPerPixel != 2 && host_format.BytesPerPixel != 4) {
- surface->linesize = width * 4;
- surface->pf = qemu_default_pixelformat(32);
+ linesize = width * 4;
+ pf = qemu_default_pixelformat(32);
} else {
- surface->linesize = width * host_format.BytesPerPixel;
- surface->pf = sdl_to_qemu_pixelformat(&host_format);
+ linesize = width * host_format.BytesPerPixel;
+ pf = sdl_to_qemu_pixelformat(&host_format);
}
-#ifdef HOST_WORDS_BIGENDIAN
- surface->flags = QEMU_ALLOCATED_FLAG | QEMU_BIG_ENDIAN_FLAG;
-#else
- surface->flags = QEMU_ALLOCATED_FLAG;
-#endif
- surface->data = (uint8_t*) qemu_mallocz(surface->linesize * surface->height);
-
- return surface;
+ return qemu_alloc_display(surface, width, height, linesize, pf, 0);
}
if (host_format.BitsPerPixel == 16)
--
1.7.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
end of thread, other threads:[~2011-06-09 18:31 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 1/7] Consolidate DisplaySurface allocation in qemu_alloc_display() Jes.Sorensen
2011-03-16 12:33 ` [Qemu-devel] [PATCH 2/7] Introduce -display argument Jes.Sorensen
2011-03-16 12:33 ` [Qemu-devel] [PATCH 3/7] Introduce -display none Jes.Sorensen
2011-03-16 12:33 ` [Qemu-devel] [PATCH 4/7] Add support for -display vnc Jes.Sorensen
2011-03-16 12:33 ` [Qemu-devel] [PATCH 5/7] error message if user specifies SDL cmd line option when SDL is disabled Jes.Sorensen
2011-03-16 12:33 ` [Qemu-devel] [PATCH 6/7] error message if user specifies curses on cmd line when curses " Jes.Sorensen
2011-03-16 12:33 ` [Qemu-devel] [PATCH 7/7] Make VNC support optional Jes.Sorensen
2011-06-02 18:59 ` [Qemu-devel] [PATCH] cocoa: Revert dependency on VNC Andreas Färber
2011-06-09 18:31 ` Andreas Färber
2011-03-22 16:28 ` [Qemu-devel] [PATCH v5 0/7] Introduce -display and make VNC optional Anthony Liguori
-- strict thread matches above, loose matches on Subject: below --
2011-03-16 11:00 [Qemu-devel] [PATCH v4 " Jes.Sorensen
2011-03-16 11:00 ` [Qemu-devel] [PATCH 1/7] Consolidate DisplaySurface allocation in qemu_alloc_display() Jes.Sorensen
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 12:36 [Qemu-devel] [PATCH v2 0/7] Introduce -display and make VNC optional Jes.Sorensen
2011-03-15 12:36 ` [Qemu-devel] [PATCH 1/7] Consolidate DisplaySurface allocation in qemu_alloc_display() Jes.Sorensen
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.