[Spice-devel] [PATCH 13/18] Add red_channel_get_server()

Frediano Ziglio fziglio at redhat.com
Tue Feb 16 10:44:59 UTC 2016


> 
> On Mon, 2016-02-15 at 16:01 +0000, Frediano Ziglio wrote:
> > From: Jonathon Jongsma <jjongsma at redhat.com>
> > 
> > Instead of poking into the internals of the RedChannel, provide an
> > accessor.
> > ---
> >  server/inputs-channel.c | 4 ++--
> >  server/main-channel.c   | 2 +-
> >  server/red-channel.c    | 5 +++++
> >  server/red-channel.h    | 5 +++--
> >  4 files changed, 11 insertions(+), 5 deletions(-)
> > 
> > diff --git a/server/inputs-channel.c b/server/inputs-channel.c
> > index bb1c5ea..677d071 100644
> > --- a/server/inputs-channel.c
> > +++ b/server/inputs-channel.c
> > @@ -305,7 +305,7 @@ static int
> > inputs_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, ui
> >      InputsChannel *inputs_channel = (InputsChannel *)rcc->channel;
> >      InputsChannelClient *icc = (InputsChannelClient *)rcc;
> >      uint32_t i;
> > -    RedsState *reds = inputs_channel->base.reds;
> > +    RedsState *reds =
> > red_channel_get_server((RedChannel*)inputs_channel);
> >  

I prefer the more type safe version &inputs_channel->base

Frediano

> >      switch (type) {
> >      case SPICE_MSGC_INPUTS_KEY_DOWN: {
> > @@ -676,7 +676,7 @@ int inputs_channel_set_keyboard(InputsChannel
> > *inputs, SpiceKbdInstance *keyboar
> >          return -1;
> >      }
> >      inputs->keyboard = keyboard;
> > -    inputs->keyboard->st = spice_kbd_state_new(inputs->base.reds);
> > +    inputs->keyboard->st =
> > spice_kbd_state_new(red_channel_get_server((RedChannel*)inputs));
> >      return 0;
> >  }
> >  
> > diff --git a/server/main-channel.c b/server/main-channel.c
> > index f2b9fd7..6ea47cf 100644
> > --- a/server/main-channel.c
> > +++ b/server/main-channel.c
> > @@ -1088,7 +1088,7 @@ static MainChannelClient
> > *main_channel_client_create(MainChannel *main_chan, Red
> >      mcc->connection_id = connection_id;
> >      mcc->bitrate_per_sec = ~0;
> >  #ifdef RED_STATISTICS
> > -    core = reds_get_core_interface(main_chan->base.reds);
> > +    core =
> > reds_get_core_interface(red_channel_get_server((RedChannel*)main_chan
> > ));
> >      if (!(mcc->ping_timer = core->timer_add(core, ping_timer_cb,
> > NULL))) {
> >          spice_error("ping timer create failed");
> >      }
> > diff --git a/server/red-channel.c b/server/red-channel.c
> > index d614955..757bb6e 100644
> > --- a/server/red-channel.c
> > +++ b/server/red-channel.c
> > @@ -2453,3 +2453,8 @@ void
> > red_channel_client_disconnect_if_pending_send(RedChannelClient *rcc)
> >          spice_assert(red_channel_client_no_item_being_sent(rcc));
> >      }
> >  }
> > +
> > +RedsState* red_channel_get_server(RedChannel *channel)
> > +{
> > +    return channel->reds;
> > +}
> > diff --git a/server/red-channel.h b/server/red-channel.h
> > index 26bd3f9..2d61bc5 100644
> > --- a/server/red-channel.h
> > +++ b/server/red-channel.h
> > @@ -47,6 +47,8 @@
> >     The intention is to move towards one channel interface gradually.
> >     At the final stage, this interface shouldn't be exposed. Only
> > RedChannel will use it. */
> >  
> > +struct RedsState;
> > +
> >  typedef struct SpiceDataHeaderOpaque SpiceDataHeaderOpaque;
> >  
> >  typedef uint16_t (*get_msg_type_proc)(SpiceDataHeaderOpaque
> > *header);
> > @@ -565,8 +567,7 @@ uint32_t red_channel_sum_pipes_size(RedChannel
> > *channel);
> >  typedef void (*channel_client_callback)(RedChannelClient *rcc);
> >  typedef void (*channel_client_callback_data)(RedChannelClient *rcc,
> > void *data);
> >  void red_channel_apply_clients(RedChannel *channel,
> > channel_client_callback v);
> > -
> > -struct RedsState;
> > +struct RedsState* red_channel_get_server(RedChannel *channel);
> >  
> >  struct RedClient {
> >      struct RedsState *reds;
> 
> Acked-by: Fabiano Fidêncio <fidencio at redhat.com>
> 


More information about the Spice-devel mailing list