virDomainVideoDefFormat: Use 'virXMLFormatElement' instead of custom formatter

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Peter Krempa
2026-06-18 11:03:36 +02:00
parent 7d4b510bc7
commit b64f4bab65
+37 -42
View File
@@ -27319,6 +27319,9 @@ static void
virDomainVideoAccelDefFormat(virBuffer *buf,
virDomainVideoAccelDef *def)
{
if (!def)
return;
virBufferAddLit(buf, "<acceleration");
if (def->accel3d) {
virBufferAsprintf(buf, " accel3d='%s'",
@@ -27336,6 +27339,9 @@ static void
virDomainVideoResolutionDefFormat(virBuffer *buf,
virDomainVideoResolutionDef *def)
{
if (!def)
return;
virBufferAddLit(buf, "<resolution");
if (def->x && def->y) {
virBufferAsprintf(buf, " x='%u' y='%u'",
@@ -27350,7 +27356,10 @@ virDomainVideoDefFormat(virBuffer *buf,
unsigned int flags)
{
const char *model = virDomainVideoTypeToString(def->type);
g_auto(virBuffer) driverBuf = VIR_BUFFER_INITIALIZER;
g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(buf);
g_auto(virBuffer) driverAttrBuf = VIR_BUFFER_INITIALIZER;
g_auto(virBuffer) modelAttrBuf = VIR_BUFFER_INITIALIZER;
g_auto(virBuffer) modelChildBuf = VIR_BUFFER_INIT_CHILD(&childBuf);
if (!model) {
virReportError(VIR_ERR_INTERNAL_ERROR,
@@ -27358,61 +27367,47 @@ virDomainVideoDefFormat(virBuffer *buf,
return -1;
}
virBufferAddLit(buf, "<video>\n");
virBufferAdjustIndent(buf, 2);
virDomainVirtioOptionsFormat(&driverBuf, def->virtio);
if (virBufferUse(&driverBuf) || (def->driver && def->driver->vgaconf) ||
def->backend != VIR_DOMAIN_VIDEO_BACKEND_TYPE_DEFAULT) {
virBufferAddLit(buf, "<driver");
if (virBufferUse(&driverBuf))
virBufferAddBuffer(buf, &driverBuf);
if (def->driver && def->driver->vgaconf)
virBufferAsprintf(buf, " vgaconf='%s'",
virDomainVideoVGAConfTypeToString(def->driver->vgaconf));
if (def->backend != VIR_DOMAIN_VIDEO_BACKEND_TYPE_DEFAULT)
virBufferAsprintf(buf, " name='%s'",
virDomainVideoBackendTypeToString(def->backend));
virBufferAddLit(buf, "/>\n");
}
virBufferAsprintf(buf, "<model type='%s'",
model);
virDomainVirtioOptionsFormat(&driverAttrBuf, def->virtio);
if (def->driver && def->driver->vgaconf)
virBufferAsprintf(&driverAttrBuf, " vgaconf='%s'",
virDomainVideoVGAConfTypeToString(def->driver->vgaconf));
if (def->backend != VIR_DOMAIN_VIDEO_BACKEND_TYPE_DEFAULT)
virBufferAsprintf(&driverAttrBuf, " name='%s'",
virDomainVideoBackendTypeToString(def->backend));
virXMLFormatElement(&childBuf, "driver", &driverAttrBuf, NULL);
virBufferAsprintf(&modelAttrBuf, " type='%s'", model);
if (def->ram)
virBufferAsprintf(buf, " ram='%u'", def->ram);
virBufferAsprintf(&modelAttrBuf, " ram='%u'", def->ram);
if (def->vram)
virBufferAsprintf(buf, " vram='%u'", def->vram);
virBufferAsprintf(&modelAttrBuf, " vram='%u'", def->vram);
if (def->vram64)
virBufferAsprintf(buf, " vram64='%u'", def->vram64);
virBufferAsprintf(&modelAttrBuf, " vram64='%u'", def->vram64);
if (def->vgamem)
virBufferAsprintf(buf, " vgamem='%u'", def->vgamem);
virBufferAsprintf(&modelAttrBuf, " vgamem='%u'", def->vgamem);
if (def->heads)
virBufferAsprintf(buf, " heads='%u'", def->heads);
virBufferAsprintf(&modelAttrBuf, " heads='%u'", def->heads);
if (def->primary)
virBufferAddLit(buf, " primary='yes'");
virBufferAddLit(&modelAttrBuf, " primary='yes'");
if (def->blob != VIR_TRISTATE_SWITCH_ABSENT)
virBufferAsprintf(buf, " blob='%s'", virTristateSwitchTypeToString(def->blob));
virBufferAsprintf(&modelAttrBuf, " blob='%s'", virTristateSwitchTypeToString(def->blob));
if (def->edid != VIR_TRISTATE_SWITCH_ABSENT)
virBufferAsprintf(buf, " edid='%s'", virTristateSwitchTypeToString(def->edid));
if (def->accel || def->res) {
virBufferAddLit(buf, ">\n");
virBufferAdjustIndent(buf, 2);
if (def->accel)
virDomainVideoAccelDefFormat(buf, def->accel);
if (def->res)
virDomainVideoResolutionDefFormat(buf, def->res);
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</model>\n");
} else {
virBufferAddLit(buf, "/>\n");
}
virBufferAsprintf(&modelAttrBuf, " edid='%s'", virTristateSwitchTypeToString(def->edid));
virDomainDeviceInfoFormat(buf, &def->info, flags);
virDomainVideoAccelDefFormat(&modelChildBuf, def->accel);
virDomainVideoResolutionDefFormat(&modelChildBuf, def->res);
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</video>\n");
virXMLFormatElement(&childBuf, "model", &modelAttrBuf, &modelChildBuf);
virDomainDeviceInfoFormat(&childBuf, &def->info, flags);
virXMLFormatElement(buf, "video", NULL, &childBuf);
return 0;
}
static int
virDomainInputDefFormat(virBuffer *buf,
virDomainInputDef *def,