[libvirt] [PATCH 1/2] support for multiple graphics devices
Daniel P. Berrange
berrange at redhat.com
Thu Apr 30 11:12:24 UTC 2009
On Thu, Apr 30, 2009 at 11:28:30AM +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, this patch loooks good.
Daniel
> diff --git a/src/domain_conf.c b/src/domain_conf.c
> index bb134c0..424fd9c 100644
> --- a/src/domain_conf.c
> +++ b/src/domain_conf.c
> @@ -409,7 +409,9 @@ void virDomainDefFree(virDomainDefPtr def)
> if (!def)
> return;
>
> - virDomainGraphicsDefFree(def->graphics);
> + for (i = 0 ; i < def->ngraphics ; i++)
> + virDomainGraphicsDefFree(def->graphics[i]);
> + VIR_FREE(def->graphics);
>
> for (i = 0 ; i < def->ninputs ; i++)
> virDomainInputDefFree(def->inputs[i]);
> @@ -2427,19 +2429,21 @@ static virDomainDefPtr virDomainDefParseXML(virConnectPtr conn,
> "%s", _("cannot extract graphics devices"));
> goto error;
> }
> - if (n > 0) {
> + if (n && VIR_ALLOC_N(def->graphics, n) < 0)
> + goto no_memory;
> + for (i = 0 ; i < n ; i++) {
> virDomainGraphicsDefPtr graphics = virDomainGraphicsDefParseXML(conn,
> - nodes[0],
> + nodes[i],
> flags);
> if (!graphics)
> goto error;
>
> - def->graphics = graphics;
> + def->graphics[def->ngraphics++] = graphics;
> }
> VIR_FREE(nodes);
>
> /* If graphics are enabled, there's an implicit PS2 mouse */
> - if (def->graphics != NULL) {
> + if (def->ngraphics > 0) {
> virDomainInputDefPtr input;
>
> if (VIR_ALLOC(input) < 0) {
> @@ -3512,7 +3516,7 @@ char *virDomainDefFormat(virConnectPtr conn,
> virDomainInputDefFormat(conn, &buf, def->inputs[n]) < 0)
> goto cleanup;
>
> - if (def->graphics) {
> + if (def->ngraphics > 0) {
> /* If graphics is enabled, add the implicit mouse */
> virDomainInputDef autoInput = {
> VIR_DOMAIN_INPUT_TYPE_MOUSE,
> @@ -3523,8 +3527,9 @@ char *virDomainDefFormat(virConnectPtr conn,
> if (virDomainInputDefFormat(conn, &buf, &autoInput) < 0)
> goto cleanup;
>
> - if (virDomainGraphicsDefFormat(conn, &buf, def, def->graphics, flags) < 0)
> - goto cleanup;
> + for (n = 0 ; n < def->ngraphics ; n++)
> + if (virDomainGraphicsDefFormat(conn, &buf, def, def->graphics[n], flags) < 0)
> + goto cleanup;
> }
>
> for (n = 0 ; n < def->nsounds ; n++)
> diff --git a/src/domain_conf.h b/src/domain_conf.h
> index 5fbc395..e64dcb4 100644
> --- a/src/domain_conf.h
> +++ b/src/domain_conf.h
> @@ -457,8 +457,8 @@ struct _virDomainDef {
>
> int localtime;
>
> - /* Only 1 */
> - virDomainGraphicsDefPtr graphics;
> + int ngraphics;
> + virDomainGraphicsDefPtr *graphics;
>
> int ndisks;
> virDomainDiskDefPtr *disks;
> --
> 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