Patchwork [5/7] Expose whether a mouse is an absolute device via QMP and the human monitor.

login
register
mail settings
Submitter Anthony Liguori
Date March 10, 2010, 4:51 p.m.
Message ID <1268239869-16058-5-git-send-email-aliguori@us.ibm.com>
Download mbox | patch
Permalink /patch/47259/
State New
Headers show

Comments

Anthony Liguori - March 10, 2010, 4:51 p.m.
For QMP, we just add an attribute which is backwards compatible.  For the human
monitor, we add (absolute) to the end of the line.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
 input.c |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)
Luiz Capitulino - March 11, 2010, 2:15 p.m.
On Wed, 10 Mar 2010 10:51:07 -0600
Anthony Liguori <aliguori@us.ibm.com> wrote:

> For QMP, we just add an attribute which is backwards compatible.  For the human
> monitor, we add (absolute) to the end of the line.
> 
> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>

 Looks good to me.

> ---
>  input.c |   18 ++++++++++++------
>  1 files changed, 12 insertions(+), 6 deletions(-)
> 
> diff --git a/input.c b/input.c
> index cbf55b7..d2a6f26 100644
> --- a/input.c
> +++ b/input.c
> @@ -195,9 +195,10 @@ static void info_mice_iter(QObject *data, void *opaque)
>      Monitor *mon = opaque;
>  
>      mouse = qobject_to_qdict(data);
> -    monitor_printf(mon, "%c Mouse #%" PRId64 ": %s\n",
> +    monitor_printf(mon, "%c Mouse #%" PRId64 ": %s%s\n",
>                    (qdict_get_bool(mouse, "current") ? '*' : ' '),
> -                  qdict_get_int(mouse, "index"), qdict_get_str(mouse, "name"));
> +                   qdict_get_int(mouse, "index"), qdict_get_str(mouse, "name"),
> +                   qdict_get_bool(mouse, "absolute") ? " (absolute)" : "");
>  }
>  
>  void do_info_mice_print(Monitor *mon, const QObject *data)
> @@ -224,11 +225,12 @@ void do_info_mice_print(Monitor *mon, const QObject *data)
>   * - "name": mouse's name
>   * - "index": mouse's index
>   * - "current": true if this mouse is receiving events, false otherwise
> + * - "absolute": true if the mouse generates absolute input events
>   *
>   * Example:
>   *
> - * [ { "name": "QEMU Microsoft Mouse", "index": 0, "current": false },
> - *   { "name": "QEMU PS/2 Mouse", "index": 1, "current": true } ]
> + * [ { "name": "QEMU Microsoft Mouse", "index": 0, "current": false, "absolute": false },
> + *   { "name": "QEMU PS/2 Mouse", "index": 1, "current": true, "absolute": true } ]
>   */
>  void do_info_mice(Monitor *mon, QObject **ret_data)
>  {
> @@ -246,10 +248,14 @@ void do_info_mice(Monitor *mon, QObject **ret_data)
>  
>      QTAILQ_FOREACH(cursor, &mouse_handlers, node) {
>          QObject *obj;
> -        obj = qobject_from_jsonf("{ 'name': %s, 'index': %d, 'current': %i }",
> +        obj = qobject_from_jsonf("{ 'name': %s,"
> +                                 "  'index': %d,"
> +                                 "  'current': %i,"
> +                                 "  'absolute': %i }",
>                                   cursor->qemu_put_mouse_event_name,
>                                   cursor->index,
> -                                 cursor->index == current);
> +                                 cursor->index == current,
> +                                 !!cursor->qemu_put_mouse_event_absolute);
>          qlist_append_obj(mice_list, obj);
>      }
>

Patch

diff --git a/input.c b/input.c
index cbf55b7..d2a6f26 100644
--- a/input.c
+++ b/input.c
@@ -195,9 +195,10 @@  static void info_mice_iter(QObject *data, void *opaque)
     Monitor *mon = opaque;
 
     mouse = qobject_to_qdict(data);
-    monitor_printf(mon, "%c Mouse #%" PRId64 ": %s\n",
+    monitor_printf(mon, "%c Mouse #%" PRId64 ": %s%s\n",
                   (qdict_get_bool(mouse, "current") ? '*' : ' '),
-                  qdict_get_int(mouse, "index"), qdict_get_str(mouse, "name"));
+                   qdict_get_int(mouse, "index"), qdict_get_str(mouse, "name"),
+                   qdict_get_bool(mouse, "absolute") ? " (absolute)" : "");
 }
 
 void do_info_mice_print(Monitor *mon, const QObject *data)
@@ -224,11 +225,12 @@  void do_info_mice_print(Monitor *mon, const QObject *data)
  * - "name": mouse's name
  * - "index": mouse's index
  * - "current": true if this mouse is receiving events, false otherwise
+ * - "absolute": true if the mouse generates absolute input events
  *
  * Example:
  *
- * [ { "name": "QEMU Microsoft Mouse", "index": 0, "current": false },
- *   { "name": "QEMU PS/2 Mouse", "index": 1, "current": true } ]
+ * [ { "name": "QEMU Microsoft Mouse", "index": 0, "current": false, "absolute": false },
+ *   { "name": "QEMU PS/2 Mouse", "index": 1, "current": true, "absolute": true } ]
  */
 void do_info_mice(Monitor *mon, QObject **ret_data)
 {
@@ -246,10 +248,14 @@  void do_info_mice(Monitor *mon, QObject **ret_data)
 
     QTAILQ_FOREACH(cursor, &mouse_handlers, node) {
         QObject *obj;
-        obj = qobject_from_jsonf("{ 'name': %s, 'index': %d, 'current': %i }",
+        obj = qobject_from_jsonf("{ 'name': %s,"
+                                 "  'index': %d,"
+                                 "  'current': %i,"
+                                 "  'absolute': %i }",
                                  cursor->qemu_put_mouse_event_name,
                                  cursor->index,
-                                 cursor->index == current);
+                                 cursor->index == current,
+                                 !!cursor->qemu_put_mouse_event_absolute);
         qlist_append_obj(mice_list, obj);
     }