[Spice-devel] [PATCH spice-server] red-qxl: Retain RCC pointer in migration request

Christophe Fergeau cfergeau at redhat.com
Thu Aug 31 14:57:24 UTC 2017


Acked-by: Christophe Fergeau <cfergeau at redhat.com> (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 at redhat.com>
> ---
>  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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel


More information about the Spice-devel mailing list