Acked-by: Christophe Fergeau <cfergeau@xxxxxxxxxx> (for the 2 patches). Maybe change "retain" to "reference" in the shortlog, I was unsure what you meant before looking at the patch. On Thu, Aug 31, 2017 at 08:36:41AM +0100, Frediano Ziglio wrote: > The message is asynchronous so to avoid the object to potentially > been released before being processed keep a strong reference to > it. > > Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> > --- > server/red-qxl.c | 4 ++-- > server/red-worker.c | 2 ++ > 2 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/server/red-qxl.c b/server/red-qxl.c > index e145ea49..6ad8f6a5 100644 > --- a/server/red-qxl.c > +++ b/server/red-qxl.c > @@ -130,7 +130,7 @@ static void red_qxl_display_migrate(RedChannelClient *rcc) > g_object_get(channel, "channel-type", &type, "id", &id, NULL); > dispatcher = (Dispatcher *)g_object_get_data(G_OBJECT(channel), "dispatcher"); > spice_printerr("channel type %u id %u", type, id); > - payload.rcc = rcc; > + payload.rcc = g_object_ref(rcc); > dispatcher_send_message(dispatcher, > RED_WORKER_MESSAGE_DISPLAY_MIGRATE, > &payload); > @@ -187,7 +187,7 @@ static void red_qxl_cursor_migrate(RedChannelClient *rcc) > g_object_get(channel, "channel-type", &type, "id", &id, NULL); > dispatcher = (Dispatcher *)g_object_get_data(G_OBJECT(channel), "dispatcher"); > spice_printerr("channel type %u id %u", type, id); > - payload.rcc = rcc; > + payload.rcc = g_object_ref(rcc); > dispatcher_send_message(dispatcher, > RED_WORKER_MESSAGE_CURSOR_MIGRATE, > &payload); > diff --git a/server/red-worker.c b/server/red-worker.c > index 0e2e8fa3..7cb4fc49 100644 > --- a/server/red-worker.c > +++ b/server/red-worker.c > @@ -762,6 +762,7 @@ static void handle_dev_display_migrate(void *opaque, void *payload) > spice_debug("migrate display client"); > spice_assert(rcc); > red_migrate_display(worker->display_channel, rcc); > + g_object_unref(rcc); > } > > static inline uint32_t qxl_monitors_config_size(uint32_t heads) > @@ -843,6 +844,7 @@ static void handle_dev_cursor_migrate(void *opaque, void *payload) > > spice_debug("migrate cursor client"); > cursor_channel_client_migrate(rcc); > + g_object_unref(rcc); > } > > static void handle_dev_set_compression(void *opaque, void *payload) > -- > 2.13.5 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel