These fields need just channel to be set to be initialized. Move their initialization to constructor to make sure they are initialized as soon as possible. Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> --- server/dummy-channel-client.c | 2 -- server/red-channel-client.c | 18 +++++++++--------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/server/dummy-channel-client.c b/server/dummy-channel-client.c index b7fee6f..a242d51 100644 --- a/server/dummy-channel-client.c +++ b/server/dummy-channel-client.c @@ -70,8 +70,6 @@ static gboolean dummy_channel_client_initable_init(GInitable *initable, goto cleanup; } - rcc->incoming.header.data = rcc->incoming.header_buf; - red_channel_add_client(channel, rcc); red_client_add_channel(client, rcc); diff --git a/server/red-channel-client.c b/server/red-channel-client.c index 3b2c24c..6c78237 100644 --- a/server/red-channel-client.c +++ b/server/red-channel-client.c @@ -269,6 +269,14 @@ static void red_channel_client_constructed(GObject *object) { RedChannelClient *self = RED_CHANNEL_CLIENT(object); + self->incoming.opaque = self; + self->incoming.cb = red_channel_get_incoming_handler(self->priv->channel); + + self->priv->outgoing.opaque = self; + self->priv->outgoing.cb = red_channel_get_outgoing_handler(self->priv->channel); + self->priv->outgoing.pos = 0; + self->priv->outgoing.size = 0; + if (red_channel_client_test_remote_common_cap(self, SPICE_COMMON_CAP_MINI_HEADER)) { self->incoming.header = mini_header_wrapper; self->priv->send_data.header = mini_header_wrapper; @@ -278,6 +286,7 @@ static void red_channel_client_constructed(GObject *object) self->priv->send_data.header = full_header_wrapper; self->priv->is_mini_header = FALSE; } + self->incoming.header.data = self->incoming.header_buf; } static void red_channel_client_class_init(RedChannelClientClass *klass) @@ -900,15 +909,6 @@ static gboolean red_channel_client_initable_init(GInitable *initable, self->priv->latency_monitor.roundtrip = -1; } - self->incoming.opaque = self; - self->incoming.cb = red_channel_get_incoming_handler(self->priv->channel); - self->incoming.header.data = self->incoming.header_buf; - - self->priv->outgoing.opaque = self; - self->priv->outgoing.cb = red_channel_get_outgoing_handler(self->priv->channel); - self->priv->outgoing.pos = 0; - self->priv->outgoing.size = 0; - if (self->priv->stream) self->priv->stream->watch = core->watch_add(core, self->priv->stream->socket, -- 2.7.4 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel