Now we are able to move the rest into virDomainGraphicsDefFormatSpice without breaking order of elements in the resulting XML. Signed-off-by: Pavel Hrdina <phrdina@xxxxxxxxxx> --- src/conf/domain_conf.c | 81 ++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 42 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index ad3a44b9b1..34ed62cc99 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -26554,7 +26554,9 @@ virDomainGraphicsDefFormatSpice(virBuffer *attrBuf, virDomainGraphicsDef *def, unsigned int flags) { + g_auto(virBuffer) spiceBuf = VIR_BUFFER_INITIALIZER; virDomainGraphicsListenDef *glisten = virDomainGraphicsGetListen(def, 0); + size_t i; if (!glisten) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -26609,6 +26611,43 @@ virDomainGraphicsDefFormatSpice(virBuffer *attrBuf, virDomainGraphicsDefFormatListnes(childBuf, def, flags); + for (i = 0; i < VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_LAST; i++) { + int mode = def->data.spice.channels[i]; + if (mode == VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_ANY) + continue; + + virBufferAsprintf(&spiceBuf, " name='%s' mode='%s'", + virDomainGraphicsSpiceChannelNameTypeToString(i), + virDomainGraphicsSpiceChannelModeTypeToString(mode)); + + virXMLFormatElement(childBuf, "channel", &spiceBuf, NULL); + } + +#define FORMAT_SPICE_FEATURE(name, attr, value, toStringFunc) \ + if (value) { \ + virBufferAsprintf(&spiceBuf, " " attr "='%s'", toStringFunc(value)); \ + } \ + virXMLFormatElement(childBuf, name, &spiceBuf, NULL); + + FORMAT_SPICE_FEATURE("image", "compression", def->data.spice.image, + virDomainGraphicsSpiceImageCompressionTypeToString); + FORMAT_SPICE_FEATURE("jpeg", "compression", def->data.spice.jpeg, + virDomainGraphicsSpiceJpegCompressionTypeToString); + FORMAT_SPICE_FEATURE("zlib", "compression", def->data.spice.zlib, + virDomainGraphicsSpiceZlibCompressionTypeToString); + FORMAT_SPICE_FEATURE("playback", "compression", def->data.spice.playback, + virTristateSwitchTypeToString); + FORMAT_SPICE_FEATURE("streaming", "mode", def->data.spice.streaming, + virDomainGraphicsSpiceStreamingModeTypeToString); + FORMAT_SPICE_FEATURE("mouse", "mode", def->data.spice.mousemode, + virDomainMouseModeTypeToString); + FORMAT_SPICE_FEATURE("clipboard", "copypaste", def->data.spice.copypaste, + virTristateBoolTypeToString); + FORMAT_SPICE_FEATURE("filetransfer", "enable", def->data.spice.filetransfer, + virTristateBoolTypeToString); + + virDomainGraphicsDefFormatGL(childBuf, def->data.spice.gl, def->data.spice.rendernode); + return 0; } @@ -26645,7 +26684,6 @@ virDomainGraphicsDefFormat(virBuffer *buf, g_auto(virBuffer) attrBuf = VIR_BUFFER_INITIALIZER; g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(buf); const char *type = virDomainGraphicsTypeToString(def->type); - size_t i; if (!type) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -26690,47 +26728,6 @@ virDomainGraphicsDefFormat(virBuffer *buf, break; } - if (def->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE) { - g_auto(virBuffer) spiceBuf = VIR_BUFFER_INITIALIZER; - - for (i = 0; i < VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_LAST; i++) { - int mode = def->data.spice.channels[i]; - if (mode == VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_ANY) - continue; - - virBufferAsprintf(&spiceBuf, " name='%s' mode='%s'", - virDomainGraphicsSpiceChannelNameTypeToString(i), - virDomainGraphicsSpiceChannelModeTypeToString(mode)); - - virXMLFormatElement(&childBuf, "channel", &spiceBuf, NULL); - } - -#define FORMAT_SPICE_FEATURE(name, attr, value, toStringFunc) \ - if (value) { \ - virBufferAsprintf(&spiceBuf, " " attr "='%s'", toStringFunc(value)); \ - } \ - virXMLFormatElement(&childBuf, name, &spiceBuf, NULL); - - FORMAT_SPICE_FEATURE("image", "compression", def->data.spice.image, - virDomainGraphicsSpiceImageCompressionTypeToString); - FORMAT_SPICE_FEATURE("jpeg", "compression", def->data.spice.jpeg, - virDomainGraphicsSpiceJpegCompressionTypeToString); - FORMAT_SPICE_FEATURE("zlib", "compression", def->data.spice.zlib, - virDomainGraphicsSpiceZlibCompressionTypeToString); - FORMAT_SPICE_FEATURE("playback", "compression", def->data.spice.playback, - virTristateSwitchTypeToString); - FORMAT_SPICE_FEATURE("streaming", "mode", def->data.spice.streaming, - virDomainGraphicsSpiceStreamingModeTypeToString); - FORMAT_SPICE_FEATURE("mouse", "mode", def->data.spice.mousemode, - virDomainMouseModeTypeToString); - FORMAT_SPICE_FEATURE("clipboard", "copypaste", def->data.spice.copypaste, - virTristateBoolTypeToString); - FORMAT_SPICE_FEATURE("filetransfer", "enable", def->data.spice.filetransfer, - virTristateBoolTypeToString); - - virDomainGraphicsDefFormatGL(&childBuf, def->data.spice.gl, def->data.spice.rendernode); - } - if (def->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC) virDomainGraphicsDefFormatAudio(&childBuf, def->data.vnc.audioId); -- 2.48.1