<div dir="ltr">2015-05-09 0:00 GMT+02:00 Jim Fehlig <span dir="ltr"><<a href="mailto:jfehlig@suse.com" target="_blank">jfehlig@suse.com</a>></span>:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">From xl.cfg950 man page:<br>
<br>
spiceagent_mouse=BOOLEAN<br>
Whether SPICE agent is used for client mouse mode. The default is<br>
true (1) (turn on)<br>
<br>
spicevdagent=BOOLEAN<br>
Enables spice vdagent. The Spice vdagent is an optional component for<br>
enhancing user experience and performing guest-oriented management<br>
tasks. Its features includes: client mouse mode (no need to grab<br>
mouse by client, no mouse lag), automatic adjustment of screen<br>
resolution, copy and paste (text and image) between client and domU.<br>
It also requires vdagent service installed on domU o.s. to work.<br>
The default is 0.<br>
<br>
spice_clipboard_sharing=BOOLEAN<br>
Enables Spice clipboard sharing (copy/paste). It requires spicevdagent<br>
enabled. The default is false (0).<br>
<br>
So if spiceagent_mouse is enabled (client mouse mode) or<br>
spice_clipboard_sharing is enabled, spicevdagent must be enabled.<br>
Along with this change, s/spicedvagent/spicevdagent, set<br>
spiceagent_mouse correctly, and add a test for these spice<br>
features.<br></blockquote><div><br></div><div>Thanks for your work in libvirt about improve/fix support for xen with spice.<br></div><div>From a fast look to code seems there is spice usbredirection support missed, a feature that I think very useful:<br><a href="http://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=f5414ee57a17500e650ea11766474b11da940da2">http://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=f5414ee57a17500e650ea11766474b11da940da2</a><br></div><div>There are also other spice settings added for xen 4.6 (image compression and streaming video):<br><a href="http://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=bd71555985efc423b1a119b6a3177de855763453">http://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=bd71555985efc423b1a119b6a3177de855763453</a><br><a href="http://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=296c7f3284efe655d95a8ae045a5dc1a20d6fff0">http://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=296c7f3284efe655d95a8ae045a5dc1a20d6fff0</a><br></div><div>And also another important that you already know and accepted today:<br><a href="http://xenbits.xen.org/gitweb/?p=xen.git;a=commit;h=161212ef02312c0681d2d809c8ff1e1f0ea6f6f9">http://xenbits.xen.org/gitweb/?p=xen.git;a=commit;h=161212ef02312c0681d2d809c8ff1e1f0ea6f6f9</a><br></div><div>Latest version have also LIBXL_HAVE_QXL useful for libvirt.<br></div><div>I think is good add also qxl and usbredir to spice-features test or create a new one "full features".<br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Signed-off-by: Jim Fehlig <<a href="mailto:jfehlig@suse.com">jfehlig@suse.com</a>><br>
---<br>
 src/xenconfig/xen_xl.c                     | 56 ++++++++++++++++++++++--------<br>
 tests/xlconfigdata/test-spice-features.cfg | 32 +++++++++++++++++<br>
 tests/xlconfigdata/test-spice-features.xml | 48 +++++++++++++++++++++++++<br>
 tests/xlconfigdata/test-spice.xml          |  2 ++<br>
 tests/xlconfigtest.c                       |  1 +<br>
 5 files changed, 124 insertions(+), 15 deletions(-)<br>
<br>
diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c<br>
index 2e9294c..b54d5b0 100644<br>
--- a/src/xenconfig/xen_xl.c<br>
+++ b/src/xenconfig/xen_xl.c<br>
@@ -199,17 +199,23 @@ xenParseXLSpice(virConfPtr conf, virDomainDefPtr def)<br>
             }<br>
<br>
             if (xenConfigGetBool(conf, "spiceagent_mouse",<br>
-                                 &graphics->data.spice.mousemode, 0) < 0)<br>
-                goto cleanup;<br>
-            if (xenConfigGetBool(conf, "spicedvagent", &val, 0) < 0)<br>
+                                 &val, 0) < 0)<br>
                 goto cleanup;<br>
             if (val) {<br>
-                if (xenConfigGetBool(conf, "spice_clipboard_sharing",<br>
-                                     &graphics->data.spice.copypaste,<br>
-                                     0) < 0)<br>
-                    goto cleanup;<br>
+                graphics->data.spice.mousemode =<br>
+                    VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_CLIENT;<br>
+            } else {<br>
+                graphics->data.spice.mousemode =<br>
+                    VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_SERVER;<br>
             }<br>
