aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy/empathy-utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'libempathy/empathy-utils.c')
-rw-r--r--libempathy/empathy-utils.c31
1 files changed, 11 insertions, 20 deletions
diff --git a/libempathy/empathy-utils.c b/libempathy/empathy-utils.c
index 7548c58fb..6bb346230 100644
--- a/libempathy/empathy-utils.c
+++ b/libempathy/empathy-utils.c
@@ -464,24 +464,18 @@ empathy_call_with_contact (EmpathyContact *contact)
}
#ifdef HAVE_VOIP
-struct empathy_call_cb_user_data {
- guint handler;
- GObject *factory;
-};
-
static void
-empathy_call_with_contact_id_got_handle_cb (EmpathyContact *contact,
- GParamSpec *property, gpointer user_data) {
-
- struct empathy_call_cb_user_data *ud =
- (struct empathy_call_cb_user_data *) user_data;
-
- g_signal_handler_disconnect (contact, ud->handler);
+got_handle_cb (EmpathyContact *contact,
+ GParamSpec *property,
+ EmpathyContactFactory *factory)
+{
+ g_signal_handlers_disconnect_by_func (contact,
+ got_handle_cb,
+ factory);
empathy_call_with_contact (contact);
- g_object_unref (ud->factory);
+ g_object_unref (factory);
g_object_unref (contact);
- g_free (ud);
}
#endif
@@ -500,13 +494,10 @@ empathy_call_with_contact_id (McAccount *account, const gchar *contact_id)
g_object_unref (contact);
g_object_unref (factory);
} else {
- struct empathy_call_cb_user_data *ud;
- ud = g_malloc0 (sizeof (struct empathy_call_cb_user_data));
- ud->factory = G_OBJECT (factory);
- ud->handler = g_signal_connect (G_OBJECT (contact), "notify::handle",
- G_CALLBACK (empathy_call_with_contact_id_got_handle_cb), ud);
+ g_signal_connect (contact, "notify::handle",
+ G_CALLBACK (got_handle_cb),
+ factory);
}
-
#endif
}