[telepathy-mission-control/master] McdChannel: add _mcd_channel_undispatchable

Simon McVittie simon.mcvittie at collabora.co.uk
Tue Apr 7 08:28:14 PDT 2009


---
 src/mcd-channel.c |   29 +++++++++++++++++++++++++++++
 src/mcd-channel.h |    3 ++-
 2 files changed, 31 insertions(+), 1 deletions(-)

diff --git a/src/mcd-channel.c b/src/mcd-channel.c
index a17b79f..ddafe68 100644
--- a/src/mcd-channel.c
+++ b/src/mcd-channel.c
@@ -260,6 +260,35 @@ mcd_channel_close (McdChannel *channel)
     }
 }
 
+void
+_mcd_channel_undispatchable (McdChannel *channel)
+{
+    McdChannelPrivate *priv = MCD_CHANNEL_PRIV (channel);
+
+    if (priv->tp_chan == NULL ||
+        tp_proxy_get_invalidated (priv->tp_chan) != NULL ||
+        tp_channel_get_channel_type_id (priv->tp_chan) ==
+            TP_IFACE_QUARK_CHANNEL_TYPE_CONTACT_LIST)
+    {
+        return;
+    }
+
+    /* Call Destroy() if possible, or Close() */
+    if (tp_proxy_has_interface_by_id (priv->tp_chan,
+        TP_IFACE_QUARK_CHANNEL_INTERFACE_DESTROYABLE))
+    {
+        tp_cli_channel_interface_destroyable_call_destroy (priv->tp_chan,
+                                                           -1, NULL,
+                                                           NULL, NULL,
+                                                           NULL);
+    }
+    else
+    {
+        tp_cli_channel_call_close (priv->tp_chan, -1, NULL, NULL, NULL,
+                                   NULL);
+    }
+}
+
 static void
 _mcd_channel_release_tp_channel (McdChannel *channel, gboolean close_channel)
 {
diff --git a/src/mcd-channel.h b/src/mcd-channel.h
index 123ba55..6073699 100644
--- a/src/mcd-channel.h
+++ b/src/mcd-channel.h
@@ -135,8 +135,9 @@ TpChannel *mcd_channel_get_tp_channel (McdChannel *channel);
 void mcd_channel_take_error (McdChannel *channel, GError *error);
 const GError *mcd_channel_get_error (McdChannel *channel);
 
-
 /* not exported: */
+G_GNUC_INTERNAL void _mcd_channel_undispatchable (McdChannel *self);
+
 G_GNUC_INTERNAL
 gboolean _mcd_channel_create_proxy_old (McdChannel *channel,
                                         TpConnection *connection,
-- 
1.5.6.5




More information about the telepathy-commits mailing list