Acked-by: Jonathon Jongsma <jjongsma@xxxxxxxxxx> On Mon, 2016-03-14 at 18:10 +0100, Christophe Fergeau wrote: > It's always called at the same time as red_channel_register_client_cbs() > and the data is used by the callbacks, so we can pass the data as an > argument to red_channel_register_client_cbs(). > --- > server/inputs-channel.c | 2 +- > server/main-channel.c | 2 +- > server/red-channel.c | 13 ++++--------- > server/red-channel.h | 3 +-- > server/red-qxl.c | 6 ++---- > server/smartcard.c | 2 +- > server/sound.c | 6 ++---- > server/spicevmc.c | 2 +- > 8 files changed, 13 insertions(+), 23 deletions(-) > > diff --git a/server/inputs-channel.c b/server/inputs-channel.c > index ca8166d..45e0a8f 100644 > --- a/server/inputs-channel.c > +++ b/server/inputs-channel.c > @@ -650,7 +650,7 @@ InputsChannel* inputs_channel_new(RedsState *reds) > > client_cbs.connect = inputs_connect; > client_cbs.migrate = inputs_migrate; > - red_channel_register_client_cbs(&inputs->base, &client_cbs); > + red_channel_register_client_cbs(&inputs->base, &client_cbs, NULL); > > red_channel_set_cap(&inputs->base, SPICE_INPUTS_CAP_KEY_SCANCODE); > reds_register_channel(reds, &inputs->base); > diff --git a/server/main-channel.c b/server/main-channel.c > index 9901135..a9d0ce1 100644 > --- a/server/main-channel.c > +++ b/server/main-channel.c > @@ -1184,7 +1184,7 @@ MainChannel* main_channel_new(RedsState *reds) > red_channel_set_cap(channel, SPICE_MAIN_CAP_SEAMLESS_MIGRATE); > > client_cbs.migrate = main_channel_client_migrate; > - red_channel_register_client_cbs(channel, &client_cbs); > + red_channel_register_client_cbs(channel, &client_cbs, NULL); > > return (MainChannel *)channel; > } > diff --git a/server/red-channel.c b/server/red-channel.c > index 3909c63..d8f1d27 100644 > --- a/server/red-channel.c > +++ b/server/red-channel.c > @@ -1064,7 +1064,7 @@ RedChannel *red_channel_create(int size, > client_cbs.disconnect = red_channel_client_default_disconnect; > client_cbs.migrate = red_channel_client_default_migrate; > > - red_channel_register_client_cbs(channel, &client_cbs); > + red_channel_register_client_cbs(channel, &client_cbs, NULL); > red_channel_set_common_cap(channel, SPICE_COMMON_CAP_MINI_HEADER); > > channel->thread_id = pthread_self(); > @@ -1115,7 +1115,7 @@ RedChannel *red_channel_create_dummy(int size, RedsState > *reds, uint32_t type, u > client_cbs.disconnect = red_channel_client_default_disconnect; > client_cbs.migrate = red_channel_client_default_migrate; > > - red_channel_register_client_cbs(channel, &client_cbs); > + red_channel_register_client_cbs(channel, &client_cbs, NULL); > red_channel_set_common_cap(channel, SPICE_COMMON_CAP_MINI_HEADER); > > channel->thread_id = pthread_self(); > @@ -1171,7 +1171,7 @@ void red_channel_set_stat_node(RedChannel *channel, > StatNodeRef stat) > #endif > } > > -void red_channel_register_client_cbs(RedChannel *channel, const ClientCbs > *client_cbs) > +void red_channel_register_client_cbs(RedChannel *channel, const ClientCbs > *client_cbs, gpointer cbs_data) > { > spice_assert(client_cbs->connect || channel->type == SPICE_CHANNEL_MAIN); > channel->client_cbs.connect = client_cbs->connect; > @@ -1183,6 +1183,7 @@ void red_channel_register_client_cbs(RedChannel > *channel, const ClientCbs *clien > if (client_cbs->migrate) { > channel->client_cbs.migrate = client_cbs->migrate; > } > + channel->data = cbs_data; > } > > int test_capability(const uint32_t *caps, int num_caps, uint32_t cap) > @@ -1217,12 +1218,6 @@ void red_channel_set_cap(RedChannel *channel, uint32_t > cap) > add_capability(&channel->local_caps.caps, &channel->local_caps.num_caps, > cap); > } > > -void red_channel_set_data(RedChannel *channel, void *data) > -{ > - spice_assert(channel); > - channel->data = data; > -} > - > static void red_channel_ref(RedChannel *channel) > { > channel->refs++; > diff --git a/server/red-channel.h b/server/red-channel.h > index 7c1c95d..26304bf 100644 > --- a/server/red-channel.h > +++ b/server/red-channel.h > @@ -383,11 +383,10 @@ RedChannel *red_channel_create_parser(int size, > uint32_t migration_flags); > void red_channel_set_stat_node(RedChannel *channel, StatNodeRef stat); > > -void red_channel_register_client_cbs(RedChannel *channel, const ClientCbs > *client_cbs); > +void red_channel_register_client_cbs(RedChannel *channel, const ClientCbs > *client_cbs, gpointer cbs_data); > // caps are freed when the channel is destroyed > void red_channel_set_common_cap(RedChannel *channel, uint32_t cap); > void red_channel_set_cap(RedChannel *channel, uint32_t cap); > -void red_channel_set_data(RedChannel *channel, void *data); > > RedChannelClient *red_channel_client_create(int size, RedChannel *channel, > RedClient *client, > RedsStream *stream, > diff --git a/server/red-qxl.c b/server/red-qxl.c > index 491046f..ee3cab0 100644 > --- a/server/red-qxl.c > +++ b/server/red-qxl.c > @@ -985,16 +985,14 @@ void red_qxl_init(RedsState *reds, QXLInstance *qxl) > client_cbs.connect = red_qxl_set_cursor_peer; > client_cbs.disconnect = red_qxl_disconnect_cursor_peer; > client_cbs.migrate = red_qxl_cursor_migrate; > - red_channel_register_client_cbs(channel, &client_cbs); > - red_channel_set_data(channel, qxl_state); > + red_channel_register_client_cbs(channel, &client_cbs, qxl_state); > reds_register_channel(reds, channel); > > channel = red_worker_get_display_channel(worker); > client_cbs.connect = red_qxl_set_display_peer; > client_cbs.disconnect = red_qxl_disconnect_display_peer; > client_cbs.migrate = red_qxl_display_migrate; > - red_channel_register_client_cbs(channel, &client_cbs); > - red_channel_set_data(channel, qxl_state); > + red_channel_register_client_cbs(channel, &client_cbs, qxl_state); > red_channel_set_cap(channel, SPICE_DISPLAY_CAP_MONITORS_CONFIG); > red_channel_set_cap(channel, SPICE_DISPLAY_CAP_PREF_COMPRESSION); > red_channel_set_cap(channel, SPICE_DISPLAY_CAP_STREAM_REPORT); > diff --git a/server/smartcard.c b/server/smartcard.c > index 55382e2..2b25bac 100644 > --- a/server/smartcard.c > +++ b/server/smartcard.c > @@ -863,7 +863,7 @@ static void smartcard_init(void) > } > > client_cbs.connect = smartcard_connect_client; > - red_channel_register_client_cbs(&g_smartcard_channel->base, &client_cbs); > + red_channel_register_client_cbs(&g_smartcard_channel->base, &client_cbs, > NULL); > > reds_register_channel(reds, &g_smartcard_channel->base); > } > diff --git a/server/sound.c b/server/sound.c > index 1aa3a74..82c14f7 100644 > --- a/server/sound.c > +++ b/server/sound.c > @@ -1534,8 +1534,7 @@ void snd_attach_playback(RedsState *reds, > SpicePlaybackInstance *sin) > client_cbs.connect = snd_set_playback_peer; > client_cbs.disconnect = snd_disconnect_channel_client; > client_cbs.migrate = snd_playback_migrate_channel_client; > - red_channel_register_client_cbs(channel, &client_cbs); > - red_channel_set_data(channel, playback_worker); > + red_channel_register_client_cbs(channel, &client_cbs, playback_worker); > > if (snd_codec_is_capable(SPICE_AUDIO_DATA_MODE_CELT_0_5_1, > SND_CODEC_ANY_FREQUENCY)) > red_channel_set_cap(channel, SPICE_PLAYBACK_CAP_CELT_0_5_1); > @@ -1564,8 +1563,7 @@ void snd_attach_record(RedsState *reds, > SpiceRecordInstance *sin) > client_cbs.connect = snd_set_record_peer; > client_cbs.disconnect = snd_disconnect_channel_client; > client_cbs.migrate = snd_record_migrate_channel_client; > - red_channel_register_client_cbs(channel, &client_cbs); > - red_channel_set_data(channel, record_worker); > + red_channel_register_client_cbs(channel, &client_cbs, record_worker); > if (snd_codec_is_capable(SPICE_AUDIO_DATA_MODE_CELT_0_5_1, > SND_CODEC_ANY_FREQUENCY)) > red_channel_set_cap(channel, SPICE_RECORD_CAP_CELT_0_5_1); > red_channel_set_cap(channel, SPICE_RECORD_CAP_VOLUME); > diff --git a/server/spicevmc.c b/server/spicevmc.c > index 1050fde..f745fdb 100644 > --- a/server/spicevmc.c > +++ b/server/spicevmc.c > @@ -528,7 +528,7 @@ SpiceCharDeviceState *spicevmc_device_connect(RedsState > *reds, > red_channel_init_outgoing_messages_window(&state->channel); > > client_cbs.connect = spicevmc_connect; > - red_channel_register_client_cbs(&state->channel, &client_cbs); > + red_channel_register_client_cbs(&state->channel, &client_cbs, NULL); > > char_dev_cbs.read_one_msg_from_device = > spicevmc_chardev_read_msg_from_dev; > char_dev_cbs.ref_msg_to_client = spicevmc_chardev_ref_msg_to_client; _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel