/* vnc.c */
void vnc_display_init(DisplayState *ds);
void vnc_display_close(DisplayState *ds);
-int vnc_display_open(DisplayState *ds, const char *display);
+int vnc_display_open(DisplayState *ds, const char *display, int find_unused);
int vnc_display_password(DisplayState *ds, const char *password);
void do_info_vnc(void);
if (vnc_display_password(NULL, password) < 0)
term_printf("could not set VNC server password\n");
} else {
- if (vnc_display_open(NULL, target) < 0)
+ if (vnc_display_open(NULL, target, 0) < 0)
term_printf("could not start VNC server on %s\n", target);
}
}
static VLANState *first_vlan;
int smp_cpus = 1;
const char *vnc_display;
+int vncunused;
#if defined(TARGET_SPARC)
#define MAX_CPUS 16
#elif defined(TARGET_I386)
if (ioh->fd == fd) {
ioh->deleted = 1;
break;
+ case QEMU_OPTION_vncunused:
+ vncunused++;
+ if (vnc_display == -1)
+ vnc_display = -2;
+ break;
}
pioh = &ioh->next;
}
"-no-shutdown stop before shutdown\n"
"-loadvm [tag|id] start right away with a saved state (loadvm in monitor)\n"
"-vnc display start a VNC server on display\n"
+ "-vncunused bind the VNC server to an unused port\n"
#ifndef _WIN32
"-daemonize daemonize QEMU after initializing\n"
#endif
QEMU_OPTION_usbdevice,
QEMU_OPTION_smp,
QEMU_OPTION_vnc,
+ QEMU_OPTION_vncunused,
QEMU_OPTION_no_acpi,
QEMU_OPTION_curses,
QEMU_OPTION_no_reboot,
{ "usbdevice", HAS_ARG, QEMU_OPTION_usbdevice },
{ "smp", HAS_ARG, QEMU_OPTION_smp },
{ "vnc", HAS_ARG, QEMU_OPTION_vnc },
+ { "vncunused", 0, QEMU_OPTION_vncunused },
#ifdef CONFIG_CURSES
{ "curses", 0, QEMU_OPTION_curses },
#endif
dumb_display_init(ds);
} else if (vnc_display != NULL) {
vnc_display_init(ds);
- if (vnc_display_open(ds, vnc_display) < 0)
+ vnc_display = vnc_display_open(ds, vnc_display, vncunused);
+ if (vnc_display < 0)
exit(1);
} else
#if defined(CONFIG_CURSES)