[Spice-devel] [PATCH v2 5/7] spice-ppc: avoid casts to lessers types!
Fabiano Fidêncio
fabiano at fidencio.org
Mon Aug 13 07:39:14 PDT 2012
On Mon, Aug 13, 2012 at 11:14 AM, Erlon Cruz
<erlon.cruz at br.flextronics.com> wrote:
> 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>
My email is wrong here.
> ---
> 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;
Looks like remove buf and use directly message should be a different commit.
> 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;
As teuf pointed, it should be SpiceMsgcKeyUp *key_up = (SpiceMsgcKeyUp
*)message; and should be in a different commit.
> + 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
>
--
Fabiano Fidêncio
More information about the Spice-devel
mailing list