mirror of
https://github.com/libvirt/libvirt.git
synced 2026-08-05 18:56:51 -05:00
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:
+37
-42
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user