[Spice-devel,v4,3/7] Free QXL instances in spice_server_destroy

Submitted by Frediano Ziglio on Dec. 2, 2016, 5:43 p.m.

Details

Message ID 1058baec28c796855242f35b101d6547ea62fb89.1480700546.git-series.fziglio@redhat.com
State Accepted
Headers show
Series "Start cleaning objects on destruction" ( rev: 6 ) in Spice

Not browsing as part of any series.

Commit Message

Frediano Ziglio Dec. 2, 2016, 5:43 p.m.
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
---
 server/reds.c | 7 +++++++
 1 file changed, 7 insertions(+)

Patch hide | download patch | download mbox

diff --git a/server/reds.c b/server/reds.c
index 17e5ada..d350331 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -3592,6 +3592,8 @@  SPICE_GNUC_VISIBLE void spice_server_destroy(SpiceServer *reds)
     servers = g_list_remove(servers, reds);
     pthread_mutex_unlock(&global_reds_lock);
 
+    g_list_free_full(reds->qxl_instances, (GDestroyNotify)red_qxl_destroy);
+
     if (reds->inputs_channel) {
         reds_unregister_channel(reds, RED_CHANNEL(reds->inputs_channel));
         red_channel_destroy(RED_CHANNEL(reds->inputs_channel));
@@ -3600,6 +3602,11 @@  SPICE_GNUC_VISIBLE void spice_server_destroy(SpiceServer *reds)
         red_channel_destroy(RED_CHANNEL(reds->main_channel));
     }
     reds_core_timer_remove(reds, reds->mig_timer);
+
+    if (reds->main_dispatcher) {
+        g_object_unref(reds->main_dispatcher);
+    }
+
     reds_cleanup(reds);
 #ifdef RED_STATISTICS
     stat_file_free(reds->stat_file);

Comments

Oops, I just reviewed this patch from a previous series. See my
comments there.


On Fri, 2016-12-02 at 17:43 +0000, Frediano Ziglio wrote:
> Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
> ---
>  server/reds.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/server/reds.c b/server/reds.c
> index 17e5ada..d350331 100644
> --- a/server/reds.c
> +++ b/server/reds.c
> @@ -3592,6 +3592,8 @@ SPICE_GNUC_VISIBLE void
> spice_server_destroy(SpiceServer *reds)
>      servers = g_list_remove(servers, reds);
>      pthread_mutex_unlock(&global_reds_lock);
>  
> +    g_list_free_full(reds->qxl_instances,
> (GDestroyNotify)red_qxl_destroy);
> +
>      if (reds->inputs_channel) {
>          reds_unregister_channel(reds, RED_CHANNEL(reds-
> >inputs_channel));
>          red_channel_destroy(RED_CHANNEL(reds->inputs_channel));
> @@ -3600,6 +3602,11 @@ SPICE_GNUC_VISIBLE void
> spice_server_destroy(SpiceServer *reds)
>          red_channel_destroy(RED_CHANNEL(reds->main_channel));
>      }
>      reds_core_timer_remove(reds, reds->mig_timer);
> +
> +    if (reds->main_dispatcher) {
> +        g_object_unref(reds->main_dispatcher);
> +    }
> +
>      reds_cleanup(reds);
>  #ifdef RED_STATISTICS
>      stat_file_free(reds->stat_file);