qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [COMMIT f92f8af] Eliminate --disable-gfx-check and make V


From: Anthony Liguori
Subject: [Qemu-commits] [COMMIT f92f8af] Eliminate --disable-gfx-check and make VNC defaultwhen SDL not available
Date: Thu, 21 May 2009 13:49:45 -0000

From: Anthony Liguori <address@hidden>

 --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 <address@hidden>

diff --git a/configure b/configure
index 8fdbc1c..186e535 100755
--- a/configure
+++ b/configure
@@ -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}~
diff --git a/console.h b/console.h
index 953b784..4172175 100644
--- a/console.h
+++ b/console.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);
diff --git a/vl.c b/vl.c
index 9f25cd4..e28da7e 100644
--- a/vl.c
+++ b/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);
 
diff --git a/vnc.c b/vnc.c
index ad3c1ce..3f5d622 100644
--- a/vnc.c
+++ b/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;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]