[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