[gnome-builder] session: try to de-init dict when unused



commit 125046f196abb243d01451ec21c5cd4575c14ff1
Author: Christian Hergert <chergert redhat com>
Date:   Fri Jul 27 19:24:23 2018 -0700

    session: try to de-init dict when unused

 src/libide/session/ide-session.c | 8 ++++++++
 1 file changed, 8 insertions(+)
---
diff --git a/src/libide/session/ide-session.c b/src/libide/session/ide-session.c
index a6b52cc08..58e0103bb 100644
--- a/src/libide/session/ide-session.c
+++ b/src/libide/session/ide-session.c
@@ -43,6 +43,7 @@ typedef struct
   GPtrArray    *addins;
   GVariantDict  dict;
   gint          active;
+  guint         dict_needs_clear : 1;
 } Save;
 
 typedef struct
@@ -70,6 +71,9 @@ save_free (Save *s)
   g_assert (s != NULL);
   g_assert (s->active == 0);
 
+  if (s->dict_needs_clear)
+    g_variant_dict_clear (&s->dict);
+
   g_clear_pointer (&s->addins, g_ptr_array_unref);
   g_slice_free (Save, s);
 }
@@ -371,6 +375,8 @@ ide_session_save_addin_save_cb (GObject      *object,
   if (variant != NULL)
     {
       g_assert (!g_variant_is_floating (variant));
+
+      s->dict_needs_clear = TRUE;
       g_variant_dict_insert_value (&s->dict, G_OBJECT_TYPE_NAME (addin), variant);
     }
 
@@ -384,6 +390,8 @@ ide_session_save_addin_save_cb (GObject      *object,
       GCancellable *cancellable;
       IdeContext *context;
 
+      s->dict_needs_clear = FALSE;
+
       state = g_variant_take_ref (g_variant_dict_end (&s->dict));
       bytes = g_variant_get_data_as_bytes (state);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]