<br>
+            if (xenConfigGetBool(conf, "spice_clipboard_sharing", &val, 0) < 0)<br>
+                goto cleanup;<br>
+            if (val)<br>
+                graphics->data.spice.copypaste = VIR_TRISTATE_BOOL_YES;<br>
+            else<br>
+                graphics->data.spice.copypaste = VIR_TRISTATE_BOOL_NO;<br>
+<br>
             if (VIR_ALLOC_N(def->graphics, 1) < 0)<br>
                 goto cleanup;<br>
             def->graphics[0] = graphics;<br>
@@ -708,16 +714,36 @@ xenFormatXLSpice(virConfPtr conf, virDomainDefPtr def)<br>
                     return -1;<br>
             }<br>
<br>
-            if (xenConfigSetInt(conf, "spiceagent_mouse",<br>
-                                graphics->data.spice.mousemode) < 0)<br>
-                return -1;<br>
+            if (graphics->data.spice.mousemode) {<br>
+                switch (graphics->data.spice.mousemode) {<br>
+                case VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_SERVER:<br>
+                    if (xenConfigSetInt(conf, "spiceagent_mouse", 0) < 0)<br>
+                        return -1;<br>
+                    break;<br>
+                case VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_CLIENT:<br>
+                    if (xenConfigSetInt(conf, "spiceagent_mouse", 1) < 0)<br>
+                        return -1;<br>
+                    /*<br>
+                     * spicevdagent must be enabled if using client<br>
+                     * mode mouse<br>
+                     */<br>
+                    if (xenConfigSetInt(conf, "spicevdagent", 1) < 0)<br>
+                        return -1;<br>
+                    break;<br>
+                default:<br>
+                    break;<br>
+                }<br>
+            }<br>
<br>
-            if (graphics->data.spice.copypaste) {<br>
-                if (xenConfigSetInt(conf, "spicedvagent", 1) < 0)<br>
+            if (graphics->data.spice.copypaste == VIR_TRISTATE_BOOL_YES) {<br>
+                if (xenConfigSetInt(conf, "spice_clipboard_sharing", 1) < 0)<br>
+                    return -1;<br>
+                /*<br>
+                 * spicevdagent must be enabled if spice_clipboard_sharing<br>
+                 * is enabled<br>
+                 */<br>
+                if (xenConfigSetInt(conf, "spicevdagent", 1) < 0)<br>
                     return -1;<br>
-                if (xenConfigSetInt(conf, "spice_clipboard_sharing",<br>
-                                graphics->data.spice.copypaste) < 0)<br>
-                return -1;<br>
             }<br>
         }<br>
     }<br>
