[Spice-devel] [PATCH spice-gtk 1/3] MainChannel: move task free from finalize to dispose

Fabiano FidĂȘncio fabiano at fidencio.org
Wed Oct 21 14:55:49 PDT 2015


On Wed, Oct 21, 2015 at 10:52 PM, Jonathon Jongsma <jjongsma at redhat.com> wrote:
> In order to avoid reference cycles, you're supposed to release
> references in dispose, especially to those objects that can hold
> references to yourself. This probably wasn't causing any leaks, since
> the file transfer tasks generally are not alive when the main channel is
> destroyed, but it's more proper.
> ---
>  src/channel-main.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/src/channel-main.c b/src/channel-main.c
> index 3a8c1dd..0a73e92 100644
> --- a/src/channel-main.c
> +++ b/src/channel-main.c
> @@ -405,6 +405,11 @@ static void spice_main_channel_dispose(GObject *obj)
>          c->migrate_delayed_id = 0;
>      }
>
> +    if (c->file_xfer_tasks) {
> +        g_hash_table_unref(c->file_xfer_tasks);
> +        c->file_xfer_tasks = NULL;
> +    }
> +
>      g_cancellable_cancel(c->cancellable_volume_info);
>      g_clear_object(&c->cancellable_volume_info);
>
> @@ -418,8 +423,6 @@ static void spice_main_channel_finalize(GObject *obj)
>
>      g_free(c->agent_msg_data);
>      agent_free_msg_queue(SPICE_MAIN_CHANNEL(obj));
> -    if (c->file_xfer_tasks)
> -        g_hash_table_unref(c->file_xfer_tasks);
>
>      if (G_OBJECT_CLASS(spice_main_channel_parent_class)->finalize)
>          G_OBJECT_CLASS(spice_main_channel_parent_class)->finalize(obj);
> --
> 2.4.3
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel

The whole series look good!

-- 
Fabiano FidĂȘncio


More information about the Spice-devel mailing list