[gnome-notes/gnome-3-28] manager: Fix circular reference



commit 05be4440ae6f1bf6bc3ea66c5a2b95ad461fc413
Author: Isaque Galdino <igaldino gmail com>
Date:   Wed Apr 18 00:16:28 2018 -0300

    manager: Fix circular reference
    
    Manager object keeps a list of Provider objects and the latter was also
    keeping hard references to the former. That was also true for Item
    objects.
    
    This patch fix that, keeping only pointers to Manager in Provider and
    Item objects.

 src/libbiji/biji-item.c              | 5 +----
 src/libbiji/provider/biji-provider.c | 5 +----
 2 files changed, 2 insertions(+), 8 deletions(-)
---
diff --git a/src/libbiji/biji-item.c b/src/libbiji/biji-item.c
index ae8aa7e..e691a37 100644
--- a/src/libbiji/biji-item.c
+++ b/src/libbiji/biji-item.c
@@ -63,7 +63,7 @@ biji_item_set_property (GObject      *object,
   switch (property_id)
     {
     case PROP_BOOK:
-      priv->manager = g_value_dup_object (value);
+      priv->manager = g_value_get_object (value);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -151,9 +151,6 @@ biji_item_class_init (BijiItemClass *klass)
 static void
 biji_item_finalize (GObject *object)
 {
-  BijiItemPrivate *priv = biji_item_get_instance_private (BIJI_ITEM (object));
-  g_clear_object (&priv->manager);
-
   G_OBJECT_CLASS (biji_item_parent_class)->finalize (object);
 }
 
diff --git a/src/libbiji/provider/biji-provider.c b/src/libbiji/provider/biji-provider.c
index 0b51e89..8e41bcb 100644
--- a/src/libbiji/provider/biji-provider.c
+++ b/src/libbiji/provider/biji-provider.c
@@ -111,9 +111,6 @@ biji_provider_load_archives        (BijiProvider *provider)
 static void
 biji_provider_finalize (GObject *object)
 {
-  BijiProviderPrivate *priv = biji_provider_get_instance_private (BIJI_PROVIDER (object));
-  g_clear_object (&priv->manager);
-
   G_OBJECT_CLASS (biji_provider_parent_class)->finalize (object);
 }
 
@@ -156,7 +153,7 @@ biji_provider_set_property (GObject      *object,
   switch (property_id)
     {
     case PROP_BOOK:
-      priv->manager = g_value_dup_object (value);
+      priv->manager = g_value_get_object (value);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);


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