mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +00:00
conf: move default video addition after XML parsing
Separate parsing of the XML from auto-generating the device.
(cherry picked from commit 6879be484c
)
This commit is contained in:
parent
4dacbcf2e4
commit
c273d72de6
@ -16374,28 +16374,6 @@ virDomainDefParseXML(xmlDocPtr xml,
|
||||
|
||||
VIR_FREE(nodes);
|
||||
|
||||
/* For backwards compatibility, if no <video> tag is set but there
|
||||
* is a <graphics> tag, then we add a single video tag */
|
||||
if (def->ngraphics && !def->nvideos) {
|
||||
virDomainVideoDefPtr video;
|
||||
if (VIR_ALLOC(video) < 0)
|
||||
goto error;
|
||||
video->type = virDomainVideoDefaultType(def);
|
||||
if (video->type < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("cannot determine default video type"));
|
||||
VIR_FREE(video);
|
||||
goto error;
|
||||
}
|
||||
video->vram = virDomainVideoDefaultRAM(def, video->type);
|
||||
video->heads = 1;
|
||||
if (VIR_ALLOC_N(def->videos, 1) < 0) {
|
||||
virDomainVideoDefFree(video);
|
||||
goto error;
|
||||
}
|
||||
def->videos[def->nvideos++] = video;
|
||||
}
|
||||
|
||||
/* analysis of the host devices */
|
||||
if ((n = virXPathNodeSet("./devices/hostdev", ctxt, &nodes)) < 0)
|
||||
goto error;
|
||||
@ -18592,6 +18570,37 @@ virDomainDefAddImplicitControllers(virDomainDefPtr def)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
virDomainDefAddImplicitVideo(virDomainDefPtr def)
|
||||
{
|
||||
int ret = -1;
|
||||
virDomainVideoDefPtr video = NULL;
|
||||
|
||||
/* For backwards compatibility, if no <video> tag is set but there
|
||||
* is a <graphics> tag, then we add a single video tag */
|
||||
if (def->ngraphics && !def->nvideos) {
|
||||
if (VIR_ALLOC(video) < 0)
|
||||
goto cleanup;
|
||||
video->type = virDomainVideoDefaultType(def);
|
||||
if (video->type < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("cannot determine default video type"));
|
||||
goto cleanup;
|
||||
}
|
||||
video->vram = virDomainVideoDefaultRAM(def, video->type);
|
||||
video->heads = 1;
|
||||
if (VIR_ALLOC_N(def->videos, 1) < 0)
|
||||
goto cleanup;
|
||||
def->videos[def->nvideos++] = video;
|
||||
video = NULL;
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
cleanup:
|
||||
virDomainVideoDefFree(video);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
virDomainDefAddImplicitDevices(virDomainDefPtr def)
|
||||
{
|
||||
@ -18601,6 +18610,9 @@ virDomainDefAddImplicitDevices(virDomainDefPtr def)
|
||||
if (virDomainDefAddImplicitControllers(def) < 0)
|
||||
return -1;
|
||||
|
||||
if (virDomainDefAddImplicitVideo(def) < 0)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user