[libvirt] [PATCH 2/2] support for multiple graphics devices
Daniel P. Berrange
berrange at redhat.com
Thu Apr 30 11:13:06 UTC 2009
On Thu, Apr 30, 2009 at 11:28:31AM +0200, Pritesh Kothari wrote:
> Hi All,
>
> I have added support for multiple graphics devices, the patches are as below.
> I have checked them against current cvs head and works fine
ACK, also looks fine.
> diff --git a/src/qemu_conf.c b/src/qemu_conf.c
> index 64415ec..07c7c44 100644
> --- a/src/qemu_conf.c
> +++ b/src/qemu_conf.c
> @@ -1348,21 +1348,21 @@ int qemudBuildCommandLine(virConnectPtr conn,
> }
> }
>
> - if (def->graphics &&
> - def->graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC) {
> + if ((def->ngraphics == 1) &&
> + def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC) {
> virBuffer opt = VIR_BUFFER_INITIALIZER;
> char *optstr;
>
> if (qemuCmdFlags & QEMUD_CMD_FLAG_VNC_COLON) {
> - if (def->graphics->data.vnc.listenAddr)
> - virBufferAdd(&opt, def->graphics->data.vnc.listenAddr, -1);
> + if (def->graphics[0]->data.vnc.listenAddr)
> + virBufferAdd(&opt, def->graphics[0]->data.vnc.listenAddr, -1);
> else if (driver->vncListen)
> virBufferAdd(&opt, driver->vncListen, -1);
>
> virBufferVSprintf(&opt, ":%d",
> - def->graphics->data.vnc.port - 5900);
> + def->graphics[0]->data.vnc.port - 5900);
>
> - if (def->graphics->data.vnc.passwd ||
> + if (def->graphics[0]->data.vnc.passwd ||
> driver->vncPassword)
> virBufferAddLit(&opt, ",password");
>
> @@ -1387,7 +1387,7 @@ int qemudBuildCommandLine(virConnectPtr conn,
> }
> } else {
> virBufferVSprintf(&opt, "%d",
> - def->graphics->data.vnc.port - 5900);
> + def->graphics[0]->data.vnc.port - 5900);
> }
> if (virBufferError(&opt))
> goto no_memory;
> @@ -1396,22 +1396,22 @@ int qemudBuildCommandLine(virConnectPtr conn,
>
> ADD_ARG_LIT("-vnc");
> ADD_ARG(optstr);
> - if (def->graphics->data.vnc.keymap) {
> + if (def->graphics[0]->data.vnc.keymap) {
> ADD_ARG_LIT("-k");
> - ADD_ARG_LIT(def->graphics->data.vnc.keymap);
> + ADD_ARG_LIT(def->graphics[0]->data.vnc.keymap);
> }
> - } else if (def->graphics &&
> - def->graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL) {
> + } else if ((def->ngraphics == 1) &&
> + def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL) {
> char *xauth = NULL;
> char *display = NULL;
>
> - if (def->graphics->data.sdl.xauth &&
> + if (def->graphics[0]->data.sdl.xauth &&
> virAsprintf(&xauth, "XAUTHORITY=%s",
> - def->graphics->data.sdl.xauth) < 0)
> + def->graphics[0]->data.sdl.xauth) < 0)
> goto no_memory;
> - if (def->graphics->data.sdl.display &&
> + if (def->graphics[0]->data.sdl.display &&
> virAsprintf(&display, "DISPLAY=%s",
> - def->graphics->data.sdl.display) < 0) {
> + def->graphics[0]->data.sdl.display) < 0) {
> VIR_FREE(xauth);
> goto no_memory;
> }
> @@ -1420,7 +1420,7 @@ int qemudBuildCommandLine(virConnectPtr conn,
> ADD_ENV(xauth);
> if (display)
> ADD_ENV(display);
> - if (def->graphics->data.sdl.fullscreen)
> + if (def->graphics[0]->data.sdl.fullscreen)
> ADD_ARG_LIT("-full-screen");
> }
>
> diff --git a/src/qemu_driver.c b/src/qemu_driver.c
> index f9fe2ba..1da4a61 100644
> --- a/src/qemu_driver.c
> +++ b/src/qemu_driver.c
> @@ -1140,13 +1140,13 @@ qemudInitPasswords(virConnectPtr conn,
> * for that yet...
> */
>
> - if (vm->def->graphics &&
> - vm->def->graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC &&
> - (vm->def->graphics->data.vnc.passwd || driver->vncPassword)) {
> + if ((vm->def->ngraphics == 1) &&
> + vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC &&
> + (vm->def->graphics[0]->data.vnc.passwd || driver->vncPassword)) {
>
> if (qemudMonitorCommandExtra(vm, "change vnc password",
> - vm->def->graphics->data.vnc.passwd ?
> - vm->def->graphics->data.vnc.passwd :
> + vm->def->graphics[0]->data.vnc.passwd ?
> + vm->def->graphics[0]->data.vnc.passwd :
> driver->vncPassword,
> QEMU_PASSWD_PROMPT,
> &info) < 0) {
> @@ -1338,16 +1338,16 @@ static int qemudStartVMDaemon(virConnectPtr conn,
> driver->securityDriver->domainGenSecurityLabel(conn, vm) < 0)
> return -1;
>
> - if (vm->def->graphics &&
> - vm->def->graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC &&
> - vm->def->graphics->data.vnc.autoport) {
> + if ((vm->def->ngraphics == 1) &&
> + vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC &&
> + vm->def->graphics[0]->data.vnc.autoport) {
> int port = qemudNextFreeVNCPort(driver);
> if (port < 0) {
> qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
> "%s", _("Unable to find an unused VNC port"));
> goto cleanup;
> }
> - vm->def->graphics->data.vnc.port = port;
> + vm->def->graphics[0]->data.vnc.port = port;
> }
>
> if (virFileMakePath(driver->logDir) < 0) {
> @@ -1504,10 +1504,10 @@ cleanup:
> VIR_FREE(vm->def->seclabel.label);
> VIR_FREE(vm->def->seclabel.imagelabel);
> }
> - if (vm->def->graphics &&
> - vm->def->graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC &&
> - vm->def->graphics->data.vnc.autoport)
> - vm->def->graphics->data.vnc.port = -1;
> + if ((vm->def->ngraphics == 1) &&
> + vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC &&
> + vm->def->graphics[0]->data.vnc.autoport)
> + vm->def->graphics[0]->data.vnc.port = -1;
> if (vm->logfile != -1) {
> close(vm->logfile);
> vm->logfile = -1;
> --
> Libvir-list mailing list
> Libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list