[Spice-devel] [PATCH 14/18] spice_server_kbd_leds: don't use global 'reds'
Frediano Ziglio
fziglio at redhat.com
Thu Feb 4 15:57:46 UTC 2016
From: Jonathon Jongsma <jjongsma at redhat.com>
Store a reference to the RedsState server in the keyboard state struct
---
server/inputs-channel.c | 14 +++++++++++---
server/inputs-channel.h | 1 +
server/reds.c | 1 +
3 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/server/inputs-channel.c b/server/inputs-channel.c
index 5e884f4..38b23df 100644
--- a/server/inputs-channel.c
+++ b/server/inputs-channel.c
@@ -61,11 +61,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 {
@@ -666,7 +674,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 31574b5..4070a23 100644
--- a/server/inputs-channel.h
+++ b/server/inputs-channel.h
@@ -40,5 +40,6 @@ int inputs_channel_set_tablet(InputsChannel *inputs, SpiceTabletInstance *tablet
int inputs_channel_has_tablet(InputsChannel *inputs);
void inputs_channel_detach_tablet(InputsChannel *inputs, SpiceTabletInstance *tablet);
RedsState* 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 012c0f3..91711a1 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -3773,6 +3773,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;
}
--
2.5.0
More information about the Spice-devel
mailing list