[telepathy-gabble/master] Add separate hold, ringing and mute properties

Will Thompson will.thompson at collabora.co.uk
Thu May 21 02:20:35 PDT 2009


These concepts are now orthogonal at the XMPP level, and the first two
apply to the session as a whole, so it makes no sense to combine them
into one property on each stream.
---
 src/jingle-media-rtp.c |   14 ++++++++++++++
 src/jingle-session.c   |   21 +++++++++++++++++++++
 2 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/src/jingle-media-rtp.c b/src/jingle-media-rtp.c
index ab89096..d944b73 100644
--- a/src/jingle-media-rtp.c
+++ b/src/jingle-media-rtp.c
@@ -58,6 +58,7 @@ enum
 {
   PROP_MEDIA_TYPE = 1,
   PROP_REMOTE_STATE,
+  PROP_REMOTE_MUTE,
   LAST_PROPERTY
 };
 
@@ -78,6 +79,8 @@ struct _GabbleJingleMediaRtpPrivate
   GList *remote_codecs;
   JingleMediaType media_type;
   JingleRtpRemoteState remote_state;
+  gboolean remote_mute;
+
   gboolean dispose_has_run;
 };
 
@@ -191,6 +194,9 @@ gabble_jingle_media_rtp_get_property (GObject *object,
     case PROP_REMOTE_STATE:
       g_value_set_uint (value, priv->remote_state);
       break;
+    case PROP_REMOTE_MUTE:
+      g_value_set_boolean (value, priv->remote_mute);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -210,6 +216,9 @@ gabble_jingle_media_rtp_set_property (GObject *object,
     case PROP_MEDIA_TYPE:
       priv->media_type = g_value_get_uint (value);
       break;
+    case PROP_REMOTE_MUTE:
+      priv->remote_mute = g_value_get_boolean (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -258,6 +267,11 @@ gabble_jingle_media_rtp_class_init (GabbleJingleMediaRtpClass *cls)
       G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
   g_object_class_install_property (object_class, PROP_REMOTE_STATE, param_spec);
 
+  param_spec = g_param_spec_boolean ("remote-mute", "Remote mute",
+      "TRUE if the peer has muted this stream", FALSE,
+      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (object_class, PROP_REMOTE_MUTE, param_spec);
+
   /* signal definitions */
 
   signals[REMOTE_CODECS] = g_signal_new ("remote-codecs",
diff --git a/src/jingle-session.c b/src/jingle-session.c
index 4b76944..e06f6ef 100644
--- a/src/jingle-session.c
+++ b/src/jingle-session.c
@@ -58,6 +58,8 @@ enum
   PROP_LOCAL_INITIATOR,
   PROP_STATE,
   PROP_DIALECT,
+  PROP_REMOTE_HOLD,
+  PROP_REMOTE_RINGING,
   LAST_PROPERTY
 };
 
@@ -81,6 +83,9 @@ struct _GabbleJingleSessionPrivate
   gboolean locally_accepted;
   gboolean locally_terminated;
 
+  gboolean remote_hold;
+  gboolean remote_ringing;
+
   guint timer_id;
 
   gboolean dispose_has_run;
@@ -219,6 +224,12 @@ gabble_jingle_session_get_property (GObject *object,
     case PROP_DIALECT:
       g_value_set_uint (value, priv->dialect);
       break;
+    case PROP_REMOTE_HOLD:
+      g_value_set_boolean (value, priv->remote_hold);
+      break;
+    case PROP_REMOTE_RINGING:
+      g_value_set_boolean (value, priv->remote_ringing);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -366,6 +377,16 @@ gabble_jingle_session_class_init (GabbleJingleSessionClass *cls)
                                   G_PARAM_STATIC_BLURB);
   g_object_class_install_property (object_class, PROP_DIALECT, param_spec);
 
+  param_spec = g_param_spec_boolean ("remote-hold", "Remote hold",
+      "TRUE if the peer has placed us on hold", FALSE,
+      G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (object_class, PROP_REMOTE_HOLD, param_spec);
+
+  param_spec = g_param_spec_boolean ("remote-ringing", "Remote ringing",
+      "TRUE if the peer's client is ringing", FALSE,
+      G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (object_class, PROP_REMOTE_RINGING,
+      param_spec);
 
   /* signal definitions */
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list