diff options
-rw-r--r-- | server/inputs-channel.c | 14 | ||||
-rw-r--r-- | server/inputs-channel.h | 1 | ||||
-rw-r--r-- | server/reds.c | 1 |
3 files changed, 13 insertions, 3 deletions
diff --git a/server/inputs-channel.c b/server/inputs-channel.c index 7667ad74..bd019c2a 100644 --- a/server/inputs-channel.c +++ b/server/inputs-channel.c @@ -60,11 +60,19 @@ struct SpiceKbdState { /* track key press state */ bool key[0x7f]; bool key_ext[0x7f]; + RedsState *reds; }; -static SpiceKbdState* spice_kbd_state_new(void) +static SpiceKbdState* spice_kbd_state_new(RedsState *reds) +{ + SpiceKbdState *st = spice_new0(SpiceKbdState, 1); + st->reds = reds; + return st; +} + +RedsState* spice_kbd_state_get_server(SpiceKbdState *dev) { - return spice_new0(SpiceKbdState, 1); + return dev->reds; } struct SpiceMouseState { @@ -670,7 +678,7 @@ int inputs_channel_set_keyboard(InputsChannel *inputs, SpiceKbdInstance *keyboar return -1; } inputs->keyboard = keyboard; - inputs->keyboard->st = spice_kbd_state_new(); + inputs->keyboard->st = spice_kbd_state_new(reds); return 0; } diff --git a/server/inputs-channel.h b/server/inputs-channel.h index caa108e8..92b4473e 100644 --- a/server/inputs-channel.h +++ b/server/inputs-channel.h @@ -41,5 +41,6 @@ int inputs_channel_has_tablet(InputsChannel *inputs); void inputs_channel_detach_tablet(InputsChannel *inputs, SpiceTabletInstance *tablet); void spice_tablet_state_set_server(SpiceTabletState *dev, void *server); void* spice_tablet_state_get_server(SpiceTabletState *dev); +RedsState* spice_kbd_state_get_server(SpiceKbdState *dev); #endif diff --git a/server/reds.c b/server/reds.c index 9d91cee7..7bf4e3b4 100644 --- a/server/reds.c +++ b/server/reds.c @@ -3653,6 +3653,7 @@ SPICE_GNUC_VISIBLE int spice_server_add_renderer(SpiceServer *s, const char *nam SPICE_GNUC_VISIBLE int spice_server_kbd_leds(SpiceKbdInstance *sin, int leds) { + RedsState *reds = spice_kbd_state_get_server(sin->st); inputs_channel_on_keyboard_leds_change(reds->inputs_channel, leds); return 0; } |