[Telepathy-commits] [telepathy-gabble/master] unref ActivityInfo when the view is closed

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Fri Sep 26 10:02:13 PDT 2008


20080526094901-7fe3f-9a5acba28085855eb32f41e8db58325d0109b316.gz
---
 src/conn-olpc.c          |   12 +++++++++---
 src/olpc-activity-view.c |    9 +++++++++
 src/olpc-activity-view.h |    4 ++++
 3 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/src/conn-olpc.c b/src/conn-olpc.c
index 69186a9..32c4853 100644
--- a/src/conn-olpc.c
+++ b/src/conn-olpc.c
@@ -3462,8 +3462,7 @@ activity_query_result_cb (GabbleConnection *conn,
       activity_info_set_properties (info, properties);
     }
 
-  /* TODO: remove activities when needed */
-  /* TODO: unref ActivityInfo when removing */
+  /* TODO: remove activities when needed and unref ActivityInfo */
   gabble_olpc_activity_view_add_activities (view, activities);
 
   tp_handle_set_destroy (activities);
@@ -3471,10 +3470,17 @@ activity_query_result_cb (GabbleConnection *conn,
 }
 
 static void
-activity_view_closed_cb (GabbleOlpcBuddyView *view,
+activity_view_closed_cb (GabbleOlpcActivityView *view,
                          GabbleConnection *conn)
 {
   guint id;
+  TpHandleSet *activities;
+
+  /* decrement ActivityInfo */
+  activities = gabble_olpc_activity_view_get_activities (view);
+
+  tp_handle_set_foreach (activities,
+      decrement_contacts_activities_set_foreach, conn);
 
   g_object_get (view, "id", &id, NULL);
   g_hash_table_remove (conn->olpc_activity_views, GUINT_TO_POINTER (id));
diff --git a/src/olpc-activity-view.c b/src/olpc-activity-view.c
index ae79185..cbb9fcf 100644
--- a/src/olpc-activity-view.c
+++ b/src/olpc-activity-view.c
@@ -319,6 +319,15 @@ gabble_olpc_activity_view_add_activities (GabbleOlpcActivityView *self,
   tp_intset_destroy (added);
 }
 
+TpHandleSet *
+gabble_olpc_activity_view_get_activities (GabbleOlpcActivityView *self)
+{
+  GabbleOlpcActivityViewPrivate *priv = GABBLE_OLPC_ACTIVITY_VIEW_GET_PRIVATE (
+      self);
+
+  return priv->activities;
+}
+
 static void
 activity_view_iface_init (gpointer g_iface,
                        gpointer iface_data)
diff --git a/src/olpc-activity-view.h b/src/olpc-activity-view.h
index c700154..12285bd 100644
--- a/src/olpc-activity-view.h
+++ b/src/olpc-activity-view.h
@@ -66,6 +66,10 @@ GabbleOlpcActivityView * gabble_olpc_activity_view_new (GabbleConnection *conn,
 void gabble_olpc_activity_view_add_activities (GabbleOlpcActivityView *self,
     TpHandleSet *handles);
 
+
+TpHandleSet * gabble_olpc_activity_view_get_activities (
+    GabbleOlpcActivityView *self);
+
 G_END_DECLS
 
 #endif /* #ifndef __GABBLE_OLPC_ACTIVITY_VIEW_H__ */
-- 
1.5.6.5




More information about the Telepathy-commits mailing list