| 468 return ((x->gc != y->gc) || g_strcasecmp(x->who, y->who)); |
468 return ((x->gc != y->gc) || g_strcasecmp(x->who, y->who)); |
| 469 } |
469 } |
| 470 |
470 |
| 471 void set_icon_data(struct gaim_connection *gc, char *who, void *data, int len) |
471 void set_icon_data(struct gaim_connection *gc, char *who, void *data, int len) |
| 472 { |
472 { |
| 473 struct icon_data tmp = { gc, normalize(who), NULL, 0 }; |
473 struct icon_data tmp; |
| 474 GList *l = g_list_find_custom(icons, &tmp, find_icon_data); |
474 GList *l; |
| 475 struct icon_data *id = l ? l->data : NULL; |
475 struct icon_data *id; |
| |
476 tmp.gc = gc; |
| |
477 tmp.who = normalize(who); |
| |
478 tmp.data=NULL; |
| |
479 tmp.len = 0; |
| |
480 l = g_list_find_custom(icons, &tmp, find_icon_data); |
| |
481 id = l ? l->data : NULL; |
| 476 |
482 |
| 477 if (id) { |
483 if (id) { |
| 478 g_free(id->data); |
484 g_free(id->data); |
| 479 if (!data) { |
485 if (!data) { |
| 480 icons = g_list_remove(icons, id); |
486 icons = g_list_remove(icons, id); |