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 }