> > On Mon, 2016-02-15 at 16:01 +0000, Frediano Ziglio wrote: > > From: Jonathon Jongsma <jjongsma@xxxxxxxxxx> > > > > 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@xxxxxxxxxx> > _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel