[Spice-devel] [PATCH v2 5/7] spice-ppc: avoid casts to lessers types!
Erlon Cruz
erlon.cruz at br.flextronics.com
Mon Aug 13 07:14:31 PDT 2012
From: Fabiano Fidêncio <fabiano at fidencio.org>
It's breaking PPC's keyboard functionality, once this cast is
getting the first byte (from left to right) on any architecture,
what's wrong when we think in a PPC (we should get the last one,
instead).
Signed-off-by: Erlon R. Cruz <erlon.cruz at br.flextronics.com>
Signed-off-by: Rafael F. Santos <fonsecasantos.rafael at gmail.com>
Signed-off-by: Fabiano Fidêncio <Fabiano.Fidêncio at fit-tecnologia.org.br>
---
server/inputs_channel.c | 24 ++++++++++++------------
1 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/server/inputs_channel.c b/server/inputs_channel.c
index e14e995..aa1cba9 100644
--- a/server/inputs_channel.c
+++ b/server/inputs_channel.c
@@ -289,28 +289,28 @@ static int inputs_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, ui
{
InputsChannel *inputs_channel = (InputsChannel *)rcc->channel;
InputsChannelClient *icc = (InputsChannelClient *)rcc;
- uint8_t *buf = (uint8_t *)message;
spice_assert(g_inputs_channel == inputs_channel);
switch (type) {
case SPICE_MSGC_INPUTS_KEY_DOWN: {
- SpiceMsgcKeyDown *key_up = (SpiceMsgcKeyDown *)buf;
+ SpiceMsgcKeyDown *key_up = (SpiceMsgcKeyDown *)message;
if (key_up->code == CAPS_LOCK_SCAN_CODE || key_up->code == NUM_LOCK_SCAN_CODE ||
key_up->code == SCROLL_LOCK_SCAN_CODE) {
activate_modifiers_watch();
}
}
case SPICE_MSGC_INPUTS_KEY_UP: {
- SpiceMsgcKeyDown *key_down = (SpiceMsgcKeyDown *)buf;
- uint8_t *now = (uint8_t *)&key_down->code;
- uint8_t *end = now + sizeof(key_down->code);
- for (; now < end && *now; now++) {
- kbd_push_scan(keyboard, *now);
+ SpiceMsgcKeyDown *key_down = (SpiceMsgcKeyDown *)message;
+ uint32_t code = key_down->code;
+
+ for (; code != 0; code >>= 8) {
+ kbd_push_scan(keyboard, code & 0xff);
}
+
break;
}
case SPICE_MSGC_INPUTS_MOUSE_MOTION: {
- SpiceMsgcMouseMotion *mouse_motion = (SpiceMsgcMouseMotion *)buf;
+ SpiceMsgcMouseMotion *mouse_motion = (SpiceMsgcMouseMotion *)message;
if (++icc->motion_count % SPICE_INPUT_MOTION_ACK_BUNCH == 0) {
red_channel_client_pipe_add_type(rcc, PIPE_ITEM_MOUSE_MOTION_ACK);
@@ -325,7 +325,7 @@ static int inputs_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, ui
break;
}
case SPICE_MSGC_INPUTS_MOUSE_POSITION: {
- SpiceMsgcMousePosition *pos = (SpiceMsgcMousePosition *)buf;
+ SpiceMsgcMousePosition *pos = (SpiceMsgcMousePosition *)message;
if (++icc->motion_count % SPICE_INPUT_MOTION_ACK_BUNCH == 0) {
red_channel_client_pipe_add_type(rcc, PIPE_ITEM_MOUSE_MOTION_ACK);
@@ -349,7 +349,7 @@ static int inputs_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, ui
break;
}
case SPICE_MSGC_INPUTS_MOUSE_PRESS: {
- SpiceMsgcMousePress *mouse_press = (SpiceMsgcMousePress *)buf;
+ SpiceMsgcMousePress *mouse_press = (SpiceMsgcMousePress *)message;
int dz = 0;
if (mouse_press->button == SPICE_MOUSE_BUTTON_UP) {
dz = -1;
@@ -377,7 +377,7 @@ static int inputs_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, ui
break;
}
case SPICE_MSGC_INPUTS_MOUSE_RELEASE: {
- SpiceMsgcMouseRelease *mouse_release = (SpiceMsgcMouseRelease *)buf;
+ SpiceMsgcMouseRelease *mouse_release = (SpiceMsgcMouseRelease *)message;
if (reds_get_mouse_mode() == SPICE_MOUSE_MODE_CLIENT) {
if (reds_get_agent_mouse() && reds_has_vdagent()) {
inputs_channel->mouse_state.buttons =
@@ -397,7 +397,7 @@ static int inputs_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, ui
break;
}
case SPICE_MSGC_INPUTS_KEY_MODIFIERS: {
- SpiceMsgcKeyModifiers *modifiers = (SpiceMsgcKeyModifiers *)buf;
+ SpiceMsgcKeyModifiers *modifiers = (SpiceMsgcKeyModifiers *)message;
uint8_t leds;
if (!keyboard) {
--
1.7.4.1
More information about the Spice-devel
mailing list