Eliminate --disable-gfx-check and make VNC default when SDL not available
--disable-gfx-check predates VNC server support. It made sense back then because the only thing you could do without SDL was use -nographic mode or similar tricks. Since this is a very advanced mode of operation, gfx-check provided a good safety net for casual users. A casual user is very likely to use VNC to interact with a guest. In fact, it's often frustrating to install QEMU on a server and have to specify disable-gfx-check when you only want to use VNC. This patch eliminates disable-gfx-check and makes SDL behave like every other optional dependency. If SDL is not available, instead of failing ungracefully if no special options are specified, we default to -vnc localhost:0,to=99. When we do default to VNC, we also print a message to tell the user that we've done this include which port we're currently listening on. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
eb0b64f7aa
commit
f92f8afebe
19
configure
vendored
19
configure
vendored
@ -172,7 +172,6 @@ solaris="no"
|
||||
kqemu="no"
|
||||
profiler="no"
|
||||
cocoa="no"
|
||||
check_gfx="yes"
|
||||
softmmu="yes"
|
||||
linux_user="no"
|
||||
darwin_user="no"
|
||||
@ -191,6 +190,7 @@ kerneldir=""
|
||||
aix="no"
|
||||
blobs="yes"
|
||||
fdt="yes"
|
||||
sdl="yes"
|
||||
sdl_x11="no"
|
||||
xen="yes"
|
||||
pkgversion=""
|
||||
@ -438,8 +438,6 @@ for opt do
|
||||
sdl="no" ;
|
||||
audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
|
||||
;;
|
||||
--disable-gfx-check) check_gfx="no"
|
||||
;;
|
||||
--disable-system) softmmu="no"
|
||||
;;
|
||||
--enable-system) softmmu="yes"
|
||||
@ -835,7 +833,7 @@ fi
|
||||
|
||||
sdl_too_old=no
|
||||
|
||||
if test -z "$sdl" ; then
|
||||
if test "$sdl" = "yes" ; then
|
||||
sdl_config="sdl-config"
|
||||
sdl=no
|
||||
sdl_static=no
|
||||
@ -1346,10 +1344,6 @@ echo "preadv support $preadv"
|
||||
if test $sdl_too_old = "yes"; then
|
||||
echo "-> Your SDL version is too old - please upgrade to have SDL support"
|
||||
fi
|
||||
if [ -s $TMPSDLLOG ]; then
|
||||
echo "The error log from compiling the libSDL test is: "
|
||||
cat $TMPSDLLOG
|
||||
fi
|
||||
#if test "$sdl_static" = "no"; then
|
||||
# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
|
||||
#fi
|
||||
@ -1772,15 +1766,6 @@ case "$target" in
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
|
||||
-a "$sdl" = "no" -a "$cocoa" = "no" ; then
|
||||
echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
|
||||
echo "To build QEMU without graphical output configure with --disable-gfx-check"
|
||||
echo "Note that this will disable all output from the virtual graphics card"
|
||||
echo "except through VNC or curses."
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
|
||||
|
||||
test -f $config_h && mv $config_h ${config_h}~
|
||||
|
@ -320,6 +320,7 @@ void vnc_display_close(DisplayState *ds);
|
||||
int vnc_display_open(DisplayState *ds, const char *display);
|
||||
int vnc_display_password(DisplayState *ds, const char *password);
|
||||
void do_info_vnc(Monitor *mon);
|
||||
char *vnc_display_local_addr(DisplayState *ds);
|
||||
|
||||
/* curses.c */
|
||||
void curses_display_init(DisplayState *ds, int full_screen);
|
||||
|
41
vl.c
41
vl.c
@ -203,7 +203,7 @@ enum vga_retrace_method vga_retrace_method = VGA_RETRACE_DUMB;
|
||||
static DisplayState *display_state;
|
||||
int nographic;
|
||||
static int curses;
|
||||
static int sdl;
|
||||
static int sdl = 1;
|
||||
const char* keyboard_layout = NULL;
|
||||
int64_t ticks_per_sec;
|
||||
ram_addr_t ram_size;
|
||||
@ -5952,25 +5952,36 @@ int main(int argc, char **argv, char **envp)
|
||||
}
|
||||
} else {
|
||||
#if defined(CONFIG_CURSES)
|
||||
if (curses) {
|
||||
/* At the moment curses cannot be used with other displays */
|
||||
curses_display_init(ds, full_screen);
|
||||
} else
|
||||
if (curses) {
|
||||
/* At the moment curses cannot be used with other displays */
|
||||
curses_display_init(ds, full_screen);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
if (vnc_display != NULL) {
|
||||
vnc_display_init(ds);
|
||||
if (vnc_display_open(ds, vnc_display) < 0)
|
||||
exit(1);
|
||||
}
|
||||
#if defined(CONFIG_SDL) || defined(CONFIG_COCOA)
|
||||
if (sdl) {
|
||||
#if defined(CONFIG_SDL)
|
||||
if (sdl || !vnc_display)
|
||||
sdl_display_init(ds, full_screen, no_frame);
|
||||
sdl_display_init(ds, full_screen, no_frame);
|
||||
#elif defined(CONFIG_COCOA)
|
||||
if (sdl || !vnc_display)
|
||||
cocoa_display_init(ds, full_screen);
|
||||
cocoa_display_init(ds, full_screen);
|
||||
#endif
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
int print_port = 0;
|
||||
|
||||
if (vnc_display == NULL) {
|
||||
vnc_display = "localhost:0,to=99";
|
||||
print_port = 1;
|
||||
}
|
||||
|
||||
vnc_display_init(ds);
|
||||
if (vnc_display_open(ds, vnc_display) < 0)
|
||||
exit(1);
|
||||
|
||||
if (print_port) {
|
||||
printf("VNC server running on `%s'\n", vnc_display_local_addr(ds));
|
||||
}
|
||||
}
|
||||
}
|
||||
dpy_resize(ds);
|
||||
|
||||
|
8
vnc.c
8
vnc.c
@ -86,7 +86,6 @@ char *vnc_socket_local_addr(const char *format, int fd) {
|
||||
return addr_to_string(format, &sa, salen);
|
||||
}
|
||||
|
||||
|
||||
char *vnc_socket_remote_addr(const char *format, int fd) {
|
||||
struct sockaddr_storage sa;
|
||||
socklen_t salen;
|
||||
@ -2101,6 +2100,13 @@ int vnc_display_password(DisplayState *ds, const char *password)
|
||||
return 0;
|
||||
}
|
||||
|
||||
char *vnc_display_local_addr(DisplayState *ds)
|
||||
{
|
||||
VncDisplay *vs = ds ? (VncDisplay *)ds->opaque : vnc_display;
|
||||
|
||||
return vnc_socket_local_addr("%s:%s", vs->lsock);
|
||||
}
|
||||
|
||||
int vnc_display_open(DisplayState *ds, const char *display)
|
||||
{
|
||||
VncDisplay *vs = ds ? (VncDisplay *)ds->opaque : vnc_display;
|
||||
|
Loading…
Reference in New Issue
Block a user