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>
Marc-André Lureau committed
Jun 9, 2026 at 01:20 UTC
6fbbff96d0a8e6359b39e240c2d1a643fdfe0e39
1 file changed
+10
-4
ui/dbus-console.c
+10
-4
@@ -27,6 +27,7 @@
27
#include "ui/input.h"
28
#include "ui/kbd-state.h"
29
#include "trace.h"
30
+#include <stdint.h>
31
32
#ifdef G_OS_UNIX
33
#include <gio/gunixfdlist.h>
@@ -46,6 +47,7 @@ struct _DBusDisplayConsole {
47
48
QemuDBusDisplay1Keyboard *iface_kbd;
49
QKbdState *kbd;
50
+ Notifier led_notifier;
51
52
QemuDBusDisplay1Mouse *iface_mouse;
53
QemuDBusDisplay1MultiTouch *iface_touch;
@@ -150,6 +152,7 @@ dbus_display_console_dispose(GObject *object)
152
{
153
DBusDisplayConsole *ddc = DBUS_DISPLAY_CONSOLE(object);
154
155
+ qemu_input_led_notifier_remove(&ddc->led_notifier);
156
qemu_console_unregister_listener(&ddc->dcl);
157
g_clear_object(&ddc->iface_touch);
158
g_clear_object(&ddc->iface_mouse);
@@ -367,11 +370,13 @@ dbus_kbd_release(DBusDisplayConsole *ddc,
370
}
371
372
static void
370
-dbus_kbd_qemu_leds_updated(void *data, int ledstate)
373
+dbus_kbd_qemu_leds_updated(Notifier *notifier, void *data)
374
{
372
- DBusDisplayConsole *ddc = DBUS_DISPLAY_CONSOLE(data);
375
+ DBusDisplayConsole *ddc = container_of(notifier, DBusDisplayConsole,
376
+ led_notifier);
377
+ uint32_t leds_mask = qemu_input_get_leds_mask(ddc->dcl.con);
378
374
- qemu_dbus_display1_keyboard_set_modifiers(ddc->iface_kbd, ledstate);
379
+ qemu_dbus_display1_keyboard_set_modifiers(ddc->iface_kbd, leds_mask);
380
}
381
382
static gboolean
@@ -577,7 +582,8 @@ dbus_display_console_new(DBusDisplay *display, QemuConsole *con)
582
583
ddc->kbd = qkbd_state_init(con);
584
ddc->iface_kbd = qemu_dbus_display1_keyboard_skeleton_new();
580
- qemu_add_led_event_handler(dbus_kbd_qemu_leds_updated, ddc);
585
+ ddc->led_notifier.notify = dbus_kbd_qemu_leds_updated;
586
+ qemu_input_led_notifier_add(&ddc->led_notifier);
587
g_object_connect(ddc->iface_kbd,
588
"swapped-signal::handle-press", dbus_kbd_press, ddc,
589
"swapped-signal::handle-release", dbus_kbd_release, ddc,