[Spice-devel] [PATCH spice-server 1/2] red-channel-client: Introduce some helpers to update watch event mask

Frediano Ziglio fziglio at redhat.com
Mon Sep 11 15:41:17 UTC 2017


> 
> Why ?
> 
> Christophe

for 2/2.

Maybe I should add 

"These helpers will be reused by following patch."

?

Frediano

> 
> On Mon, Sep 11, 2017 at 01:29:05PM +0100, Frediano Ziglio wrote:
> > Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> > ---
> >  server/red-channel-client.c | 27 ++++++++++++++++-----------
> >  1 file changed, 16 insertions(+), 11 deletions(-)
> > 
> > diff --git a/server/red-channel-client.c b/server/red-channel-client.c
> > index d9333ba6f..eab1d593d 100644
> > --- a/server/red-channel-client.c
> > +++ b/server/red-channel-client.c
> > @@ -45,6 +45,8 @@
> >  #define IOV_MAX 1024
> >  #endif
> >  
> > +#define SPICE_WATCH_EVENTS_READ_WRITE
> > (SPICE_WATCH_EVENT_READ|SPICE_WATCH_EVENT_WRITE)
> > +
> >  typedef struct SpiceDataHeaderOpaque SpiceDataHeaderOpaque;
> >  
> >  typedef uint16_t (*get_msg_type_proc)(SpiceDataHeaderOpaque *header);
> > @@ -972,6 +974,16 @@ cleanup:
> >      return local_error == NULL;
> >  }
> >  
> > +static void
> > +red_channel_client_watch_update_mask(RedChannelClient *rcc, int
> > event_mask)
> > +{
> > +    if (rcc->priv->stream->watch) {
> > +        SpiceCoreInterfaceInternal *core;
> > +        core = red_channel_get_core_interface(rcc->priv->channel);
> > +        core->watch_update_mask(core, rcc->priv->stream->watch,
> > event_mask);
> > +    }
> > +}
> > +
> >  static void red_channel_client_seamless_migration_done(RedChannelClient
> >  *rcc)
> >  {
> >      rcc->priv->wait_migrate_data = FALSE;
> > @@ -1315,12 +1327,8 @@ void red_channel_client_push(RedChannelClient *rcc)
> >      while ((pipe_item = red_channel_client_pipe_item_get(rcc))) {
> >          red_channel_client_send_item(rcc, pipe_item);
> >      }
> > -    if (red_channel_client_no_item_being_sent(rcc) &&
> > g_queue_is_empty(&rcc->priv->pipe)
> > -        && rcc->priv->stream->watch) {
> > -        SpiceCoreInterfaceInternal *core;
> > -        core = red_channel_get_core_interface(rcc->priv->channel);
> > -        core->watch_update_mask(core, rcc->priv->stream->watch,
> > -                                SPICE_WATCH_EVENT_READ);
> > +    if (red_channel_client_no_item_being_sent(rcc) &&
> > g_queue_is_empty(&rcc->priv->pipe)) {
> > +        red_channel_client_watch_update_mask(rcc, SPICE_WATCH_EVENT_READ);
> >      }
> >      rcc->priv->during_send = FALSE;
> >      g_object_unref(rcc);
> > @@ -1533,11 +1541,8 @@ static inline gboolean
> > prepare_pipe_add(RedChannelClient *rcc, RedPipeItem *item
> >          red_pipe_item_unref(item);
> >          return FALSE;
> >      }
> > -    if (g_queue_is_empty(&rcc->priv->pipe) && rcc->priv->stream->watch) {
> > -        SpiceCoreInterfaceInternal *core;
> > -        core = red_channel_get_core_interface(rcc->priv->channel);
> > -        core->watch_update_mask(core, rcc->priv->stream->watch,
> > -                                SPICE_WATCH_EVENT_READ |
> > SPICE_WATCH_EVENT_WRITE);
> > +    if (g_queue_is_empty(&rcc->priv->pipe)) {
> > +        red_channel_client_watch_update_mask(rcc,
> > SPICE_WATCH_EVENTS_READ_WRITE);
> >      }
> >      return TRUE;
> >  }


More information about the Spice-devel mailing list