input: move do_mouse_set to new core

This removes the last user of the lecagy input mouse handler list,
so we can remove more legacy bits with this.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
Gerd Hoffmann 2013-12-10 17:16:03 +01:00
parent e842c68d44
commit 70b52f62b8
2 changed files with 21 additions and 43 deletions

View file

@ -35,12 +35,6 @@ struct QEMUPutMouseEntry {
QEMUPutMouseEvent *qemu_put_mouse_event;
void *qemu_put_mouse_event_opaque;
int qemu_put_mouse_event_absolute;
char *qemu_put_mouse_event_name;
int index;
/* used internally by qemu for handling mice */
QTAILQ_ENTRY(QEMUPutMouseEntry) node;
/* new input core */
QemuInputHandler h;
@ -412,17 +406,12 @@ QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func,
const char *name)
{
QEMUPutMouseEntry *s;
static int mouse_index = 0;
s = g_malloc0(sizeof(QEMUPutMouseEntry));
s->qemu_put_mouse_event = func;
s->qemu_put_mouse_event_opaque = opaque;
s->qemu_put_mouse_event_absolute = absolute;
s->qemu_put_mouse_event_name = g_strdup(name);
s->index = mouse_index++;
QTAILQ_INSERT_TAIL(&mouse_handlers, s, node);
s->h.name = name;
s->h.mask = INPUT_EVENT_MASK_BTN |
@ -437,19 +426,13 @@ QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func,
void qemu_activate_mouse_event_handler(QEMUPutMouseEntry *entry)
{
QTAILQ_REMOVE(&mouse_handlers, entry, node);
QTAILQ_INSERT_HEAD(&mouse_handlers, entry, node);
qemu_input_handler_activate(entry->s);
}
void qemu_remove_mouse_event_handler(QEMUPutMouseEntry *entry)
{
QTAILQ_REMOVE(&mouse_handlers, entry, node);
qemu_input_handler_unregister(entry->s);
g_free(entry->qemu_put_mouse_event_name);
g_free(entry);
}
@ -482,29 +465,3 @@ void kbd_put_ledstate(int ledstate)
cursor->put_led(cursor->opaque, ledstate);
}
}
void do_mouse_set(Monitor *mon, const QDict *qdict)
{
QEMUPutMouseEntry *cursor;
int index = qdict_get_int(qdict, "index");
int found = 0;
if (QTAILQ_EMPTY(&mouse_handlers)) {
monitor_printf(mon, "No mouse devices connected\n");
return;
}
QTAILQ_FOREACH(cursor, &mouse_handlers, node) {
if (cursor->index == index) {
found = 1;
qemu_activate_mouse_event_handler(cursor);
break;
}
}
if (!found) {
monitor_printf(mon, "Mouse at given index not found\n");
}
qemu_input_check_mode_change();
}

View file

@ -334,3 +334,24 @@ MouseInfoList *qmp_query_mice(Error **errp)
return mice_list;
}
void do_mouse_set(Monitor *mon, const QDict *qdict)
{
QemuInputHandlerState *s;
int index = qdict_get_int(qdict, "index");
int found = 0;
QTAILQ_FOREACH(s, &handlers, node) {
if (s->id == index) {
found = 1;
qemu_input_handler_activate(s);
break;
}
}
if (!found) {
monitor_printf(mon, "Mouse at given index not found\n");
}
qemu_input_check_mode_change();
}