return contact_info_field_name_cmp (field1->field_name, field2->field_name);
}
+static void
+client_types_notify_cb (TpContact *contact,
+ GParamSpec *pspec,
+ EmpathyIndividualWidget *self)
+{
+ client_types_update (self);
+}
+
static void
update_weak_contact (EmpathyIndividualWidget *self)
{
priv->contact = tp_contact;
g_object_add_weak_pointer (G_OBJECT (tp_contact),
(gpointer *) &priv->contact);
+
+ g_signal_connect (priv->contact, "notify::client-types",
+ (GCallback) client_types_notify_cb, self);
}
}
gtk_widget_show (priv->vbox_location);
}
-static void
-client_types_notify_cb (TpContact *contact,
- GParamSpec *pspec,
- EmpathyIndividualWidget *self)
-{
- client_types_update (self);
-}
-
static void
client_types_update (EmpathyIndividualWidget *self)
{
gtk_widget_hide (priv->hbox_client_types);
}
- g_signal_connect (priv->contact, "notify::client-types",
- (GCallback) client_types_notify_cb, self);
}
static void
if (priv->contact == NULL)
return;
+ g_signal_handlers_disconnect_by_func (priv->contact, client_types_notify_cb,
+ self);
+
g_object_remove_weak_pointer (G_OBJECT (priv->contact),
(gpointer *) &priv->contact);
priv->contact = NULL;