diff options
-rw-r--r-- | libempathy-gtk/empathy-share-my-desktop.c | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/libempathy-gtk/empathy-share-my-desktop.c b/libempathy-gtk/empathy-share-my-desktop.c index 6456d4859..a630fc2a5 100644 --- a/libempathy-gtk/empathy-share-my-desktop.c +++ b/libempathy-gtk/empathy-share-my-desktop.c @@ -21,6 +21,7 @@ #include <gtk/gtk.h> #include <dbus/dbus-glib.h> +#include <telepathy-glib/account-channel-request.h> #include <telepathy-glib/util.h> #include <telepathy-glib/contact.h> #include <telepathy-glib/channel.h> @@ -33,10 +34,25 @@ #include "empathy-share-my-desktop.h" +static void +create_tube_channel_cb (GObject *source, + GAsyncResult *result, + gpointer user_data) +{ + GError *error = NULL; + + if (!tp_account_channel_request_create_channel_finish ( + TP_ACCOUNT_CHANNEL_REQUEST (source), result, &error)) + { + DEBUG ("Failed to create tube channel: %s", error->message); + g_error_free (error); + } +} + void empathy_share_my_desktop_share_with_contact (EmpathyContact *contact) { - EmpathyDispatcher *dispatcher; + TpAccountChannelRequest *req; GHashTable *request; TpContact *tp_contact; @@ -50,8 +66,6 @@ empathy_share_my_desktop_share_with_contact (EmpathyContact *contact) return; } - dispatcher = empathy_dispatcher_dup_singleton (); - request = tp_asv_new ( TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_STREAM_TUBE, @@ -62,10 +76,12 @@ empathy_share_my_desktop_share_with_contact (EmpathyContact *contact) TP_PROP_CHANNEL_TYPE_STREAM_TUBE_SERVICE, G_TYPE_STRING, "rfb", NULL); - empathy_dispatcher_create_channel (dispatcher, - tp_contact_get_connection (tp_contact), request, - EMPATHY_DISPATCHER_CURRENT_TIME, - NULL, NULL); + req = tp_account_channel_request_new (empathy_contact_get_account (contact), + request, EMPATHY_DISPATCHER_CURRENT_TIME); + + tp_account_channel_request_create_channel_async (req, NULL, NULL, + create_tube_channel_cb, NULL); - g_object_unref (dispatcher); + g_object_unref (req); + g_hash_table_unref (request); } |