Hi Snir, I would prefer if this and some other patches (3, 4) were squashed into your patch. Frediano, what do you think ? Pavel On Sun, 2016-05-29 at 17:30 +0300, Snir Sheriber wrote: > From: Frediano Ziglio <fziglio@xxxxxxxxxx> > > --- > server/spicevmc.c | 85 ++++++++++++++++++++++++++++------------------------ > --- > 1 file changed, 44 insertions(+), 41 deletions(-) > > diff --git a/server/spicevmc.c b/server/spicevmc.c > index be924df..f2b3be3 100644 > --- a/server/spicevmc.c > +++ b/server/spicevmc.c > @@ -120,7 +120,8 @@ static void > spicevmc_red_channel_release_msg_rcv_buf(RedChannelClient *rcc, > uint32_t size, > uint8_t *msg); > > -static RedVmcPipeItem* try_compress_lz4(SpiceVmcState *state, int n, > RedVmcPipeItem *msg_item) { > +static RedVmcPipeItem* try_compress_lz4(SpiceVmcState *state, int n, > RedVmcPipeItem *msg_item) > +{ > RedVmcPipeItem *msg_item_compressed; > int bound, compressed_data_count; > > @@ -154,7 +155,9 @@ static RedVmcPipeItem* try_compress_lz4(SpiceVmcState > *state, int n, RedVmcPipeI > msg_item_compressed->buf_used = compressed_data_count; > free(msg_item); > return msg_item_compressed; > - }/* LZ4 compression failed-fallback a non-compressed data is to be sent > */ > + } > + > + /* LZ4 compression failed-fallback a non-compressed data is to be sent */ > spice_warning("Compress Error"); > free(msg_item_compressed); > return NULL; > @@ -193,8 +196,8 @@ static RedPipeItem > *spicevmc_chardev_read_msg_from_dev(SpiceCharDeviceInstance * > > msg_item_compressed = try_compress_lz4(state, n, msg_item); > if (msg_item_compressed != NULL) { > - return (RedPipeItem *)msg_item_compressed; > - } > + return &msg_item_compressed->base; > + } > #endif > msg_item->uncompressed_data_size = n; > msg_item->buf_used = n; > @@ -340,52 +343,53 @@ static int > spicevmc_channel_client_handle_migrate_data(RedChannelClient *rcc, > return red_char_device_restore(state->chardev, &mig_data->base); > } > > -static int try_handle_compressed_msg(RedChannelClient *rcc, > SpiceMsgCompressedData *compressed_data_msg) { > - /*NOTE: *decompressed is free by the char-device */ > +static int try_handle_compressed_msg(RedChannelClient *rcc, > SpiceMsgCompressedData *compressed_data_msg) > +{ > + /* NOTE: *decompressed is free by the char-device */ > SpiceVmcState *state; > int decompressed_size; > - char *decompressed; > + uint8_t *decompressed; > > state = spicevmc_red_channel_client_get_state(rcc); > - decompressed = > (char*)spicevmc_red_channel_alloc_msg_rcv_buf(rcc,SPICE_MSGC_SPICEVMC_DATA, > - compressed_d > ata_msg->uncompressed_size); > + decompressed = > spicevmc_red_channel_alloc_msg_rcv_buf(rcc,SPICE_MSGC_SPICEVMC_DATA, > + compressed_data_msg > ->uncompressed_size); > switch (compressed_data_msg->type) { > #ifdef USE_LZ4 > case SPICE_DATA_COMPRESSION_TYPE_LZ4: > - decompressed_size = LZ4_decompress_safe ((char*)compressed_data_msg- > >compressed_data, > - decompressed, > + decompressed_size = LZ4_decompress_safe ((char *)compressed_data_msg- > >compressed_data, > + (char *)decompressed, > compressed_data_msg- > >compressed_size, > compressed_data_msg- > >uncompressed_size); > break; > #endif > - default: > - spice_warning("Invalid Compression Type"); > - spicevmc_red_channel_release_msg_rcv_buf(rcc,SPICE_MSGC_SPICEVMC_ > DATA, > - compressed_data_msg- > >uncompressed_size, > - (uint8_t*)decompressed); > - return FALSE; > - } > - if (decompressed_size != compressed_data_msg->uncompressed_size) { > - spice_warning("Decompression Error"); > - spicevmc_red_channel_release_msg_rcv_buf(rcc, > SPICE_MSGC_SPICEVMC_DATA, > - compressed_data_msg- > >uncompressed_size, > - (uint8_t*)decompressed); > - return FALSE; > - } > - spice_assert(state->recv_from_client_buf->buf == > (uint8_t*)decompressed); > - state->recv_from_client_buf->buf_used = decompressed_size; > - red_char_device_write_buffer_add(state->chardev, state- > >recv_from_client_buf); > - state->recv_from_client_buf = NULL; > - return TRUE; > - > + default: > + spice_warning("Invalid Compression Type"); > + spicevmc_red_channel_release_msg_rcv_buf(rcc,SPICE_MSGC_SPICEVMC_DATA > , > + compressed_data_msg- > >uncompressed_size, > + decompressed); > + return FALSE; > + } > + if (decompressed_size != compressed_data_msg->uncompressed_size) { > + spice_warning("Decompression Error"); > + spicevmc_red_channel_release_msg_rcv_buf(rcc, > SPICE_MSGC_SPICEVMC_DATA, > + compressed_data_msg- > >uncompressed_size, > + decompressed); > + return FALSE; > + } > + spice_assert(state->recv_from_client_buf->buf == decompressed); > + state->recv_from_client_buf->buf_used = decompressed_size; > + red_char_device_write_buffer_add(state->chardev, state- > >recv_from_client_buf); > + state->recv_from_client_buf = NULL; > + return TRUE; > } > > static int spicevmc_red_channel_client_handle_message_parsed(RedChannelClient > *rcc, > - uint32_t size, > - uint16_t type, > - void *msg) > -{ /*NOTE: *msg free by free() (when cb to > spicevmc_red_channel_release_msg_rcv_buf > - *with the compressed msg type)*/ > + uint32_t size, > + uint16_t type, > + void *msg) > +{ > + /* NOTE: *msg free by free() (when cb to > spicevmc_red_channel_release_msg_rcv_buf > + * with the compressed msg type) */ > SpiceVmcState *state; > SpiceCharDeviceInterface *sif; > > @@ -399,12 +403,11 @@ static int > spicevmc_red_channel_client_handle_message_parsed(RedChannelClient *r > red_char_device_write_buffer_add(state->chardev, state- > >recv_from_client_buf); > state->recv_from_client_buf = NULL; > break; > - case SPICE_MSGC_SPICEVMC_COMPRESSED_DATA: { > + case SPICE_MSGC_SPICEVMC_COMPRESSED_DATA: > if (!try_handle_compressed_msg(rcc, (SpiceMsgCompressedData*)msg)) { > return FALSE; > - } > - break; > - } > + } > + break; > case SPICE_MSGC_PORT_EVENT: > if (size != sizeof(uint8_t)) { > spice_warning("bad port event message size"); > @@ -472,7 +475,7 @@ static void > spicevmc_red_channel_send_data(RedChannelClient *rcc, > { > RedVmcPipeItem *i = SPICE_UPCAST(RedVmcPipeItem, item); > > - switch (i->type){ > + switch (i->type) { > case SPICE_DATA_COMPRESSION_TYPE_NONE: > red_channel_client_init_send_data(rcc, SPICE_MSG_SPICEVMC_DATA, > item); > spice_marshaller_add_ref(m, i->buf, i->buf_used); _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel