summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathon Jongsma <jjongsma@redhat.com>2015-01-29 16:56:43 -0600
committerFabiano FidĂȘncio <fidencio@redhat.com>2015-02-23 23:00:46 +0100
commit5e663018df7b1c6494f1d6c270527d36618c6451 (patch)
treef716a77516aae24911c7c7593a8f3787c4f1d283
parentece407d14e371be48b85c7003035e4af4d51647d (diff)
downloadspice-5e663018df7b1c6494f1d6c270527d36618c6451.tar.gz
spice-5e663018df7b1c6494f1d6c270527d36618c6451.tar.xz
spice-5e663018df7b1c6494f1d6c270527d36618c6451.zip
spice_server_kbd_leds: don't use global 'reds'
Store a reference to the RedsState server in the keyboard state struct
-rw-r--r--server/inputs-channel.c14
-rw-r--r--server/inputs-channel.h1
-rw-r--r--server/reds.c1
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;
}