[gnome-builder] session: try to de-init dict when unused
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] session: try to de-init dict when unused
- Date: Sat, 28 Jul 2018 02:25:12 +0000 (UTC)
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]