]> git.0d.be Git - empathy.git/commitdiff
empathy_proxy_hash and _equal can be used only with proxies that unsure unique bus...
authorXavier Claessens <xclaesse@src.gnome.org>
Tue, 27 May 2008 17:34:40 +0000 (17:34 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Tue, 27 May 2008 17:34:40 +0000 (17:34 +0000)
svn path=/trunk/; revision=1127

libempathy/empathy-utils.c

index f62d28e4ce77214f88cacef8f3cffb27f7044c76..3762b89ae7e2ae81b047eccdce203471ddf66a40 100644 (file)
@@ -630,12 +630,13 @@ empathy_disconnect_account_status_changed (gpointer token)
 guint
 empathy_proxy_hash (gconstpointer key)
 {
-       TpProxy *proxy = TP_PROXY (key);
+       TpProxy      *proxy = TP_PROXY (key);
+       TpProxyClass *proxy_class = TP_PROXY_GET_CLASS (key);
 
        g_return_val_if_fail (TP_IS_PROXY (proxy), 0);
+       g_return_val_if_fail (proxy_class->must_have_unique_name, 0);
 
-       return g_str_hash (proxy->object_path) +
-              g_str_hash (proxy->bus_name);
+       return g_str_hash (proxy->object_path) ^ g_str_hash (proxy->bus_name);
 }
 
 gboolean
@@ -644,9 +645,13 @@ empathy_proxy_equal (gconstpointer a,
 {
        TpProxy *proxy_a = TP_PROXY (a);
        TpProxy *proxy_b = TP_PROXY (b);
+       TpProxyClass *proxy_a_class = TP_PROXY_GET_CLASS (a);
+       TpProxyClass *proxy_b_class = TP_PROXY_GET_CLASS (b);
 
        g_return_val_if_fail (TP_IS_PROXY (proxy_a), FALSE);
        g_return_val_if_fail (TP_IS_PROXY (proxy_b), FALSE);
+       g_return_val_if_fail (proxy_a_class->must_have_unique_name, 0);
+       g_return_val_if_fail (proxy_b_class->must_have_unique_name, 0);
 
        return g_str_equal (proxy_a->object_path, proxy_b->object_path) &&
               g_str_equal (proxy_a->bus_name, proxy_b->bus_name);