aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ui/input-legacy.c23
-rw-r--r--ui/input.c29
2 files changed, 29 insertions, 23 deletions
diff --git a/ui/input-legacy.c b/ui/input-legacy.c
index 7f8e72b55e..7843482387 100644
--- a/ui/input-legacy.c
+++ b/ui/input-legacy.c
@@ -483,29 +483,6 @@ void kbd_put_ledstate(int ledstate)
}
}
-MouseInfoList *qmp_query_mice(Error **errp)
-{
- MouseInfoList *mice_list = NULL;
- QEMUPutMouseEntry *cursor;
- bool current = true;
-
- QTAILQ_FOREACH(cursor, &mouse_handlers, node) {
- MouseInfoList *info = g_malloc0(sizeof(*info));
- info->value = g_malloc0(sizeof(*info->value));
- info->value->name = g_strdup(cursor->qemu_put_mouse_event_name);
- info->value->index = cursor->index;
- info->value->absolute = !!cursor->qemu_put_mouse_event_absolute;
- info->value->current = current;
-
- current = false;
-
- info->next = mice_list;
- mice_list = info;
- }
-
- return mice_list;
-}
-
void do_mouse_set(Monitor *mon, const QDict *qdict)
{
QEMUPutMouseEntry *cursor;
diff --git a/ui/input.c b/ui/input.c
index afc037c3e9..162e8d8a5a 100644
--- a/ui/input.c
+++ b/ui/input.c
@@ -1,5 +1,6 @@
#include "sysemu/sysemu.h"
#include "qapi-types.h"
+#include "qmp-commands.h"
#include "trace.h"
#include "ui/input.h"
#include "ui/console.h"
@@ -305,3 +306,31 @@ void qemu_remove_mouse_mode_change_notifier(Notifier *notify)
{
notifier_remove(notify);
}
+
+MouseInfoList *qmp_query_mice(Error **errp)
+{
+ MouseInfoList *mice_list = NULL;
+ MouseInfoList *info;
+ QemuInputHandlerState *s;
+ bool current = true;
+
+ QTAILQ_FOREACH(s, &handlers, node) {
+ if (!(s->handler->mask &
+ (INPUT_EVENT_MASK_REL | INPUT_EVENT_MASK_ABS))) {
+ continue;
+ }
+
+ info = g_new0(MouseInfoList, 1);
+ info->value = g_new0(MouseInfo, 1);
+ info->value->index = s->id;
+ info->value->name = g_strdup(s->handler->name);
+ info->value->absolute = s->handler->mask & INPUT_EVENT_MASK_ABS;
+ info->value->current = current;
+
+ current = false;
+ info->next = mice_list;
+ mice_list = info;
+ }
+
+ return mice_list;
+}