[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