Mercurial > pidgin.yaz
comparison libpurple/blist.c @ 30207:8b452039c329
propagate from branch 'im.pidgin.pidgin' (head 53abc38e3dfd2e9f8ae8c3e6532379d4b0dc333b)
to branch 'im.pidgin.cpw.malu.ft_thumbnails' (head 4d135ac4918d2e985a66786a6c07473911498c4f)
author | Marcus Lundblad <ml@update.uu.se> |
---|---|
date | Sun, 12 Jul 2009 20:47:45 +0000 |
parents | c7812bda30f1 |
children | 36aa9ed8cd39 |
comparison
equal
deleted
inserted
replaced
30206:8781cfb550bb | 30207:8b452039c329 |
---|---|
81 char *name; | 81 char *name; |
82 PurpleAccount *account; | 82 PurpleAccount *account; |
83 PurpleBlistNode *group; | 83 PurpleBlistNode *group; |
84 }; | 84 }; |
85 | 85 |
86 /* This function must not use purple_normalize */ | |
86 static guint _purple_blist_hbuddy_hash(struct _purple_hbuddy *hb) | 87 static guint _purple_blist_hbuddy_hash(struct _purple_hbuddy *hb) |
87 { | 88 { |
88 return g_str_hash(hb->name); | 89 return g_str_hash(hb->name); |
89 } | 90 } |
90 | 91 |
92 /* This function must not use purple_normalize */ | |
91 static guint _purple_blist_hbuddy_equal(struct _purple_hbuddy *hb1, struct _purple_hbuddy *hb2) | 93 static guint _purple_blist_hbuddy_equal(struct _purple_hbuddy *hb1, struct _purple_hbuddy *hb2) |
92 { | 94 { |
93 return (purple_strequal(hb1->name, hb2->name) && hb1->account == hb2->account && hb1->group == hb2->group); | 95 return (purple_strequal(hb1->name, hb2->name) && hb1->account == hb2->account && hb1->group == hb2->group); |
94 } | 96 } |
95 | 97 |
2350 g_return_val_if_fail(purplebuddylist != NULL, NULL); | 2352 g_return_val_if_fail(purplebuddylist != NULL, NULL); |
2351 g_return_val_if_fail(account != NULL, NULL); | 2353 g_return_val_if_fail(account != NULL, NULL); |
2352 g_return_val_if_fail((name != NULL) && (*name != '\0'), NULL); | 2354 g_return_val_if_fail((name != NULL) && (*name != '\0'), NULL); |
2353 | 2355 |
2354 hb.account = account; | 2356 hb.account = account; |
2355 hb.name = g_strdup(purple_normalize(account, name)); | 2357 hb.name = (gchar *)purple_normalize(account, name); |
2356 | 2358 |
2357 for (group = purplebuddylist->root; group; group = group->next) { | 2359 for (group = purplebuddylist->root; group; group = group->next) { |
2358 hb.group = group; | 2360 hb.group = group; |
2359 if ((buddy = g_hash_table_lookup(purplebuddylist->buddies, &hb))) { | 2361 if ((buddy = g_hash_table_lookup(purplebuddylist->buddies, &hb))) { |
2360 g_free(hb.name); | |
2361 return buddy; | 2362 return buddy; |
2362 } | 2363 } |
2363 } | 2364 } |
2364 g_free(hb.name); | |
2365 | 2365 |
2366 return NULL; | 2366 return NULL; |
2367 } | 2367 } |
2368 | 2368 |
2369 PurpleBuddy *purple_find_buddy_in_group(PurpleAccount *account, const char *name, | 2369 PurpleBuddy *purple_find_buddy_in_group(PurpleAccount *account, const char *name, |
3103 purple_timeout_remove(save_timer); | 3103 purple_timeout_remove(save_timer); |
3104 save_timer = 0; | 3104 save_timer = 0; |
3105 purple_blist_sync(); | 3105 purple_blist_sync(); |
3106 } | 3106 } |
3107 | 3107 |
3108 purple_blist_destroy(); | |
3109 | |
3108 node = purple_blist_get_root(); | 3110 node = purple_blist_get_root(); |
3109 while (node) { | 3111 while (node) { |
3110 next_node = node->next; | 3112 next_node = node->next; |
3111 purple_blist_node_destroy(node); | 3113 purple_blist_node_destroy(node); |
3112 node = next_node; | 3114 node = next_node; |
3113 } | 3115 } |
3114 purplebuddylist->root = NULL; | 3116 purplebuddylist->root = NULL; |
3115 | 3117 |
3116 g_hash_table_destroy(purplebuddylist->buddies); | 3118 g_hash_table_destroy(purplebuddylist->buddies); |
3117 g_hash_table_destroy(buddies_cache); | 3119 g_hash_table_destroy(buddies_cache); |
3118 | 3120 |
3121 PURPLE_DBUS_UNREGISTER_POINTER(purplebuddylist); | |
3122 g_free(purplebuddylist); | |
3123 purplebuddylist = NULL; | |
3124 | |
3119 purple_signals_disconnect_by_handle(purple_blist_get_handle()); | 3125 purple_signals_disconnect_by_handle(purple_blist_get_handle()); |
3120 purple_signals_unregister_by_instance(purple_blist_get_handle()); | 3126 purple_signals_unregister_by_instance(purple_blist_get_handle()); |
3121 } | 3127 } |