diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2009-04-27 18:16:38 +0800 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2009-04-27 18:16:38 +0800 |
commit | ebfb5e83604b4a48482e3126e5797f05ff99b3b1 (patch) | |
tree | 19667b8c541c47a5d7e3b601e4e52ddf0505a691 /libempathy/empathy-tube-handler.c | |
parent | 0f2684993d964ae03231c82ea39220da55226144 (diff) | |
parent | 265700bd18ddceae0c6a1b2c72c115af634cd1a0 (diff) | |
download | gsoc2013-empathy-ebfb5e83604b4a48482e3126e5797f05ff99b3b1.tar gsoc2013-empathy-ebfb5e83604b4a48482e3126e5797f05ff99b3b1.tar.gz gsoc2013-empathy-ebfb5e83604b4a48482e3126e5797f05ff99b3b1.tar.bz2 gsoc2013-empathy-ebfb5e83604b4a48482e3126e5797f05ff99b3b1.tar.lz gsoc2013-empathy-ebfb5e83604b4a48482e3126e5797f05ff99b3b1.tar.xz gsoc2013-empathy-ebfb5e83604b4a48482e3126e5797f05ff99b3b1.tar.zst gsoc2013-empathy-ebfb5e83604b4a48482e3126e5797f05ff99b3b1.zip |
Merge branch 'tp-tube'
Diffstat (limited to 'libempathy/empathy-tube-handler.c')
-rw-r--r-- | libempathy/empathy-tube-handler.c | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/libempathy/empathy-tube-handler.c b/libempathy/empathy-tube-handler.c index 18cda18b3..43e19fde7 100644 --- a/libempathy/empathy-tube-handler.c +++ b/libempathy/empathy-tube-handler.c @@ -59,15 +59,38 @@ typedef struct gchar *channel; guint handle_type; guint handle; + EmpathyTpTube *tube; } IdleData; +static void +tube_ready_cb (EmpathyTpTube *tube, + const GError *error, + gpointer user_data, + GObject *weak_object) +{ + IdleData *idle_data = user_data; + + g_signal_emit (idle_data->thandler, signals[NEW_TUBE], 0, tube); +} + +static void +tube_ready_destroy_notify (gpointer data) +{ + IdleData *idle_data = data; + + g_object_unref (idle_data->tube); + g_free (idle_data->bus_name); + g_free (idle_data->connection); + g_free (idle_data->channel); + g_slice_free (IdleData, idle_data); +} + static gboolean tube_handler_handle_tube_idle_cb (gpointer data) { IdleData *idle_data = data; TpConnection *connection; TpChannel *channel; - EmpathyTpTube *tube; static TpDBusDaemon *daemon = NULL; DEBUG ("New tube to be handled"); @@ -82,16 +105,12 @@ tube_handler_handle_tube_idle_cb (gpointer data) idle_data->handle, NULL); tp_channel_run_until_ready (channel, NULL, NULL); - tube = empathy_tp_tube_new (channel); - g_signal_emit (idle_data->thandler, signals[NEW_TUBE], 0, tube); + idle_data->tube = empathy_tp_tube_new (channel); + empathy_tp_tube_call_when_ready (idle_data->tube, tube_ready_cb, idle_data, + tube_ready_destroy_notify, NULL); - g_object_unref (tube); g_object_unref (channel); g_object_unref (connection); - g_free (idle_data->bus_name); - g_free (idle_data->connection); - g_free (idle_data->channel); - g_slice_free (IdleData, idle_data); return FALSE; } |