> > On Tue, 2017-02-07 at 11:59 +0100, Christophe Fergeau wrote: > > It was probably meant to be used as a "user_data" argument for the > > various callbacks, but turns out not to be used. > > Hmm, it looks like the last use of this 'data' variable was removed in > 96e94c6f. That commit used g_object_set_data() to attach the > 'dispatcher' object to the channel object rather than setting priv- > >data via the _register_client_cbs() function. I'm not too fond of > g_object_set_data() for that use (even though apparently I was the one > that did it). I wonder if there's a better approach than either of > these approaches... I'll try to review the rest of the patches in this > series and come back to this... > > Jonathon > +1 Why not adding a data/opaque field to ClientCbs ? Would remove the parameter (as this patch) but allows the dispatcher (the only usage) to be stored and retrieved. Frediano > > > --- > > server/inputs-channel.c | 2 +- > > server/main-channel.c | 2 +- > > server/red-channel.c | 6 +----- > > server/red-channel.h | 2 +- > > server/red-worker.c | 4 ++-- > > server/smartcard.c | 2 +- > > server/sound.c | 4 ++-- > > server/spicevmc.c | 2 +- > > 8 files changed, 10 insertions(+), 14 deletions(-) > > > > diff --git a/server/inputs-channel.c b/server/inputs-channel.c > > index f105b4d..e197f68 100644 > > --- a/server/inputs-channel.c > > +++ b/server/inputs-channel.c > > @@ -608,7 +608,7 @@ inputs_channel_constructed(GObject *object) > > > > client_cbs.connect = inputs_connect; > > client_cbs.migrate = inputs_migrate; > > - red_channel_register_client_cbs(RED_CHANNEL(self), &client_cbs, > > NULL); > > + red_channel_register_client_cbs(RED_CHANNEL(self), &client_cbs); > > > > red_channel_set_cap(RED_CHANNEL(self), > > SPICE_INPUTS_CAP_KEY_SCANCODE); > > reds_register_channel(reds, RED_CHANNEL(self)); > > diff --git a/server/main-channel.c b/server/main-channel.c > > index 1124506..745f155 100644 > > --- a/server/main-channel.c > > +++ b/server/main-channel.c > > @@ -335,7 +335,7 @@ main_channel_constructed(GObject *object) > > red_channel_set_cap(RED_CHANNEL(self), > > SPICE_MAIN_CAP_SEAMLESS_MIGRATE); > > > > client_cbs.migrate = main_channel_client_migrate; > > - red_channel_register_client_cbs(RED_CHANNEL(self), &client_cbs, > > NULL); > > + red_channel_register_client_cbs(RED_CHANNEL(self), &client_cbs); > > } > > > > static void > > diff --git a/server/red-channel.c b/server/red-channel.c > > index f2a35f3..835a744 100644 > > --- a/server/red-channel.c > > +++ b/server/red-channel.c > > @@ -91,8 +91,6 @@ struct RedChannelPrivate > > RedChannelCapabilities local_caps; > > uint32_t migration_flags; > > > > - void *data; > > - > > OutgoingHandlerInterface outgoing_cb; > > IncomingHandlerInterface incoming_cb; > > > > @@ -428,8 +426,7 @@ StatNodeRef red_channel_get_stat_node(RedChannel > > *channel) > > return 0; > > } > > > > -void red_channel_register_client_cbs(RedChannel *channel, const > > ClientCbs *client_cbs, > > - gpointer cbs_data) > > +void red_channel_register_client_cbs(RedChannel *channel, const > > ClientCbs *client_cbs) > > { > > spice_assert(client_cbs->connect || channel->priv->type == > > SPICE_CHANNEL_MAIN); > > channel->priv->client_cbs.connect = client_cbs->connect; > > @@ -441,7 +438,6 @@ void red_channel_register_client_cbs(RedChannel > > *channel, const ClientCbs *clien > > if (client_cbs->migrate) { > > channel->priv->client_cbs.migrate = client_cbs->migrate; > > } > > - channel->priv->data = cbs_data; > > } > > > > static void add_capability(uint32_t **caps, int *num_caps, uint32_t > > cap) > > diff --git a/server/red-channel.h b/server/red-channel.h > > index f2866f5..7b6846f 100644 > > --- a/server/red-channel.h > > +++ b/server/red-channel.h > > @@ -209,7 +209,7 @@ void red_channel_remove_client(RedChannel > > *channel, RedChannelClient *rcc); > > > > void red_channel_set_stat_node(RedChannel *channel, StatNodeRef > > stat); > > > > -void red_channel_register_client_cbs(RedChannel *channel, const > > ClientCbs *client_cbs, gpointer cbs_data); > > +void red_channel_register_client_cbs(RedChannel *channel, const > > ClientCbs *client_cbs); > > // 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); > > diff --git a/server/red-worker.c b/server/red-worker.c > > index 475acc4..230e87d 100644 > > --- a/server/red-worker.c > > +++ b/server/red-worker.c > > @@ -1372,7 +1372,7 @@ RedWorker* red_worker_new(QXLInstance *qxl, > > &worker->core); > > channel = RED_CHANNEL(worker->cursor_channel); > > red_channel_set_stat_node(channel, stat_add_node(reds, worker- > > >stat, "cursor_channel", TRUE)); > > - red_channel_register_client_cbs(channel, client_cursor_cbs, > > dispatcher); > > + red_channel_register_client_cbs(channel, client_cursor_cbs); > > g_object_set_data(G_OBJECT(channel), "dispatcher", dispatcher); > > reds_register_channel(reds, channel); > > > > @@ -1383,7 +1383,7 @@ RedWorker* red_worker_new(QXLInstance *qxl, > > init_info.n_surfac > > es); > > channel = RED_CHANNEL(worker->display_channel); > > red_channel_set_stat_node(channel, stat_add_node(reds, worker- > > >stat, "display_channel", TRUE)); > > - red_channel_register_client_cbs(channel, client_display_cbs, > > dispatcher); > > + red_channel_register_client_cbs(channel, client_display_cbs); > > g_object_set_data(G_OBJECT(channel), "dispatcher", dispatcher); > > reds_register_channel(reds, channel); > > > > diff --git a/server/smartcard.c b/server/smartcard.c > > index f4bc40d..bfc4b24 100644 > > --- a/server/smartcard.c > > +++ b/server/smartcard.c > > @@ -577,7 +577,7 @@ red_smartcard_channel_constructed(GObject > > *object) > > G_OBJECT_CLASS(red_smartcard_channel_parent_class)- > > >constructed(object); > > > > client_cbs.connect = smartcard_connect_client; > > - red_channel_register_client_cbs(RED_CHANNEL(self), &client_cbs, > > NULL); > > + red_channel_register_client_cbs(RED_CHANNEL(self), &client_cbs); > > > > reds_register_channel(reds, RED_CHANNEL(self)); > > } > > diff --git a/server/sound.c b/server/sound.c > > index 7c36174..2692fe5 100644 > > --- a/server/sound.c > > +++ b/server/sound.c > > @@ -1393,7 +1393,7 @@ playback_channel_constructed(GObject *object) > > > > client_cbs.connect = snd_set_playback_peer; > > client_cbs.migrate = snd_migrate_channel_client; > > - red_channel_register_client_cbs(RED_CHANNEL(self), &client_cbs, > > self); > > + red_channel_register_client_cbs(RED_CHANNEL(self), &client_cbs); > > > > if (snd_codec_is_capable(SPICE_AUDIO_DATA_MODE_CELT_0_5_1, > > SND_CODEC_ANY_FREQUENCY)) { > > red_channel_set_cap(RED_CHANNEL(self), > > SPICE_PLAYBACK_CAP_CELT_0_5_1); > > @@ -1443,7 +1443,7 @@ record_channel_constructed(GObject *object) > > > > client_cbs.connect = snd_set_record_peer; > > client_cbs.migrate = snd_migrate_channel_client; > > - red_channel_register_client_cbs(RED_CHANNEL(self), &client_cbs, > > self); > > + red_channel_register_client_cbs(RED_CHANNEL(self), &client_cbs); > > > > if (snd_codec_is_capable(SPICE_AUDIO_DATA_MODE_CELT_0_5_1, > > SND_CODEC_ANY_FREQUENCY)) { > > red_channel_set_cap(RED_CHANNEL(self), > > SPICE_RECORD_CAP_CELT_0_5_1); > > diff --git a/server/spicevmc.c b/server/spicevmc.c > > index 9bcbada..180d4eb 100644 > > --- a/server/spicevmc.c > > +++ b/server/spicevmc.c > > @@ -192,7 +192,7 @@ red_vmc_channel_constructed(GObject *object) > > G_OBJECT_CLASS(red_vmc_channel_parent_class)- > > >constructed(object); > > > > client_cbs.connect = spicevmc_connect; > > - red_channel_register_client_cbs(RED_CHANNEL(self), &client_cbs, > > NULL); > > + red_channel_register_client_cbs(RED_CHANNEL(self), &client_cbs); > > > > #ifdef USE_LZ4 > > red_channel_set_cap(RED_CHANNEL(self), > > SPICE_SPICEVMC_CAP_DATA_COMPRESS_LZ4); _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel