summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2014-01-22 12:04:04 +0100
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2014-01-22 17:31:43 +0100
commited3c76d0faa1bf295b2286c6b638dbdf32fe191c (patch)
tree1c5c1913f2a81e9de4e949cdbcee946e14a3edfa
parent446f5fa537466c51246c5c5cc0c03f82cfb0b38e (diff)
downloadtelepathy-mission-control-ed3c76d0faa1bf295b2286c6b638dbdf32fe191c.tar.gz
add mcd_channel_dup_immutable_properties_asv()
-rw-r--r--src/channel-utils.c18
-rw-r--r--src/channel-utils.h2
-rw-r--r--src/mcd-channel.c14
-rw-r--r--src/mcd-channel.h2
4 files changed, 36 insertions, 0 deletions
diff --git a/src/channel-utils.c b/src/channel-utils.c
index 194ce50f..5bd0cd8d 100644
--- a/src/channel-utils.c
+++ b/src/channel-utils.c
@@ -137,4 +137,22 @@ _mcd_tp_channel_details_free (GPtrArray *channels)
g_boxed_free (TP_ARRAY_TYPE_CHANNEL_DETAILS_LIST, channels);
}
+GHashTable *
+_mcd_tp_channel_dup_immutable_properties_asv (TpChannel *channel)
+{
+ GVariant *props;
+ GHashTable *asv;
+ GValue v = G_VALUE_INIT;
+
+ props = tp_channel_dup_immutable_properties (channel);
+ g_return_val_if_fail (props != NULL, NULL);
+
+ dbus_g_value_parse_g_variant (props, &v);
+ asv = g_value_dup_boxed (&v);
+
+ g_variant_unref (props);
+ g_value_unset (&v);
+
+ return asv;
+}
diff --git a/src/channel-utils.h b/src/channel-utils.h
index 0dcb5062..5b8c24c5 100644
--- a/src/channel-utils.h
+++ b/src/channel-utils.h
@@ -44,6 +44,8 @@ void _mcd_tp_channel_details_free (GPtrArray *channels);
G_GNUC_INTERNAL gboolean _mcd_tp_channel_should_close (TpChannel *channel,
const gchar *verb);
+G_GNUC_INTERNAL GHashTable * _mcd_tp_channel_dup_immutable_properties_asv (TpChannel *channel);
+
G_END_DECLS
#endif
diff --git a/src/mcd-channel.c b/src/mcd-channel.c
index e2ec67db..90a541b2 100644
--- a/src/mcd-channel.c
+++ b/src/mcd-channel.c
@@ -769,6 +769,20 @@ mcd_channel_dup_immutable_properties (McdChannel *channel)
return ret;
}
+GHashTable *
+mcd_channel_dup_immutable_properties_asv (McdChannel *channel)
+{
+ g_return_val_if_fail (MCD_IS_CHANNEL (channel), NULL);
+
+ if (channel->priv->tp_chan == NULL)
+ {
+ DEBUG ("Channel %p has no associated TpChannel", channel);
+ return NULL;
+ }
+
+ return _mcd_tp_channel_dup_immutable_properties_asv (channel->priv->tp_chan);
+}
+
/**
* mcd_channel_take_error:
* @channel: the #McdChannel.
diff --git a/src/mcd-channel.h b/src/mcd-channel.h
index b7fc5a16..62b4d3f4 100644
--- a/src/mcd-channel.h
+++ b/src/mcd-channel.h
@@ -103,5 +103,7 @@ const GError *mcd_channel_get_error (McdChannel *channel);
GVariant *mcd_channel_dup_immutable_properties (McdChannel *channel);
+GHashTable * mcd_channel_dup_immutable_properties_asv (McdChannel *channel);
+
G_END_DECLS
#endif /* MCD_CHANNEL_H */