[telepathy-mission-control/master] McdConnection: add a "ready" signal, emitted whenever our TpConnection becomes ready

Simon McVittie simon.mcvittie at collabora.co.uk
Mon Jun 1 09:48:49 PDT 2009


---
 .../tmpl/mcd-connection.sgml                       |    7 +++++++
 src/mcd-connection-priv.h                          |    2 ++
 src/mcd-connection.c                               |   17 +++++++++++++++++
 3 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/doc/reference/libmissioncontrol-server/tmpl/mcd-connection.sgml b/doc/reference/libmissioncontrol-server/tmpl/mcd-connection.sgml
index b296e48..b96b1ce 100644
--- a/doc/reference/libmissioncontrol-server/tmpl/mcd-connection.sgml
+++ b/doc/reference/libmissioncontrol-server/tmpl/mcd-connection.sgml
@@ -32,6 +32,13 @@ McdConnection
 @arg1: 
 @arg2: 
 
+<!-- ##### SIGNAL McdConnection::ready ##### -->
+<para>
+
+</para>
+
+ at mcdconnection: the object which received the signal.
+
 <!-- ##### SIGNAL McdConnection::self-presence-changed ##### -->
 <para>
 
diff --git a/src/mcd-connection-priv.h b/src/mcd-connection-priv.h
index db5e6bb..b394947 100644
--- a/src/mcd-connection-priv.h
+++ b/src/mcd-connection-priv.h
@@ -46,6 +46,8 @@ void _mcd_connection_set_tp_connection (McdConnection *connection,
 
 G_GNUC_INTERNAL void _mcd_connection_start_dispatching (McdConnection *self);
 
+G_GNUC_INTERNAL gboolean _mcd_connection_is_ready (McdConnection *self);
+
 G_END_DECLS
 
 #endif
diff --git a/src/mcd-connection.c b/src/mcd-connection.c
index 1ac6c6d..e2cc25b 100644
--- a/src/mcd-connection.c
+++ b/src/mcd-connection.c
@@ -148,6 +148,7 @@ enum
 
 enum
 {
+    READY,
     SELF_PRESENCE_CHANGED,
     CONNECTION_STATUS_CHANGED,
     N_SIGNALS
@@ -1417,6 +1418,8 @@ on_connection_ready (TpConnection *tp_conn, const GError *error,
 	_mcd_connection_setup_alias (connection);
 
     _mcd_dispatcher_add_connection (priv->dispatcher, connection);
+
+    g_signal_emit (connection, signals[READY], 0);
 }
 
 void
@@ -1850,6 +1853,12 @@ mcd_connection_class_init (McdConnectionClass * klass)
         G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, 0,
         NULL, NULL, _mcd_marshal_VOID__UINT_UINT,
         G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT);
+
+    signals[READY] = g_signal_new ("ready",
+        G_OBJECT_CLASS_TYPE (klass),
+        G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, 0,
+        NULL, NULL, g_cclosure_marshal_VOID__VOID,
+        G_TYPE_NONE, 0);
 }
 
 static void
@@ -2208,3 +2217,11 @@ mcd_connection_get_tp_connection (McdConnection *connection)
     return connection->priv->tp_conn;
 }
 
+gboolean
+_mcd_connection_is_ready (McdConnection *self)
+{
+    g_return_val_if_fail (MCD_IS_CONNECTION (self), FALSE);
+
+    return (self->priv->tp_conn != NULL) &&
+        tp_connection_is_ready (self->priv->tp_conn);
+}
-- 
1.5.6.5




More information about the telepathy-commits mailing list