[Spice-devel] [PATCH 09/11] reduce casts to RedPipeItem and RingItem

Jonathon Jongsma jjongsma at redhat.com
Fri May 20 20:37:10 UTC 2016


Acked-by: Jonathon Jongsma <jjongsma at redhat.com>

On Fri, 2016-05-20 at 14:01 +0100, Frediano Ziglio wrote:
> Make code more type safe. This allow to move or delete structure
> fields more safely
> 
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
>  server/dcc.c       | 6 +++---
>  server/reds.c      | 2 +-
>  server/smartcard.c | 4 ++--
>  server/spicevmc.c  | 5 ++---
>  server/stream.c    | 2 +-
>  5 files changed, 9 insertions(+), 10 deletions(-)
> 
> diff --git a/server/dcc.c b/server/dcc.c
> index 33357cd..20a8f11 100644
> --- a/server/dcc.c
> +++ b/server/dcc.c
> @@ -78,7 +78,7 @@ int
> dcc_clear_surface_drawables_from_pipe(DisplayChannelClient *dcc, int surface
>      rcc = RED_CHANNEL_CLIENT(dcc);
>      ring = &rcc->pipe;
>      item = (RedPipeItem *) ring;
> -    while ((item = (RedPipeItem *)ring_next(ring, (RingItem *)item))) {
> +    while ((item = (RedPipeItem *)ring_next(ring, &item->link))) {
>          Drawable *drawable;
>          RedDrawablePipeItem *dpi = NULL;
>          int depend_found = FALSE;
> @@ -94,7 +94,7 @@ int
> dcc_clear_surface_drawables_from_pipe(DisplayChannelClient *dcc, int surface
>  
>          if (drawable->surface_id == surface_id) {
>              RedPipeItem *tmp_item = item;
> -            item = (RedPipeItem *)ring_prev(ring, (RingItem *)item);
> +            item = (RedPipeItem *)ring_prev(ring, &item->link);
>              red_channel_client_pipe_remove_and_release(rcc, tmp_item);
>              if (!item) {
>                  item = (RedPipeItem *)ring;
> @@ -514,7 +514,7 @@ void dcc_stream_agent_clip(DisplayChannelClient* dcc,
> StreamAgent *agent)
>      item->rects->num_rects = n_rects;
>      region_ret_rects(&agent->clip, item->rects->rects, n_rects);
>  
> -    red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), (RedPipeItem
> *)item);
> +    red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), &item->base);
>  }
>  
>  static void red_monitors_config_item_free(RedPipeItem *base)
> diff --git a/server/reds.c b/server/reds.c
> index fa9a79e..90911b4 100644
> --- a/server/reds.c
> +++ b/server/reds.c
> @@ -888,7 +888,7 @@ static RedPipeItem
> *vdi_port_read_one_msg_from_device(SpiceCharDeviceInstance *s
>                  dev->priv->read_state = VDI_PORT_READ_STATE_GET_BUFF;
>              }
>              if (vdi_port_read_buf_process(reds->agent_dev, dispatch_buf,
> &error)) {
> -                return (RedPipeItem *)dispatch_buf;
> +                return &dispatch_buf->base;
>              } else {
>                  if (error) {
>                      reds_agent_remove(reds);
> diff --git a/server/smartcard.c b/server/smartcard.c
> index 2acddcf..9280038 100644
> --- a/server/smartcard.c
> +++ b/server/smartcard.c
> @@ -160,7 +160,7 @@ static RedPipeItem
> *smartcard_read_msg_from_device(SpiceCharDeviceInstance *sin,
>          dev->priv->buf_pos = dev->priv->buf;
>          dev->priv->buf_used = remaining;
>          if (msg_to_client) {
> -            return (RedPipeItem *)msg_to_client;
> +            return &msg_to_client->base;
>          }
>      }
>      return NULL;
> @@ -172,7 +172,7 @@ static void smartcard_send_msg_to_client(RedPipeItem *msg,
>  {
>      RedCharDeviceSmartcard *dev = opaque;
>      spice_assert(dev->priv->scc && dev->priv->scc->base.client == client);
> -    smartcard_channel_client_pipe_add_push(&dev->priv->scc->base,
> (RedPipeItem *)msg);
> +    smartcard_channel_client_pipe_add_push(&dev->priv->scc->base, msg);
>  
>  }
>  
> diff --git a/server/spicevmc.c b/server/spicevmc.c
> index f46b9e5..54c4f42 100644
> --- a/server/spicevmc.c
> +++ b/server/spicevmc.c
> @@ -133,7 +133,7 @@ static RedPipeItem
> *spicevmc_chardev_read_msg_from_dev(SpiceCharDeviceInstance *
>      if (n > 0) {
>          spice_debug("read from dev %d", n);
>          msg_item->buf_used = n;
> -        return (RedPipeItem *)msg_item;
> +        return &msg_item->base;
>      } else {
>          state->pipe_item = msg_item;
>          return NULL;
> @@ -145,11 +145,10 @@ static void
> spicevmc_chardev_send_msg_to_client(RedPipeItem *msg,
>                                                  void *opaque)
>  {
>      SpiceVmcState *state = opaque;
> -    RedVmcPipeItem *vmc_msg = SPICE_CONTAINEROF(msg, RedVmcPipeItem, base);
>  
>      spice_assert(state->rcc->client == client);
>      red_pipe_item_ref(msg);
> -    red_channel_client_pipe_add_push(state->rcc, (RedPipeItem *)vmc_msg);
> +    red_channel_client_pipe_add_push(state->rcc, msg);
>  }
>  
>  static SpiceVmcState *spicevmc_red_channel_client_get_state(RedChannelClient
> *rcc)
> diff --git a/server/stream.c b/server/stream.c
> index 74df254..be92289 100644
> --- a/server/stream.c
> +++ b/server/stream.c
> @@ -177,7 +177,7 @@ void red_stream_clip_item_free(RedPipeItem *base)
>  RedStreamClipItem *red_stream_clip_item_new(StreamAgent *agent)
>  {
>      RedStreamClipItem *item = spice_new(RedStreamClipItem, 1);
> -    red_pipe_item_init_full((RedPipeItem *)item,
> RED_PIPE_ITEM_TYPE_STREAM_CLIP,
> +    red_pipe_item_init_full(&item->base, RED_PIPE_ITEM_TYPE_STREAM_CLIP,
>                              red_stream_clip_item_free);
>  
>      item->stream_agent = agent;


More information about the Spice-devel mailing list