diff mbox

[v3] spice_info: add mouse_mode

Message ID 1333056194-24426-1-git-send-email-alevy@redhat.com
State New
Headers show

Commit Message

Alon Levy March 29, 2012, 9:23 p.m. UTC
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 |   27 ++++++++++++++++++++++++++-
 ui/spice-core.c  |    7 +++++++
 3 files changed, 35 insertions(+), 1 deletion(-)

Comments

Gerd Hoffmann March 30, 2012, 8:12 a.m. UTC | #1
Hi,

> +# @SpiceQueryMouseMode
> +#
> +# An enumation of Spice mouse states.
> +#
> +# @client: Mouse cursor position is determined by the client.
> +#
> +# @server: Mouse cursor position is determined by the server.
> +#
> +# @unknown: No information is available about mouse mode used by
> +#           the spice server.
> +#
> +# Note: spice/enums.h has a SpiceMouseMode already, hence the name.

I guess it makes sense then to just add "unknown" to the existing
SpiceMouseMode and reuse it ...

cheers,
  Gerd
Alon Levy March 30, 2012, 7:25 p.m. UTC | #2
On Fri, Mar 30, 2012 at 10:12:56AM +0200, Gerd Hoffmann wrote:
>   Hi,
> 
> > +# @SpiceQueryMouseMode
> > +#
> > +# An enumation of Spice mouse states.
> > +#
> > +# @client: Mouse cursor position is determined by the client.
> > +#
> > +# @server: Mouse cursor position is determined by the server.
> > +#
> > +# @unknown: No information is available about mouse mode used by
> > +#           the spice server.
> > +#
> > +# Note: spice/enums.h has a SpiceMouseMode already, hence the name.
> 
> I guess it makes sense then to just add "unknown" to the existing
> SpiceMouseMode and reuse it ...

But then you don't get the nifty autogenerated lookup table, although I
agree having two enums is bound to cause confusion somehow. I could just
code a lookup table for the hmp.

> 
> cheers,
>   Gerd
>
Alon Levy April 1, 2012, 12:06 p.m. UTC | #3
On Fri, Mar 30, 2012 at 10:12:56AM +0200, Gerd Hoffmann wrote:
>   Hi,
> 
> > +# @SpiceQueryMouseMode
> > +#
> > +# An enumation of Spice mouse states.
> > +#
> > +# @client: Mouse cursor position is determined by the client.
> > +#
> > +# @server: Mouse cursor position is determined by the server.
> > +#
> > +# @unknown: No information is available about mouse mode used by
> > +#           the spice server.
> > +#
> > +# Note: spice/enums.h has a SpiceMouseMode already, hence the name.
> 
> I guess it makes sense then to just add "unknown" to the existing
> SpiceMouseMode and reuse it ...

hmm, actually that would require adding #include "spice/enums.h" to
qapi-types.h, not sure that would be accepted happily - making
qapi-types depend on spice.h must be controlled with an ifdef since
spice can be disabled, and that means the schema would be different
depending on the configuration options - I know we specifically don't
change command line options based on configure flags, just the results
of using them.

> 
> cheers,
>   Gerd
>
Gerd Hoffmann April 24, 2012, 10:21 a.m. UTC | #4
On 03/29/12 23:23, Alon Levy wrote:
> 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.

Patch added to spice patch queue.

thanks,
  Gerd
diff mbox

Patch

diff --git a/hmp.c b/hmp.c
index 9cf2d13..71505db 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",
+                   SpiceQueryMouseMode_lookup[info->mouse_mode]);
 
     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..d972499 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -634,6 +634,25 @@ 
            'tls': 'bool'} }
 
 ##
+# @SpiceQueryMouseMode
+#
+# An enumation of Spice mouse states.
+#
+# @client: Mouse cursor position is determined by the client.
+#
+# @server: Mouse cursor position is determined by the server.
+#
+# @unknown: No information is available about mouse mode used by
+#           the spice server.
+#
+# Note: spice/enums.h has a SpiceMouseMode already, hence the name.
+#
+# Since: 1.1
+##
+{ 'enum': 'SpiceQueryMouseMode',
+  'data': [ 'client', 'server', 'unknown' ] }
+
+##
 # @SpiceInfo
 #
 # Information about the SPICE session.
@@ -654,6 +673,12 @@ 
 #        'spice' uses SASL or direct TLS authentication, depending on command
 #                line options
 #
+# @mouse-mode: The mode in which the mouse cursor is displayed currently. Can
+#              be determined by the client or the server, or unknown if spice
+#              server doesn't provide this information.
+#
+#              Since: 1.1
+#
 # @channels: a list of @SpiceChannel for each active spice channel
 #
 # Since: 0.14.0
@@ -661,7 +686,7 @@ 
 { 'type': 'SpiceInfo',
   'data': {'enabled': 'bool', '*host': 'str', '*port': 'int',
            '*tls-port': 'int', '*auth': 'str', '*compiled-version': 'str',
-           '*channels': ['SpiceChannel']} }
+           'mouse-mode': 'SpiceQueryMouseMode', '*channels': ['SpiceChannel']} }
 
 ##
 # @query-spice
diff --git a/ui/spice-core.c b/ui/spice-core.c
index a468524..4fc48f8 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -462,6 +462,13 @@  SpiceInfo *qmp_query_spice(Error **errp)
         info->tls_port = tls_port;
     }
 
+#if SPICE_SERVER_VERSION >= 0x000a03 /* 0.10.3 */
+    info->mouse_mode = spice_server_is_server_mouse(spice_server) ?
+                       SPICE_QUERY_MOUSE_MODE_SERVER :
+                       SPICE_QUERY_MOUSE_MODE_CLIENT;
+#else
+    info->mouse_mode = SPICE_QUERY_MOUSE_MODE_UNKNOWN;
+#endif
     /* for compatibility with the original command */
     info->has_channels = true;
     info->channels = qmp_query_spice_channels();