mirror of
https://github.com/qemu/qemu.git
synced 2026-07-08 17:46:10 +00:00
ui/dbus: switch LED handling to Notifier-based input API
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
This commit is contained in:
@@ -27,6 +27,7 @@
|
||||
#include "ui/input.h"
|
||||
#include "ui/kbd-state.h"
|
||||
#include "trace.h"
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef G_OS_UNIX
|
||||
#include <gio/gunixfdlist.h>
|
||||
@@ -46,6 +47,7 @@ struct _DBusDisplayConsole {
|
||||
|
||||
QemuDBusDisplay1Keyboard *iface_kbd;
|
||||
QKbdState *kbd;
|
||||
Notifier led_notifier;
|
||||
|
||||
QemuDBusDisplay1Mouse *iface_mouse;
|
||||
QemuDBusDisplay1MultiTouch *iface_touch;
|
||||
@@ -150,6 +152,7 @@ dbus_display_console_dispose(GObject *object)
|
||||
{
|
||||
DBusDisplayConsole *ddc = DBUS_DISPLAY_CONSOLE(object);
|
||||
|
||||
qemu_input_led_notifier_remove(&ddc->led_notifier);
|
||||
qemu_console_unregister_listener(&ddc->dcl);
|
||||
g_clear_object(&ddc->iface_touch);
|
||||
g_clear_object(&ddc->iface_mouse);
|
||||
@@ -367,11 +370,13 @@ dbus_kbd_release(DBusDisplayConsole *ddc,
|
||||
}
|
||||
|
||||
static void
|
||||
dbus_kbd_qemu_leds_updated(void *data, int ledstate)
|
||||
dbus_kbd_qemu_leds_updated(Notifier *notifier, void *data)
|
||||
{
|
||||
DBusDisplayConsole *ddc = DBUS_DISPLAY_CONSOLE(data);
|
||||
DBusDisplayConsole *ddc = container_of(notifier, DBusDisplayConsole,
|
||||
led_notifier);
|
||||
uint32_t leds_mask = qemu_input_get_leds_mask(ddc->dcl.con);
|
||||
|
||||
qemu_dbus_display1_keyboard_set_modifiers(ddc->iface_kbd, ledstate);
|
||||
qemu_dbus_display1_keyboard_set_modifiers(ddc->iface_kbd, leds_mask);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -577,7 +582,8 @@ dbus_display_console_new(DBusDisplay *display, QemuConsole *con)
|
||||
|
||||
ddc->kbd = qkbd_state_init(con);
|
||||
ddc->iface_kbd = qemu_dbus_display1_keyboard_skeleton_new();
|
||||
qemu_add_led_event_handler(dbus_kbd_qemu_leds_updated, ddc);
|
||||
ddc->led_notifier.notify = dbus_kbd_qemu_leds_updated;
|
||||
qemu_input_led_notifier_add(&ddc->led_notifier);
|
||||
g_object_connect(ddc->iface_kbd,
|
||||
"swapped-signal::handle-press", dbus_kbd_press, ddc,
|
||||
"swapped-signal::handle-release", dbus_kbd_release, ddc,
|
||||
|
||||
Reference in New Issue
Block a user