Patchwork spice_info: add mouse_mode

login
register
mail settings
Submitter Alon Levy
Date March 26, 2012, 12:47 p.m.
Message ID <1332766053-9063-3-git-send-email-alevy@redhat.com>
Download mbox | patch
Permalink /patch/148736/
State New
Headers show

Comments

Alon Levy - March 26, 2012, 12:47 p.m.
Add mouse_mode, either server or mouse, to qmp and hmp commands, based
on spice_server_is_server_mouse added in spice-server 0.10.3.

Signed-off-by: Alon Levy <alevy@redhat.com>
---
 hmp.c            |    2 ++
 qapi-schema.json |    7 ++++++-
 ui/spice-core.c  |    5 +++++
 3 files changed, 13 insertions(+), 1 deletion(-)
Gerd Hoffmann - March 26, 2012, 1:06 p.m.
> +#if SPICE_SERVER_VERSION >= 0x000a03 /* 0.10.3 */
> +    info->has_mouse_mode = true;
> +    info->mouse_mode = g_strdup(spice_server_is_server_mouse(spice_server) ?
> +                                                        "server" : "client");

#else
      info->mouse_mode = "unknown";
#endif

cheers,
  Gerd
Alon Levy - March 26, 2012, 1:30 p.m.
On Mon, Mar 26, 2012 at 03:06:22PM +0200, Gerd Hoffmann wrote:
> > +#if SPICE_SERVER_VERSION >= 0x000a03 /* 0.10.3 */
> > +    info->has_mouse_mode = true;
> > +    info->mouse_mode = g_strdup(spice_server_is_server_mouse(spice_server) ?
> > +                                                        "server" : "client");
> 
> #else
>       info->mouse_mode = "unknown";
> #endif

Why? I don't set has_mouse_mode in this case, which defaults to 0 ==
false because of the malloc0, and then I check has_mouse_mode in the hmp
command, and the qmp just won't send the field because has == false.

> 
> cheers,
>   Gerd
Alon Levy - March 26, 2012, 1:36 p.m.
On Mon, Mar 26, 2012 at 03:06:22PM +0200, Gerd Hoffmann wrote:
> > +#if SPICE_SERVER_VERSION >= 0x000a03 /* 0.10.3 */
> > +    info->has_mouse_mode = true;
> > +    info->mouse_mode = g_strdup(spice_server_is_server_mouse(spice_server) ?
> > +                                                        "server" : "client");
> 
> #else
>       info->mouse_mode = "unknown";
> #endif
> 

ok, it's probably better to have this consistent across hmp and qmp,
will resend this patch.

> cheers,
>   Gerd
Gerd Hoffmann - March 26, 2012, 1:46 p.m.
On 03/26/12 15:30, Alon Levy wrote:
> On Mon, Mar 26, 2012 at 03:06:22PM +0200, Gerd Hoffmann wrote:
>>> +#if SPICE_SERVER_VERSION >= 0x000a03 /* 0.10.3 */
>>> +    info->has_mouse_mode = true;
>>> +    info->mouse_mode = g_strdup(spice_server_is_server_mouse(spice_server) ?
>>> +                                                        "server" : "client");
>>
>> #else
>>       info->mouse_mode = "unknown";
>> #endif
> 
> Why?

has_mouse_mode looks superfluous and makes the code a bit more
complicated than needed.

> I don't set has_mouse_mode in this case, which defaults to 0 ==
> false because of the malloc0, and then I check has_mouse_mode in the hmp
> command, and the qmp just won't send the field because has == false.

Ah, ok, didn't see qmp does something different, then I'd suggest to
just leave mouse_mode zero-initialized (aka NULL) when mouse mode info
isn't available.

cheers,
  Gerd

Patch

diff --git a/hmp.c b/hmp.c
index 9cf2d13..c1224fb 100644
--- a/hmp.c
+++ b/hmp.c
@@ -350,6 +350,8 @@  void hmp_info_spice(Monitor *mon)
     }
     monitor_printf(mon, "        auth: %s\n", info->auth);
     monitor_printf(mon, "    compiled: %s\n", info->compiled_version);
+    monitor_printf(mon, "  mouse-mode: %s\n",
+                   info->has_mouse_mode ? info->mouse_mode : "unknown");
 
     if (!info->has_channels || info->channels == NULL) {
         monitor_printf(mon, "Channels: none\n");
diff --git a/qapi-schema.json b/qapi-schema.json
index 0d11d6e..72c0080 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -654,6 +654,11 @@ 
 #        'spice' uses SASL or direct TLS authentication, depending on command
 #                line options
 #
+# @mouse-mode: #optional current server mouse mode if spice server is new
+#        enough and exposes this information.
+#        'client' if client side
+#        'server' if server side
+#
 # @channels: a list of @SpiceChannel for each active spice channel
 #
 # Since: 0.14.0
@@ -661,7 +666,7 @@ 
 { 'type': 'SpiceInfo',
   'data': {'enabled': 'bool', '*host': 'str', '*port': 'int',
            '*tls-port': 'int', '*auth': 'str', '*compiled-version': 'str',
-           '*channels': ['SpiceChannel']} }
+           '*mouse-mode': 'str', '*channels': ['SpiceChannel']} }
 
 ##
 # @query-spice
diff --git a/ui/spice-core.c b/ui/spice-core.c
index a468524..0155dba 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -462,6 +462,11 @@  SpiceInfo *qmp_query_spice(Error **errp)
         info->tls_port = tls_port;
     }
 
+#if SPICE_SERVER_VERSION >= 0x000a03 /* 0.10.3 */
+    info->has_mouse_mode = true;
+    info->mouse_mode = g_strdup(spice_server_is_server_mouse(spice_server) ?
+                                                        "server" : "client");
+#endif
     /* for compatibility with the original command */
     info->has_channels = true;
     info->channels = qmp_query_spice_channels();