[Spice-devel] [PATCH 3/5] Add red_channel_client_(set|is)_destroying()

Frediano Ziglio fziglio at redhat.com
Tue Aug 30 16:05:11 UTC 2016


> 
> Encapsulate the structure a bit more and avoid poking into it from other
> class implementations. Getting ready to split RedChannelClient out to a
> separate file.
> ---
>  server/red-channel.c | 12 +++++++++++-
>  server/red-channel.h |  2 ++
>  server/spicevmc.c    |  2 +-
>  3 files changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/server/red-channel.c b/server/red-channel.c
> index 615c2a3..870296c 100644
> --- a/server/red-channel.c
> +++ b/server/red-channel.c
> @@ -2111,7 +2111,7 @@ void red_client_destroy(RedClient *client)
>          // is not synchronous.
>          rcc = link->data;
>          channel = red_channel_client_get_channel(rcc);
> -        rcc->destroying = 1;
> +        red_channel_client_set_destroying(rcc);
>          // some channels may be in other threads. However we currently
>          // assume disconnect is synchronous (we changed the dispatcher
>          // to wait for disconnection)
> @@ -2448,3 +2448,13 @@ RedChannel*
> red_channel_client_get_channel(RedChannelClient *rcc)
>  {
>      return rcc->channel;
>  }
> +
> +gboolean red_channel_client_is_destroying(RedChannelClient *rcc)
> +{
> +    return rcc->destroying;
> +}
> +
> +void red_channel_client_set_destroying(RedChannelClient *rcc)
> +{
> +    rcc->destroying = TRUE;
> +}
> diff --git a/server/red-channel.h b/server/red-channel.h
> index 039ac09..e528d08 100644
> --- a/server/red-channel.h
> +++ b/server/red-channel.h
> @@ -629,5 +629,7 @@ int red_channel_wait_all_sent(RedChannel *channel,
>                                int64_t timeout);
>  void red_channel_client_disconnect_if_pending_send(RedChannelClient *rcc);
>  RedChannel* red_channel_client_get_channel(RedChannelClient *rcc);
> +gboolean red_channel_client_is_destroying(RedChannelClient *rcc);
> +void red_channel_client_set_destroying(RedChannelClient *rcc);
>  
>  #endif
> diff --git a/server/spicevmc.c b/server/spicevmc.c
> index 5e310a6..4e9dd0d 100644
> --- a/server/spicevmc.c
> +++ b/server/spicevmc.c
> @@ -306,7 +306,7 @@ static void
> spicevmc_red_channel_client_on_disconnect(RedChannelClient *rcc)
>  
>      /* Don't destroy the rcc if it is already being destroyed, as then
>         red_client_destroy/red_channel_client_destroy will already do this!
>         */
> -    if (!rcc->destroying)
> +    if (!red_channel_client_is_destroying(rcc))
>          red_channel_client_destroy(rcc);
>  
>      state->rcc = NULL;

Acked-by: Frediano Ziglio <fziglio at redhat.com>

Frediano


More information about the Spice-devel mailing list