Commit f92f8afebe038a4eae9ad90a140c9529f94919a6
1 parent
eb0b64f7
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>
Showing
4 changed files
with
36 additions
and
33 deletions
configure
... | ... | @@ -172,7 +172,6 @@ solaris="no" |
172 | 172 | kqemu="no" |
173 | 173 | profiler="no" |
174 | 174 | cocoa="no" |
175 | -check_gfx="yes" | |
176 | 175 | softmmu="yes" |
177 | 176 | linux_user="no" |
178 | 177 | darwin_user="no" |
... | ... | @@ -191,6 +190,7 @@ kerneldir="" |
191 | 190 | aix="no" |
192 | 191 | blobs="yes" |
193 | 192 | fdt="yes" |
193 | +sdl="yes" | |
194 | 194 | sdl_x11="no" |
195 | 195 | xen="yes" |
196 | 196 | pkgversion="" |
... | ... | @@ -438,8 +438,6 @@ for opt do |
438 | 438 | sdl="no" ; |
439 | 439 | audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`" |
440 | 440 | ;; |
441 | - --disable-gfx-check) check_gfx="no" | |
442 | - ;; | |
443 | 441 | --disable-system) softmmu="no" |
444 | 442 | ;; |
445 | 443 | --enable-system) softmmu="yes" |
... | ... | @@ -835,7 +833,7 @@ fi |
835 | 833 | |
836 | 834 | sdl_too_old=no |
837 | 835 | |
838 | -if test -z "$sdl" ; then | |
836 | +if test "$sdl" = "yes" ; then | |
839 | 837 | sdl_config="sdl-config" |
840 | 838 | sdl=no |
841 | 839 | sdl_static=no |
... | ... | @@ -1346,10 +1344,6 @@ echo "preadv support $preadv" |
1346 | 1344 | if test $sdl_too_old = "yes"; then |
1347 | 1345 | echo "-> Your SDL version is too old - please upgrade to have SDL support" |
1348 | 1346 | fi |
1349 | -if [ -s $TMPSDLLOG ]; then | |
1350 | - echo "The error log from compiling the libSDL test is: " | |
1351 | - cat $TMPSDLLOG | |
1352 | -fi | |
1353 | 1347 | #if test "$sdl_static" = "no"; then |
1354 | 1348 | # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output" |
1355 | 1349 | #fi |
... | ... | @@ -1772,15 +1766,6 @@ case "$target" in |
1772 | 1766 | ;; |
1773 | 1767 | esac |
1774 | 1768 | |
1775 | -if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \ | |
1776 | - -a "$sdl" = "no" -a "$cocoa" = "no" ; then | |
1777 | - echo "ERROR: QEMU requires SDL or Cocoa for graphical output" | |
1778 | - echo "To build QEMU without graphical output configure with --disable-gfx-check" | |
1779 | - echo "Note that this will disable all output from the virtual graphics card" | |
1780 | - echo "except through VNC or curses." | |
1781 | - exit 1; | |
1782 | -fi | |
1783 | - | |
1784 | 1769 | #echo "Creating $config_mak, $config_h and $target_dir/Makefile" |
1785 | 1770 | |
1786 | 1771 | test -f $config_h && mv $config_h ${config_h}~ | ... | ... |
console.h
... | ... | @@ -320,6 +320,7 @@ void vnc_display_close(DisplayState *ds); |
320 | 320 | int vnc_display_open(DisplayState *ds, const char *display); |
321 | 321 | int vnc_display_password(DisplayState *ds, const char *password); |
322 | 322 | void do_info_vnc(Monitor *mon); |
323 | +char *vnc_display_local_addr(DisplayState *ds); | |
323 | 324 | |
324 | 325 | /* curses.c */ |
325 | 326 | void curses_display_init(DisplayState *ds, int full_screen); | ... | ... |
vl.c
... | ... | @@ -203,7 +203,7 @@ enum vga_retrace_method vga_retrace_method = VGA_RETRACE_DUMB; |
203 | 203 | static DisplayState *display_state; |
204 | 204 | int nographic; |
205 | 205 | static int curses; |
206 | -static int sdl; | |
206 | +static int sdl = 1; | |
207 | 207 | const char* keyboard_layout = NULL; |
208 | 208 | int64_t ticks_per_sec; |
209 | 209 | ram_addr_t ram_size; |
... | ... | @@ -5952,25 +5952,36 @@ int main(int argc, char **argv, char **envp) |
5952 | 5952 | } |
5953 | 5953 | } else { |
5954 | 5954 | #if defined(CONFIG_CURSES) |
5955 | - if (curses) { | |
5956 | - /* At the moment curses cannot be used with other displays */ | |
5957 | - curses_display_init(ds, full_screen); | |
5958 | - } else | |
5955 | + if (curses) { | |
5956 | + /* At the moment curses cannot be used with other displays */ | |
5957 | + curses_display_init(ds, full_screen); | |
5958 | + } else | |
5959 | 5959 | #endif |
5960 | - { | |
5961 | - if (vnc_display != NULL) { | |
5962 | - vnc_display_init(ds); | |
5963 | - if (vnc_display_open(ds, vnc_display) < 0) | |
5964 | - exit(1); | |
5965 | - } | |
5960 | +#if defined(CONFIG_SDL) || defined(CONFIG_COCOA) | |
5961 | + if (sdl) { | |
5966 | 5962 | #if defined(CONFIG_SDL) |
5967 | - if (sdl || !vnc_display) | |
5968 | - sdl_display_init(ds, full_screen, no_frame); | |
5963 | + sdl_display_init(ds, full_screen, no_frame); | |
5969 | 5964 | #elif defined(CONFIG_COCOA) |
5970 | - if (sdl || !vnc_display) | |
5971 | - cocoa_display_init(ds, full_screen); | |
5965 | + cocoa_display_init(ds, full_screen); | |
5966 | +#endif | |
5967 | + } else | |
5972 | 5968 | #endif |
5969 | + { | |
5970 | + int print_port = 0; | |
5971 | + | |
5972 | + if (vnc_display == NULL) { | |
5973 | + vnc_display = "localhost:0,to=99"; | |
5974 | + print_port = 1; | |
5973 | 5975 | } |
5976 | + | |
5977 | + vnc_display_init(ds); | |
5978 | + if (vnc_display_open(ds, vnc_display) < 0) | |
5979 | + exit(1); | |
5980 | + | |
5981 | + if (print_port) { | |
5982 | + printf("VNC server running on `%s'\n", vnc_display_local_addr(ds)); | |
5983 | + } | |
5984 | + } | |
5974 | 5985 | } |
5975 | 5986 | dpy_resize(ds); |
5976 | 5987 | ... | ... |
vnc.c
... | ... | @@ -86,7 +86,6 @@ char *vnc_socket_local_addr(const char *format, int fd) { |
86 | 86 | return addr_to_string(format, &sa, salen); |
87 | 87 | } |
88 | 88 | |
89 | - | |
90 | 89 | char *vnc_socket_remote_addr(const char *format, int fd) { |
91 | 90 | struct sockaddr_storage sa; |
92 | 91 | socklen_t salen; |
... | ... | @@ -2101,6 +2100,13 @@ int vnc_display_password(DisplayState *ds, const char *password) |
2101 | 2100 | return 0; |
2102 | 2101 | } |
2103 | 2102 | |
2103 | +char *vnc_display_local_addr(DisplayState *ds) | |
2104 | +{ | |
2105 | + VncDisplay *vs = ds ? (VncDisplay *)ds->opaque : vnc_display; | |
2106 | + | |
2107 | + return vnc_socket_local_addr("%s:%s", vs->lsock); | |
2108 | +} | |
2109 | + | |
2104 | 2110 | int vnc_display_open(DisplayState *ds, const char *display) |
2105 | 2111 | { |
2106 | 2112 | VncDisplay *vs = ds ? (VncDisplay *)ds->opaque : vnc_display; | ... | ... |