[empathy: 4/12] Revert "Stop requesting StreamedMedia channels"



commit 758b4250e767d9e952b8c0ea4db7d93df192a0c0
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Tue Feb 28 13:03:26 2012 +0100

    Revert "Stop requesting StreamedMedia channels"
    
    This reverts commit b7f1fab64f9a59221b4d666cd788db4efe855b13.

 libempathy-gtk/empathy-call-utils.c |   74 ++++++++++++++++++++++++++++++++--
 1 files changed, 69 insertions(+), 5 deletions(-)
---
diff --git a/libempathy-gtk/empathy-call-utils.c b/libempathy-gtk/empathy-call-utils.c
index 77fdb56..1dca386 100644
--- a/libempathy-gtk/empathy-call-utils.c
+++ b/libempathy-gtk/empathy-call-utils.c
@@ -95,20 +95,72 @@ empathy_call_create_call_request (const gchar *contact,
     NULL);
 }
 
+GHashTable *
+empathy_call_create_streamed_media_request (const gchar *contact,
+    gboolean initial_audio,
+    gboolean initial_video)
+{
+  return tp_asv_new (
+    TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
+      TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA,
+    TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT,
+      TP_HANDLE_TYPE_CONTACT,
+    TP_PROP_CHANNEL_TARGET_ID, G_TYPE_STRING,
+      contact,
+    TP_PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_AUDIO, G_TYPE_BOOLEAN,
+      initial_audio,
+    TP_PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_VIDEO, G_TYPE_BOOLEAN,
+      initial_video,
+    NULL);
+}
+
+static void
+create_streamed_media_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 StreamedMedia channel: %s", error->message);
+      show_call_error (error);
+      g_error_free (error);
+    }
+}
+
 static void
 create_call_channel_cb (GObject *source,
     GAsyncResult *result,
     gpointer user_data)
 {
+  TpAccountChannelRequest *streamed_media_req = user_data;
   GError *error = NULL;
 
   if (tp_account_channel_request_create_channel_finish (
       TP_ACCOUNT_CHANNEL_REQUEST (source), result, &error))
-    return;
+    {
+      g_object_unref (streamed_media_req);
+      return;
+    }
 
   DEBUG ("Failed to create Call channel: %s", error->message);
 
-  show_call_error (error);
+  if (error->code != TP_ERROR_NOT_IMPLEMENTED)
+    {
+      show_call_error (error);
+      return;
+    }
+
+  DEBUG ("Let's try with an StreamedMedia channel");
+  g_error_free (error);
+  tp_account_channel_request_create_channel_async (streamed_media_req,
+      EMPATHY_AV_BUS_NAME, NULL,
+      create_streamed_media_channel_cb,
+      NULL);
 }
 
 /* Try to request a Call channel and fallback to StreamedMedia if that fails */
@@ -119,8 +171,8 @@ call_new_with_streams (const gchar *contact,
     gboolean initial_video,
     gint64 timestamp)
 {
-  GHashTable *call_request;
-  TpAccountChannelRequest *call_req;
+  GHashTable *call_request, *streamed_media_request;
+  TpAccountChannelRequest *call_req, *streamed_media_req;
 
   /* Call */
   call_request = empathy_call_create_call_request (contact,
@@ -131,8 +183,20 @@ call_new_with_streams (const gchar *contact,
 
   g_hash_table_unref (call_request);
 
+  /* StreamedMedia */
+  streamed_media_request = empathy_call_create_streamed_media_request (
+      contact, initial_audio, initial_video);
+
+  streamed_media_req = tp_account_channel_request_new (account,
+      streamed_media_request,
+      timestamp);
+
+  g_hash_table_unref (streamed_media_request);
+
   tp_account_channel_request_create_channel_async (call_req,
-      EMPATHY_CALL_BUS_NAME, NULL, create_call_channel_cb, NULL);
+      EMPATHY_CALL_BUS_NAME, NULL,
+      create_call_channel_cb,
+      streamed_media_req);
 
   g_object_unref (call_req);
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]