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

Christophe Fergeau cfergeau at redhat.com
Mon Sep 11 16:05:23 UTC 2017


On Mon, Sep 11, 2017 at 11:41:17AM -0400, Frediano Ziglio wrote:
> 
> > 
> > Why ?
> > 
> > Christophe
> 
> for 2/2.
> 
> Maybe I should add 
> 
> "These helpers will be reused by following patch."

Yup, something like that would be useful, thanks.

> > 
> > 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)

I would not add this here, this is not directly related to that patch.

> > > +
> > >  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);
> > > +    }

In general, I find code formatted like below easier to read:

+    SpiceCoreInterfaceInternal *core;
+    if (!rcc->priv->stream->watch) {
+        return;
+    }

+    core = red_channel_get_core_interface(rcc->priv->channel);
+    core->watch_update_mask(core, rcc->priv->stream->watch, event_mask);
}


Acked-by: Christophe Fergeau <cfergeau at redhat.com>


> > > +}
> > > +
> > >  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