empathy r2062 - in trunk: libempathy libempathy-gtk
- From: xclaesse svn gnome org
- To: svn-commits-list gnome org
- Subject: empathy r2062 - in trunk: libempathy libempathy-gtk
- Date: Tue, 6 Jan 2009 16:47:57 +0000 (UTC)
Author: xclaesse
Date: Tue Jan 6 16:47:57 2009
New Revision: 2062
URL: http://svn.gnome.org/viewvc/empathy?rev=2062&view=rev
Log:
Always disconnect signals for safety on _finalize ().
Modified:
trunk/libempathy-gtk/empathy-chat.c
trunk/libempathy-gtk/empathy-contact-list-store.c
trunk/libempathy/empathy-account-manager.c
trunk/libempathy/empathy-contact-manager.c
Modified: trunk/libempathy-gtk/empathy-chat.c
==============================================================================
--- trunk/libempathy-gtk/empathy-chat.c (original)
+++ trunk/libempathy-gtk/empathy-chat.c Tue Jan 6 16:47:57 2009
@@ -1392,6 +1392,9 @@
chat_composing_remove_timeout (chat);
+ g_signal_handlers_disconnect_by_func (priv->account_manager,
+ chat_connection_changed_cb, object);
+
g_object_unref (priv->account_manager);
g_object_unref (priv->log_manager);
Modified: trunk/libempathy-gtk/empathy-contact-list-store.c
==============================================================================
--- trunk/libempathy-gtk/empathy-contact-list-store.c (original)
+++ trunk/libempathy-gtk/empathy-contact-list-store.c Tue Jan 6 16:47:57 2009
@@ -143,6 +143,8 @@
GtkTreeIter *iter,
EmpathyContactListStore *store);
static gboolean contact_list_store_iface_setup (gpointer user_data);
+static void disconnect_monitor_signals (EmpathyContactMonitor *monitor,
+ GObject *obj);
enum {
PROP_0,
@@ -249,6 +251,10 @@
contact_list_store_finalize (GObject *object)
{
EmpathyContactListStorePriv *priv = GET_PRIV (object);
+ EmpathyContactMonitor *monitor;
+
+ monitor = empathy_contact_list_get_monitor (priv->list);
+ disconnect_monitor_signals (monitor, object);
g_signal_handlers_disconnect_by_func (priv->list,
G_CALLBACK (contact_list_store_groups_changed_cb),
@@ -1067,6 +1073,27 @@
contact_list_store_remove_contact (store, contact);
}
+
+static void
+disconnect_monitor_signals (EmpathyContactMonitor *monitor,
+ GObject *obj)
+{
+ g_signal_handlers_disconnect_by_func (monitor,
+ contact_monitor_avatar_changed_cb, obj);
+ g_signal_handlers_disconnect_by_func (monitor,
+ contact_monitor_capabilities_changed_cb, obj);
+ g_signal_handlers_disconnect_by_func (monitor,
+ contact_monitor_contact_added_cb, obj);
+ g_signal_handlers_disconnect_by_func (monitor,
+ contact_monitor_contact_removed_cb, obj);
+ g_signal_handlers_disconnect_by_func (monitor,
+ contact_monitor_name_changed_cb, obj);
+ g_signal_handlers_disconnect_by_func (monitor,
+ contact_monitor_presence_changed_cb, obj);
+ g_signal_handlers_disconnect_by_func (monitor,
+ contact_monitor_presence_message_changed_cb, obj);
+}
+
static gboolean
contact_list_store_iface_setup (gpointer user_data)
{
Modified: trunk/libempathy/empathy-account-manager.c
==============================================================================
--- trunk/libempathy/empathy-account-manager.c (original)
+++ trunk/libempathy/empathy-account-manager.c Tue Jan 6 16:47:57 2009
@@ -341,8 +341,23 @@
dbus_g_proxy_connect_signal (DBUS_G_PROXY (priv->mc), "AccountStatusChanged",
G_CALLBACK (account_status_changed_cb),
- g_object_ref (manager),
- (GClosureNotify) g_object_unref);
+ manager, NULL);
+}
+
+static void
+disconnect_monitor_signals (McAccountMonitor *monitor,
+ GObject *obj)
+{
+ g_signal_handlers_disconnect_by_func (monitor,
+ account_created_cb, obj);
+ g_signal_handlers_disconnect_by_func (monitor,
+ account_deleted_cb, obj);
+ g_signal_handlers_disconnect_by_func (monitor,
+ account_disabled_cb, obj);
+ g_signal_handlers_disconnect_by_func (monitor,
+ account_enabled_cb, obj);
+ g_signal_handlers_disconnect_by_func (monitor,
+ account_changed_cb, obj);
}
static void
@@ -356,6 +371,8 @@
G_CALLBACK (account_status_changed_cb),
obj);
+ disconnect_monitor_signals (priv->monitor, obj);
+
g_object_unref (priv->monitor);
g_object_unref (priv->mc);
Modified: trunk/libempathy/empathy-contact-manager.c
==============================================================================
--- trunk/libempathy/empathy-contact-manager.c (original)
+++ trunk/libempathy/empathy-contact-manager.c Tue Jan 6 16:47:57 2009
@@ -185,7 +185,12 @@
contact_manager_disconnect_foreach,
object);
g_hash_table_destroy (priv->lists);
+
+ g_signal_handlers_disconnect_by_func (priv->account_manager,
+ contact_manager_connection_changed_cb,
+ object);
g_object_unref (priv->account_manager);
+
g_object_unref (priv->contact_monitor);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]