> > Encapsulate private data and prepare for port to GObject. > --- > Changes in v2: > - Fixed leak of priv by using 1-element array trick > > server/inputs-channel-client.c | 29 +++++++++++++++++++---------- > 1 file changed, 19 insertions(+), 10 deletions(-) > > diff --git a/server/inputs-channel-client.c b/server/inputs-channel-client.c > index ce21b9c..6e352dc 100644 > --- a/server/inputs-channel-client.c > +++ b/server/inputs-channel-client.c > @@ -23,11 +23,19 @@ > #include "migration-protocol.h" > #include "red-channel-client.h" > > -struct InputsChannelClient { > - RedChannelClient base; > +typedef struct InputsChannelClientPrivate InputsChannelClientPrivate; > +struct InputsChannelClientPrivate > +{ > uint16_t motion_count; > }; > > +struct InputsChannelClient > +{ > + RedChannelClient base; > + > + InputsChannelClientPrivate priv[1]; > +}; > + > RedChannelClient* inputs_channel_client_create(RedChannel *channel, > RedClient *client, > RedsStream *stream, > @@ -45,8 +53,9 @@ RedChannelClient* inputs_channel_client_create(RedChannel > *channel, > num_common_caps, > common_caps, > num_caps, > caps); > - if (icc) > - icc->motion_count = 0; > + if (icc) { > + icc->priv->motion_count = 0; > + } > return &icc->base; > } > > @@ -60,16 +69,16 @@ void > inputs_channel_client_send_migrate_data(RedChannelClient *rcc, > > spice_marshaller_add_uint32(m, SPICE_MIGRATE_DATA_INPUTS_MAGIC); > spice_marshaller_add_uint32(m, SPICE_MIGRATE_DATA_INPUTS_VERSION); > - spice_marshaller_add_uint16(m, icc->motion_count); > + spice_marshaller_add_uint16(m, icc->priv->motion_count); > } > > void inputs_channel_client_handle_migrate_data(InputsChannelClient *icc, > uint16_t motion_count) > { > - icc->motion_count = motion_count; > + icc->priv->motion_count = motion_count; > > - for (; icc->motion_count >= SPICE_INPUT_MOTION_ACK_BUNCH; > - icc->motion_count -= SPICE_INPUT_MOTION_ACK_BUNCH) { > + for (; icc->priv->motion_count >= SPICE_INPUT_MOTION_ACK_BUNCH; > + icc->priv->motion_count -= SPICE_INPUT_MOTION_ACK_BUNCH) { > red_channel_client_pipe_add_type(&icc->base, > RED_PIPE_ITEM_MOUSE_MOTION_ACK); > } > } > @@ -78,9 +87,9 @@ void > inputs_channel_client_on_mouse_motion(InputsChannelClient *icc) > { > InputsChannel *inputs_channel = (InputsChannel > *)red_channel_client_get_channel(&icc->base); > > - if (++icc->motion_count % SPICE_INPUT_MOTION_ACK_BUNCH == 0 && > + if (++icc->priv->motion_count % SPICE_INPUT_MOTION_ACK_BUNCH == 0 && > !inputs_channel_is_src_during_migrate(inputs_channel)) { > red_channel_client_pipe_add_type(&icc->base, > RED_PIPE_ITEM_MOUSE_MOTION_ACK); > - icc->motion_count = 0; > + icc->priv->motion_count = 0; > } > } Acked-by: Frediano Ziglio <fziglio@xxxxxxxxxx Frediano _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel