diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2014-01-22 12:04:04 +0100 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2014-01-22 17:31:43 +0100 |
commit | ed3c76d0faa1bf295b2286c6b638dbdf32fe191c (patch) | |
tree | 1c5c1913f2a81e9de4e949cdbcee946e14a3edfa | |
parent | 446f5fa537466c51246c5c5cc0c03f82cfb0b38e (diff) | |
download | telepathy-mission-control-ed3c76d0faa1bf295b2286c6b638dbdf32fe191c.tar.gz |
add mcd_channel_dup_immutable_properties_asv()
-rw-r--r-- | src/channel-utils.c | 18 | ||||
-rw-r--r-- | src/channel-utils.h | 2 | ||||
-rw-r--r-- | src/mcd-channel.c | 14 | ||||
-rw-r--r-- | src/mcd-channel.h | 2 |
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 */ |