[Spice-devel] [PATCH spice-server v2 1/6] red-channel-client: Remove push call where not necessary

Christophe Fergeau cfergeau at redhat.com
Mon Sep 4 14:02:33 UTC 2017


On Mon, Sep 04, 2017 at 12:02:05PM +0100, Frediano Ziglio wrote:
> Now the push is done automatically when a PipeItem is added
> (cfr commit 5c460de1a3972b7cf2b9b2944d0b500c3affc363
> "worker: push data when clients can receive them"),
> forcing a push cause only network fragmentation and is required
> only if you are handling data in a loop instead of using the
> default loop.

in a loop instead of using the default loop? Are you talking about
mainloops? I would assume mainloops, in which case I would phrase things
as "is required only if you are handling data in the non-default
mainloop (eg from a RedWorker thread)". But this does not explain why we
need to add a _push to red_channel_client_push_ping(), is the timer it
goes with only used by RedWorker?

Christophe

> 
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
>  server/main-channel.c       | 4 ++--
>  server/red-channel-client.c | 3 +--
>  2 files changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/server/main-channel.c b/server/main-channel.c
> index c30374c3..e72e5d79 100644
> --- a/server/main-channel.c
> +++ b/server/main-channel.c
> @@ -81,7 +81,7 @@ void main_channel_push_mouse_mode(MainChannel *main_chan, SpiceMouseMode current
>          .is_client_mouse_allowed=is_client_mouse_allowed,
>      };
>  
> -    red_channel_pipes_new_add_push(RED_CHANNEL(main_chan),
> +    red_channel_pipes_new_add(RED_CHANNEL(main_chan),
>          main_mouse_mode_item_new, &info);
>  }
>  
> @@ -140,7 +140,7 @@ void main_channel_push_multi_media_time(MainChannel *main_chan, uint32_t time)
>          .time = time,
>      };
>  
> -    red_channel_pipes_new_add_push(RED_CHANNEL(main_chan),
> +    red_channel_pipes_new_add(RED_CHANNEL(main_chan),
>          main_multi_media_time_item_new, &info);
>  }
>  
> diff --git a/server/red-channel-client.c b/server/red-channel-client.c
> index 2612a6db..c45988b9 100644
> --- a/server/red-channel-client.c
> +++ b/server/red-channel-client.c
> @@ -675,6 +675,7 @@ static void red_channel_client_push_ping(RedChannelClient *rcc)
>      rcc->priv->latency_monitor.id = rand();
>      red_channel_client_pipe_add_type(rcc, RED_PIPE_ITEM_TYPE_PING);
>      red_channel_client_pipe_add_type(rcc, RED_PIPE_ITEM_TYPE_PING);
> +    red_channel_client_push(rcc);
>  }
>  
>  static void red_channel_client_ping_timer(void *opaque)
> @@ -1590,7 +1591,6 @@ void red_channel_client_pipe_add_type(RedChannelClient *rcc, int pipe_item_type)
>  
>      red_pipe_item_init(item, pipe_item_type);
>      red_channel_client_pipe_add(rcc, item);
> -    red_channel_client_push(rcc);
>  }
>  
>  void red_channel_client_pipe_add_empty_msg(RedChannelClient *rcc, int msg_type)
> @@ -1600,7 +1600,6 @@ void red_channel_client_pipe_add_empty_msg(RedChannelClient *rcc, int msg_type)
>      red_pipe_item_init(&item->base, RED_PIPE_ITEM_TYPE_EMPTY_MSG);
>      item->msg = msg_type;
>      red_channel_client_pipe_add(rcc, &item->base);
> -    red_channel_client_push(rcc);
>  }
>  
>  gboolean red_channel_client_pipe_is_empty(RedChannelClient *rcc)
> -- 
> 2.13.5
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel


More information about the Spice-devel mailing list