[telepathy-mission-control/master] McdAccount: value_is_same: add support for object path and GStrv values
Simon McVittie
simon.mcvittie at collabora.co.uk
Wed Jun 10 03:37:57 PDT 2009
---
src/mcd-account.c | 39 ++++++++++++++++++++++++++++++++++++---
1 files changed, 36 insertions(+), 3 deletions(-)
diff --git a/src/mcd-account.c b/src/mcd-account.c
index ced53ed..e371495 100644
--- a/src/mcd-account.c
+++ b/src/mcd-account.c
@@ -217,9 +217,42 @@ value_is_same (const GValue *val1, const GValue *val2)
return g_value_get_double (val1) == g_value_get_double (val2);
default:
- g_warning ("%s: unexpected type %s",
- G_STRFUNC, G_VALUE_TYPE_NAME (val1));
- return FALSE;
+ if (G_VALUE_TYPE (val1) == DBUS_TYPE_G_OBJECT_PATH)
+ {
+ return !tp_strdiff (g_value_get_boxed (val1),
+ g_value_get_boxed (val2));
+ }
+ else if (G_VALUE_TYPE (val1) == G_TYPE_STRV)
+ {
+ gchar **left = g_value_get_boxed (val1);
+ gchar **right = g_value_get_boxed (val2);
+
+ if (left == NULL || right == NULL ||
+ *left == NULL || *right == NULL)
+ {
+ return ((left == NULL || *left == NULL) &&
+ (right == NULL || *right == NULL));
+ }
+
+ while (*left != NULL || *right != NULL)
+ {
+ if (tp_strdiff (*left, *right))
+ {
+ return FALSE;
+ }
+
+ left++;
+ right++;
+ }
+
+ return TRUE;
+ }
+ else
+ {
+ g_warning ("%s: unexpected type %s",
+ G_STRFUNC, G_VALUE_TYPE_NAME (val1));
+ return FALSE;
+ }
}
}
--
1.5.6.5
More information about the telepathy-commits
mailing list