[Spice-devel] [PATCH 16/23] use a default release_item implementation in RedChannel

Jonathon Jongsma jjongsma at redhat.com
Tue May 17 20:06:55 UTC 2016


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

On Mon, 2016-05-16 at 14:31 +0100, Frediano Ziglio wrote:
> Avoid having to provide a lot of empty implementations
> 
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
>  server/cursor-channel.c  |  6 ------
>  server/display-channel.c |  6 ------
>  server/inputs-channel.c  |  7 -------
>  server/red-channel.c     | 10 +++++++++-
>  server/smartcard.c       |  7 -------
>  server/spicevmc.c        |  8 --------
>  6 files changed, 9 insertions(+), 35 deletions(-)
> 
> diff --git a/server/cursor-channel.c b/server/cursor-channel.c
> index b0fd95f..c0b2fda 100644
> --- a/server/cursor-channel.c
> +++ b/server/cursor-channel.c
> @@ -359,11 +359,6 @@ static void
> cursor_channel_hold_pipe_item(RedChannelClient *rcc, RedPipeItem *it
>      cursor_pipe_item_ref(cursor_pipe_item);
>  }
>  
> -static void cursor_channel_release_item(RedChannelClient *rcc, RedPipeItem
> *item, int item_pushed)
> -{
> -    red_pipe_item_unref(item);
> -}
> -
>  CursorChannel* cursor_channel_new(RedWorker *worker)
>  {
>      CursorChannel *cursor_channel;
> @@ -372,7 +367,6 @@ CursorChannel* cursor_channel_new(RedWorker *worker)
>          .on_disconnect =  cursor_channel_client_on_disconnect,
>          .send_item = cursor_channel_send_item,
>          .hold_item = cursor_channel_hold_pipe_item,
> -        .release_item = cursor_channel_release_item
>      };
>  
>      spice_info("create cursor channel");
> diff --git a/server/display-channel.c b/server/display-channel.c
> index b559a4e..5ef7920 100644
> --- a/server/display-channel.c
> +++ b/server/display-channel.c
> @@ -1979,11 +1979,6 @@ static void hold_item(RedChannelClient *rcc,
> RedPipeItem *item)
>      }
>  }
>  
> -static void release_item(RedChannelClient *rcc, RedPipeItem *item, int
> item_pushed)
> -{
> -    red_pipe_item_unref(item);
> -}
> -
>  static int handle_migrate_flush_mark(RedChannelClient *rcc)
>  {
>      DisplayChannel *display_channel = SPICE_CONTAINEROF(rcc->channel,
> DisplayChannel, common.base);
> @@ -2025,7 +2020,6 @@ DisplayChannel* display_channel_new(SpiceServer *reds,
> RedWorker *worker,
>          .on_disconnect = on_disconnect,
>          .send_item = send_item,
>          .hold_item = hold_item,
> -        .release_item = release_item,
>          .handle_migrate_flush_mark = handle_migrate_flush_mark,
>          .handle_migrate_data = handle_migrate_data,
>          .handle_migrate_data_get_serial = handle_migrate_data_get_serial
> diff --git a/server/inputs-channel.c b/server/inputs-channel.c
> index 0ce12de..a3c9fb2 100644
> --- a/server/inputs-channel.c
> +++ b/server/inputs-channel.c
> @@ -254,12 +254,6 @@ static void
> inputs_channel_send_migrate_data(RedChannelClient *rcc,
>      spice_marshaller_add_uint16(m, icc->motion_count);
>  }
>  
> -static void inputs_channel_release_pipe_item(RedChannelClient *rcc,
> -    RedPipeItem *base, int item_pushed)
> -{
> -    free(base);
> -}
> -
>  static void inputs_channel_send_item(RedChannelClient *rcc, RedPipeItem
> *base)
>  {
>      SpiceMarshaller *m = red_channel_client_get_marshaller(rcc);
> @@ -627,7 +621,6 @@ InputsChannel* inputs_channel_new(RedsState *reds)
>      channel_cbs.on_disconnect = inputs_channel_on_disconnect;
>      channel_cbs.send_item = inputs_channel_send_item;
>      channel_cbs.hold_item = inputs_channel_hold_pipe_item;
> -    channel_cbs.release_item = inputs_channel_release_pipe_item;
>      channel_cbs.alloc_recv_buf = inputs_channel_alloc_msg_rcv_buf;
>      channel_cbs.release_recv_buf = inputs_channel_release_msg_rcv_buf;
>      channel_cbs.handle_migrate_data = inputs_channel_handle_migrate_data;
> diff --git a/server/red-channel.c b/server/red-channel.c
> index a99c6c6..0d35fc0 100644
> --- a/server/red-channel.c
> +++ b/server/red-channel.c
> @@ -1016,6 +1016,11 @@ void
> red_channel_client_default_migrate(RedChannelClient *rcc)
>      red_channel_client_pipe_add_type(rcc, RED_PIPE_ITEM_TYPE_MIGRATE);
>  }
>  
> +static void red_channel_release_item(RedChannelClient *rcc, RedPipeItem
> *item, int item_pushed)
> +{
> +    red_pipe_item_unref(item);
> +}
> +
>  RedChannel *red_channel_create(int size,
>                                 RedsState *reds,
>                                 const SpiceCoreInterfaceInternal *core,
> @@ -1030,7 +1035,7 @@ RedChannel *red_channel_create(int size,
>  
>      spice_assert(size >= sizeof(*channel));
>      spice_assert(channel_cbs->config_socket && channel_cbs->on_disconnect &&
> handle_message &&
> -           channel_cbs->alloc_recv_buf && channel_cbs->release_item);
> +           channel_cbs->alloc_recv_buf);
>      spice_assert(channel_cbs->handle_migrate_data ||
>                   !(migration_flags & SPICE_MIGRATE_NEED_DATA_TRANSFER));
>      channel = spice_malloc0(size);
> @@ -1040,6 +1045,9 @@ RedChannel *red_channel_create(int size,
>      channel->handle_acks = handle_acks;
>      channel->migration_flags = migration_flags;
>      memcpy(&channel->channel_cbs, channel_cbs, sizeof(ChannelCbs));
> +    if (!channel->channel_cbs.release_item) {
> +        channel->channel_cbs.release_item = red_channel_release_item;
> +    }
>  
>      channel->reds = reds;
>      channel->core = core;
> diff --git a/server/smartcard.c b/server/smartcard.c
> index c8e9eb0..a75f01c 100644
> --- a/server/smartcard.c
> +++ b/server/smartcard.c
> @@ -504,12 +504,6 @@ static void smartcard_channel_send_item(RedChannelClient
> *rcc, RedPipeItem *item
>      red_channel_client_begin_send_message(rcc);
>  }
>  
> -static void smartcard_channel_release_pipe_item(RedChannelClient *rcc,
> -                                      RedPipeItem *item, int item_pushed)
> -{
> -    red_pipe_item_unref(item);
> -}
> -
>  static void smartcard_channel_on_disconnect(RedChannelClient *rcc)
>  {
>      SmartCardChannelClient *scc = SPICE_CONTAINEROF(rcc,
> SmartCardChannelClient, base);
> @@ -792,7 +786,6 @@ static void smartcard_init(RedsState *reds)
>      channel_cbs.on_disconnect = smartcard_channel_on_disconnect;
>      channel_cbs.send_item = smartcard_channel_send_item;
>      channel_cbs.hold_item = smartcard_channel_hold_pipe_item;
> -    channel_cbs.release_item = smartcard_channel_release_pipe_item;
>      channel_cbs.alloc_recv_buf = smartcard_channel_alloc_msg_rcv_buf;
>      channel_cbs.release_recv_buf = smartcard_channel_release_msg_rcv_buf;
>      channel_cbs.handle_migrate_flush_mark =
> smartcard_channel_client_handle_migrate_flush_mark;
> diff --git a/server/spicevmc.c b/server/spicevmc.c
> index 5724023..1e9406e 100644
> --- a/server/spicevmc.c
> +++ b/server/spicevmc.c
> @@ -437,13 +437,6 @@ static void
> spicevmc_red_channel_send_item(RedChannelClient *rcc,
>      red_channel_client_begin_send_message(rcc);
>  }
>  
> -static void spicevmc_red_channel_release_pipe_item(RedChannelClient *rcc,
> -                                                   RedPipeItem *item,
> -                                                   int item_pushed)
> -{
> -    red_pipe_item_unref(item);
> -}
> -
>  static void spicevmc_connect(RedChannel *channel, RedClient *client,
>      RedsStream *stream, int migration, int num_common_caps,
>      uint32_t *common_caps, int num_caps, uint32_t *caps)
> @@ -505,7 +498,6 @@ RedCharDevice *spicevmc_device_connect(RedsState *reds,
>      channel_cbs.on_disconnect = spicevmc_red_channel_client_on_disconnect;
>      channel_cbs.send_item = spicevmc_red_channel_send_item;
>      channel_cbs.hold_item = spicevmc_red_channel_hold_pipe_item;
> -    channel_cbs.release_item = spicevmc_red_channel_release_pipe_item;
>      channel_cbs.alloc_recv_buf = spicevmc_red_channel_alloc_msg_rcv_buf;
>      channel_cbs.release_recv_buf = spicevmc_red_channel_release_msg_rcv_buf;
>      channel_cbs.handle_migrate_flush_mark =
> spicevmc_channel_client_handle_migrate_flush_mark;


More information about the Spice-devel mailing list