[empathy: 7/17] Don't destroy the request properties, EmpathyDispatcher now owns them



commit 91b6954805de2541dad743256cc3f9e9c6f65943
Author: Danielle Madeley <danielle madeley collabora co uk>
Date:   Thu Dec 17 08:50:33 2009 +1100

    Don't destroy the request properties, EmpathyDispatcher now owns them
    
    This is not the same as tp-glib semantics (e.g. tp_..._call_create_channel).
    Add some docs to EmpathyDispatcher to explain this, for the next person.

 libempathy/empathy-dispatcher.c |   13 +++++++++++++
 src/empathy-chat-window.c       |    2 +-
 2 files changed, 14 insertions(+), 1 deletions(-)
---
diff --git a/libempathy/empathy-dispatcher.c b/libempathy/empathy-dispatcher.c
index 49be0ba..839daba 100644
--- a/libempathy/empathy-dispatcher.c
+++ b/libempathy/empathy-dispatcher.c
@@ -1610,6 +1610,19 @@ empathy_dispatcher_call_create_or_ensure_channel (
     }
 }
 
+/**
+ * empathy_dispatcher_create_channel:
+ * @self: the EmpathyDispatcher
+ * @connection: the Connection to dispatch on
+ * @request: an a{sv} map of properties for the request, i.e. using tp_asv_new()
+ * @callback: a callback for when the channel arrives (or NULL)
+ * @user_data: optional user data (or NULL)
+ *
+ * When calling this function, #EmpathyDispatcher takes ownership of your
+ * reference to @request. DO NOT unref or destroy @request. When the request is
+ * done, @request will be unreferenced. Take another reference if you want to
+ * keep it around.
+ */
 void
 empathy_dispatcher_create_channel (EmpathyDispatcher *self,
                                    TpConnection *connection,
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c
index bea85c6..2dbe09d 100644
--- a/src/empathy-chat-window.c
+++ b/src/empathy-chat-window.c
@@ -856,10 +856,10 @@ chat_window_upgrade_to_muc (EmpathyChat    *chat,
 	    NULL);
 
 	/* Although this is a MUC, it's anonymous, so CreateChannel is valid */
+	/* props now belongs to EmpathyDispatcher, don't free it */
 	empathy_dispatcher_create_channel (dispatcher, connection,
 			props, NULL, NULL);
 
-	g_hash_table_destroy (props);
 	g_ptr_array_free (channels, TRUE);
 
 	g_object_unref (dispatcher);



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