diff --git a/tests/xlconfigdata/test-spice-features.cfg b/tests/xlconfigdata/test-spice-features.cfg<br>
new file mode 100644<br>
index 0000000..c3e7111<br>
--- /dev/null<br>
+++ b/tests/xlconfigdata/test-spice-features.cfg<br>
@@ -0,0 +1,32 @@<br>
+name = "XenGuest2"<br>
+uuid = "c7a5fdb2-cdaf-9455-926a-d65c16db1809"<br>
+maxmem = 579<br>
+memory = 394<br>
+vcpus = 1<br>
+pae = 1<br>
+acpi = 1<br>
+apic = 1<br>
+hap = 0<br>
+viridian = 0<br>
+localtime = 0<br>
+on_poweroff = "destroy"<br>
+on_reboot = "restart"<br>
+on_crash = "restart"<br>
+device_model = "/usr/lib/xen/bin/qemu-dm"<br>
+vif = [ "mac=00:16:3e:66:92:9c,bridge=xenbr1,script=vif-bridge,model=e1000,type=ioemu" ]<br>
+parallel = "none"<br>
+serial = "none"<br>
+builder = "hvm"<br>
+boot = "d"<br>
+disk = [ "/dev/HostVG/XenGuest2,raw,hda,w,backendtype=phy", "/root/boot.iso,raw,hdc,r,backendtype=qdisk,devtype=cdrom" ]<br>
+sdl = 0<br>
+vnc = 0<br>
+spice = 1<br>
+spicehost = "127.0.0.1"<br>
+spiceport = 590<br>
+spicetls_port = 500<br>
+spicedisable_ticketing = 0<br>
+spicepasswd = "thebeast"<br>
+spiceagent_mouse = 1<br>
+spicevdagent = 1<br>
+spice_clipboard_sharing = 1<br>
diff --git a/tests/xlconfigdata/test-spice-features.xml b/tests/xlconfigdata/test-spice-features.xml<br>
new file mode 100644<br>
index 0000000..8f3fcf5<br>
--- /dev/null<br>
+++ b/tests/xlconfigdata/test-spice-features.xml<br>
@@ -0,0 +1,48 @@<br>
+<domain type='xen'><br>
+  <name>XenGuest2</name><br>
+  <uuid>c7a5fdb2-cdaf-9455-926a-d65c16db1809</uuid><br>
+  <memory unit='KiB'>592896</memory><br>
+  <currentMemory unit='KiB'>403456</currentMemory><br>
+  <vcpu placement='static'>1</vcpu><br>
+  <os><br>
+    <type arch='x86_64' machine='xenfv'>hvm</type><br>
+    <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader><br>
+    <boot dev='cdrom'/><br>
+  </os><br>
+  <features><br>
+    <acpi/><br>
+    <apic/><br>
+    <pae/><br>
+  </features><br>
+  <clock offset='utc' adjustment='reset'/><br>
+  <on_poweroff>destroy</on_poweroff><br>
+  <on_reboot>restart</on_reboot><br>
+  <on_crash>restart</on_crash><br>
+  <devices><br>
+    <emulator>/usr/lib/xen/bin/qemu-dm</emulator><br>
+    <disk type='block' device='disk'><br>
+      <driver name='phy' type='raw'/><br>
+      <source dev='/dev/HostVG/XenGuest2'/><br>
+      <target dev='hda' bus='ide'/><br>
+    </disk><br>
+    <disk type='file' device='cdrom'><br>
+      <driver name='qemu' type='raw'/><br>
+      <source file='/root/boot.iso'/><br>
+      <target dev='hdc' bus='ide'/><br>
+      <readonly/><br>
+    </disk><br>
+    <interface type='bridge'><br>
+      <mac address='00:16:3e:66:92:9c'/><br>
+      <source bridge='xenbr1'/><br>
+      <script path='vif-bridge'/><br>
+      <model type='e1000'/><br>
+    </interface><br>
+    <input type='mouse' bus='ps2'/><br>
+    <input type='keyboard' bus='ps2'/><br>
+    <graphics type='spice' port='590' tlsPort='500' autoport='no' listen='127.0.0.1' passwd='thebeast'><br>
+      <listen type='address' address='127.0.0.1'/><br>
+      <mouse mode='client'/><br>
+      <clipboard copypaste='yes'/><br>
+    </graphics><br>
+  </devices><br>
+</domain><br>
diff --git a/tests/xlconfigdata/test-spice.xml b/tests/xlconfigdata/test-spice.xml<br>
index bd004fc..e5b43d9 100644<br>
--- a/tests/xlconfigdata/test-spice.xml<br>
+++ b/tests/xlconfigdata/test-spice.xml<br>
@@ -41,6 +41,8 @@<br>
     <input type='keyboard' bus='ps2'/><br>
     <graphics type='spice' port='590' tlsPort='500' autoport='no' listen='127.0.0.1' passwd='thebeast'><br>
       <listen type='address' address='127.0.0.1'/><br>
+      <mouse mode='server'/><br>
+      <clipboard copypaste='no'/><br>
     </graphics><br>
   </devices><br>
 </domain><br>
diff --git a/tests/xlconfigtest.c b/tests/xlconfigtest.c<br>
index 0b47fbb..952b504 100644<br>
--- a/tests/xlconfigtest.c<br>
+++ b/tests/xlconfigtest.c<br>
@@ -195,6 +195,7 @@ mymain(void)<br>
<br>
     DO_TEST("new-disk", 3);<br>
     DO_TEST("spice", 3);<br>
+    DO_TEST("spice-features", 3);<br>
<br>
 #ifdef LIBXL_HAVE_BUILDINFO_USBDEVICE_LIST<br>
     DO_TEST("fullvirt-multiusb", 3);<br>
<span class=""><font color="#888888">--<br>
1.8.4.5<br>
<br>
<br>
_______________________________________________<br>
Xen-devel mailing list<br>
<a href="mailto:Xen-devel@lists.xen.org">Xen-devel@lists.xen.org</a><br>
<a href="http://lists.xen.org/xen-devel" target="_blank">http://lists.xen.org/xen-devel</a><br>
</font></span></blockquote></div><br></div></div>