[telepathy-gabble/master] Add accessor for GabbleJingleSession:dialect

Will Thompson will.thompson at collabora.co.uk
Tue Jun 23 10:32:06 PDT 2009


---
 src/jingle-content.c          |   28 ++++++++--------------------
 src/jingle-media-rtp.c        |    8 ++------
 src/jingle-session.c          |    6 ++++++
 src/jingle-session.h          |    1 +
 src/jingle-transport-google.c |    4 ++--
 5 files changed, 19 insertions(+), 28 deletions(-)

diff --git a/src/jingle-content.c b/src/jingle-content.c
index 6745334..645a8f6 100644
--- a/src/jingle-content.c
+++ b/src/jingle-content.c
@@ -452,9 +452,7 @@ gabble_jingle_content_parse_add (GabbleJingleContent *c,
   LmMessageNode *trans_node, *desc_node;
   GType transport_type = 0;
   GabbleJingleTransportIface *trans = NULL;
-  JingleDialect dialect;
-
-  g_object_get (c->session, "dialect", &dialect, NULL);
+  JingleDialect dialect = gabble_jingle_session_get_dialect (c->session);
 
   desc_node = lm_message_node_get_child_any_ns (content_node, "description");
   trans_node = lm_message_node_get_child_any_ns (content_node, "transport");
@@ -583,24 +581,18 @@ gabble_jingle_content_parse_accept (GabbleJingleContent *c,
   GabbleJingleContentPrivate *priv = c->priv;
   const gchar *senders;
   LmMessageNode *trans_node, *desc_node;
-  JingleDialect dialect;
+  JingleDialect dialect = gabble_jingle_session_get_dialect (c->session);
   JingleContentSenders newsenders;
 
   desc_node = lm_message_node_get_child_any_ns (content_node, "description");
   trans_node = lm_message_node_get_child_any_ns (content_node, "transport");
   senders = lm_message_node_get_attribute (content_node, "senders");
 
-  g_object_get (c->session, "dialect", &dialect, NULL);
-
-  /* FIXME: if we examine dialect manually, we don't need google_mode param flag */
-  if (google_mode)
+  if (JINGLE_IS_GOOGLE_DIALECT (dialect) && trans_node == NULL)
     {
-      if (trans_node == NULL)
-        {
-          DEBUG ("no transport node, assuming GTalk3 dialect");
-          /* gtalk lj0.3 assumes google-p2p transport */
-          g_object_set (c->session, "dialect", JINGLE_DIALECT_GTALK3, NULL);
-        }
+      DEBUG ("no transport node, assuming GTalk3 dialect");
+      /* gtalk lj0.3 assumes google-p2p transport */
+      g_object_set (c->session, "dialect", JINGLE_DIALECT_GTALK3, NULL);
     }
 
   if (senders == NULL)
@@ -667,12 +659,10 @@ gabble_jingle_content_produce_node (GabbleJingleContent *c,
 {
   GabbleJingleContentPrivate *priv = c->priv;
   LmMessageNode *content_node, *trans_node;
-  JingleDialect dialect;
+  JingleDialect dialect = gabble_jingle_session_get_dialect (c->session);
   void (*produce_desc)(GabbleJingleContent *, LmMessageNode *) =
     GABBLE_JINGLE_CONTENT_GET_CLASS (c)->produce_description;
 
-  g_object_get (c->session, "dialect", &dialect, NULL);
-
   if ((dialect == JINGLE_DIALECT_GTALK3) ||
       (dialect == JINGLE_DIALECT_GTALK4))
     {
@@ -938,9 +928,7 @@ gabble_jingle_content_change_direction (GabbleJingleContent *c,
   GabbleJingleContentPrivate *priv = c->priv;
   LmMessage *msg;
   LmMessageNode *sess_node;
-  JingleDialect dialect;
-
-  g_object_get (c->session, "dialect", &dialect, NULL);
+  JingleDialect dialect = gabble_jingle_session_get_dialect (c->session);
 
   if (JINGLE_IS_GOOGLE_DIALECT (dialect))
     {
diff --git a/src/jingle-media-rtp.c b/src/jingle-media-rtp.c
index b7ec157..5a2837c 100644
--- a/src/jingle-media-rtp.c
+++ b/src/jingle-media-rtp.c
@@ -503,7 +503,7 @@ parse_description (GabbleJingleContent *content,
   GList *codecs = NULL;
   JingleCodec *p;
   LmMessageNode *node;
-  JingleDialect dialect;
+  JingleDialect dialect = gabble_jingle_session_get_dialect (content->session);
   gboolean video_session = FALSE;
 
   DEBUG ("node: %s", desc_node->name);
@@ -516,8 +516,6 @@ parse_description (GabbleJingleContent *content,
   if (mtype == JINGLE_MEDIA_TYPE_NONE)
     return;
 
-  g_object_get (content->session, "dialect", &dialect, NULL);
-
   DEBUG ("detected media type %u", mtype);
 
   if (dialect == JINGLE_DIALECT_GTALK3)
@@ -706,11 +704,9 @@ produce_description (GabbleJingleContent *obj, LmMessageNode *content_node)
   GabbleJingleMediaRtp *desc = GABBLE_JINGLE_MEDIA_RTP (obj);
   GabbleJingleMediaRtpPrivate *priv = desc->priv;
   GList *li;
-  JingleDialect dialect;
+  JingleDialect dialect = gabble_jingle_session_get_dialect (obj->session);
   LmMessageNode *desc_node;
 
-  g_object_get (obj->session, "dialect", &dialect, NULL);
-
   desc_node = produce_description_node (dialect, priv->media_type,
       content_node);
 
diff --git a/src/jingle-session.c b/src/jingle-session.c
index d625f2b..9135158 100644
--- a/src/jingle-session.c
+++ b/src/jingle-session.c
@@ -2275,6 +2275,12 @@ gabble_jingle_session_can_modify_contents (GabbleJingleSession *sess)
   return !JINGLE_IS_GOOGLE_DIALECT (sess->priv->dialect);
 }
 
+JingleDialect
+gabble_jingle_session_get_dialect (GabbleJingleSession *sess)
+{
+  return sess->priv->dialect;
+}
+
 /* Only to be used for the test suite */
 void
 gabble_set_jingle_session_timeout (guint ms)
diff --git a/src/jingle-session.h b/src/jingle-session.h
index ed9bd0d..545b576 100644
--- a/src/jingle-session.h
+++ b/src/jingle-session.h
@@ -108,6 +108,7 @@ GList *gabble_jingle_session_get_contents (GabbleJingleSession *sess);
 const gchar *gabble_jingle_session_get_peer_resource (
     GabbleJingleSession *sess);
 const gchar *gabble_jingle_session_get_sid (GabbleJingleSession *sess);
+JingleDialect gabble_jingle_session_get_dialect (GabbleJingleSession *sess);
 
 gboolean gabble_jingle_session_can_modify_contents (GabbleJingleSession *sess);
 
diff --git a/src/jingle-transport-google.c b/src/jingle-transport-google.c
index e2afbeb..7741c7a 100644
--- a/src/jingle-transport-google.c
+++ b/src/jingle-transport-google.c
@@ -237,7 +237,7 @@ parse_candidates (GabbleJingleTransportIface *obj,
   JingleDialect dialect;
 
   g_object_get (priv->content, "media-type", &media_type, NULL);
-  g_object_get (priv->content->session, "dialect", &dialect, NULL);
+  dialect = gabble_jingle_session_get_dialect (priv->content->session);
 
   for (node = transport_node->children; node; node = node->next)
     {
@@ -502,7 +502,7 @@ group_and_transmit_candidates (GabbleJingleTransportGoogle *transport,
         DEBUG ("Ignoring unknown component %d", c->component);
     }
 
-  g_object_get (priv->content->session, "dialect", &dialect, NULL);
+  dialect = gabble_jingle_session_get_dialect (priv->content->session);
   g_object_get (priv->content, "media-type", &media, NULL);
 
   if (media == JINGLE_MEDIA_TYPE_VIDEO && JINGLE_IS_GOOGLE_DIALECT (dialect))
-- 
1.5.6.5




More information about the telepathy-commits mailing list