Signed-off-by: Marc-André Lureau <[email protected]>
---
ui/spice-input.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/ui/spice-input.c b/ui/spice-input.c
index f0bb915fd77..f5329b8aed9 100644
--- a/ui/spice-input.c
+++ b/ui/spice-input.c
@@ -33,6 +33,7 @@ typedef struct QemuSpiceKbd {
int ledstate;
bool emul0;
size_t pauseseq;
+ Notifier led_notifier;
} QemuSpiceKbd;
static void kbd_push_key(SpiceKbdInstance *sin, uint8_t frag);
@@ -86,9 +87,11 @@ static uint8_t kbd_get_leds(SpiceKbdInstance *sin)
return kbd->ledstate;
}
-static void kbd_leds(void *opaque, int ledstate)
+static void kbd_leds(Notifier *notifier, void *data)
{
- QemuSpiceKbd *kbd = opaque;
+ QemuSpiceKbd *kbd = container_of(notifier, QemuSpiceKbd, led_notifier);
+ /* spice has no associated console support */
+ int ledstate = qemu_input_get_led(NULL);
kbd->ledstate = 0;
if (ledstate & QEMU_SCROLL_LOCK_LED) {
@@ -247,7 +250,8 @@ void qemu_spice_input_init(void)
kbd = g_malloc0(sizeof(*kbd));
kbd->sin.base.sif = &kbd_interface.base;
qemu_spice.add_interface(&kbd->sin.base);
- qemu_add_led_event_handler(kbd_leds, kbd);
+ kbd->led_notifier.notify = kbd_leds;
+ qemu_input_led_notifier_add(&kbd->led_notifier);
pointer = g_malloc0(sizeof(*pointer));
pointer->mouse.base.sif = &mouse_interface.base;
--
2.54.0