all sub item of spice graphics need to processed like spice channels, that is adding the following lines:
the following patch is generated base on git master.
-----------------------------------------------------------------------------------------
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index b30acc8..e42db06 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -8127,21 +8127,46 @@ virDomainGraphicsDefFormat(virBufferPtr buf,
virDomainGraphicsSpiceChannelNameTypeToString(i),
virDomainGraphicsSpiceChannelModeTypeToString(mode));
}
- if (def->data.spice.image)
+ if (def->data.spice.image) {
virBufferAsprintf(buf, " <image compression='%s'/>\n",
virDomainGraphicsSpiceImageCompressionTypeToString(def->data.spice.image));
- if (def->data.spice.jpeg)
+ if (!children) {
+ virBufferAddLit(buf, ">\n");
+ children = 1;
+ }
+ }
+ if (def->data.spice.jpeg) {
virBufferAsprintf(buf, " <jpeg compression='%s'/>\n",
virDomainGraphicsSpiceJpegCompressionTypeToString(def->data.spice.jpeg));
- if (def->data.spice.zlib)
+ if (!children) {
+ virBufferAddLit(buf, ">\n");
+ children = 1;
+ }
+ }
+ if (def->data.spice.zlib) {
virBufferAsprintf(buf, " <zlib compression='%s'/>\n",
virDomainGraphicsSpiceZlibCompressionTypeToString(def->data.spice.zlib));
- if (def->data.spice.playback)
+ if (!children) {
+ virBufferAddLit(buf, ">\n");
+ children = 1;
+ }
+ }
+ if (def->data.spice.playback) {
virBufferAsprintf(buf, " <playback compression='%s'/>\n",
virDomainGraphicsSpicePlaybackCompressionTypeToString(def->data.spice.playback));
- if (def->data.spice.streaming)
+ if (!children) {
+ virBufferAddLit(buf, ">\n");
+ children = 1;
+ }
+ }
+ if (def->data.spice.streaming) {
virBufferAsprintf(buf, " <streaming mode='%s'/>\n",
virDomainGraphicsSpiceStreamingModeTypeToString(def->data.spice.streaming));
+ if (!children) {
+ virBufferAddLit(buf, ">\n");
+ children = 1;
+ }
+ }
}
if (children) {