Mercurial > pidgin
diff libpurple/protocols/qq/buddy_list.c @ 24157:1ee91ff0d5fe
2008.10.09 - ccpaging <ccpaging(at)gmail.com>
* Update 'group' protocol
* Functions of group_find, group_free, group_search merged into group_join and group_internal
* Removed group_find.c/h, group_free.c/h, group_search.c/h
author | SHiNE CsyFeK <csyfek@gmail.com> |
---|---|
date | Tue, 28 Oct 2008 16:38:16 +0000 |
parents | 147f1b17b6ce |
children | d35672443baa |
line wrap: on
line diff
--- a/libpurple/protocols/qq/buddy_list.c Tue Oct 28 16:35:06 2008 +0000 +++ b/libpurple/protocols/qq/buddy_list.c Tue Oct 28 16:38:16 2008 +0000 @@ -37,7 +37,6 @@ #include "qq_define.h" #include "qq_base.h" #include "group.h" -#include "group_find.h" #include "group_internal.h" #include "group_info.h" @@ -236,13 +235,15 @@ if(0 != fe->s->client_tag) q_bud->client_tag = fe->s->client_tag; */ + if (bd->status != bs.status || bd->comm_flag != packet.comm_flag) { + bd->status = bs.status; + bd->comm_flag = packet.comm_flag; + qq_update_buddy_status(gc, bd->uid, bd->status, bd->comm_flag); + } bd->ip.s_addr = bs.ip.s_addr; bd->port = bs.port; - bd->status = bs.status; bd->ext_flag = packet.ext_flag; - bd->comm_flag = packet.comm_flag; bd->last_update = time(NULL); - qq_update_buddy_status(gc, bd->uid, bd->status, bd->comm_flag); count++; } @@ -358,7 +359,7 @@ guint32 unknown, position; guint32 uid; guint8 type; - qq_group *group; + qq_room_data *rmd; g_return_val_if_fail(data != NULL && data_len != 0, -1); @@ -394,15 +395,12 @@ * qq_request_get_buddies */ ++i; } else { /* a group */ - group = qq_room_search_id(gc, uid); - if(group == NULL) { - purple_debug_info("QQ", - "Not find room id %d in qq_process_get_buddies_and_rooms\n", uid); - qq_send_room_cmd_mess(gc, QQ_ROOM_CMD_GET_INFO, uid, NULL, 0, - 0, QQ_ROOM_INFO_CREATE); + rmd = qq_room_data_find(gc, uid); + if(rmd == NULL) { + purple_debug_info("QQ", "Unknow room id %d", uid); + qq_send_room_cmd_only(gc, QQ_ROOM_CMD_GET_INFO, uid); } else { - group->my_role = QQ_ROOM_ROLE_YES; - qq_group_refresh(gc, group); + rmd->my_role = QQ_ROOM_ROLE_YES; } ++j; } @@ -561,10 +559,11 @@ bd->ip.s_addr = bs.ip.s_addr; bd->port = bs.port; } - bd->status =bs.status; - + if (bd->status != bs.status) { + bd->status = bs.status; + qq_update_buddy_status(gc, bd->uid, bd->status, bd->comm_flag); + } bd->last_update = time(NULL); - qq_update_buddy_status(gc, bd->uid, bd->status, bd->comm_flag); if (bd->status == QQ_BUDDY_ONLINE_NORMAL && bd->level <= 0) { if (qd->client_version >= 2007) { @@ -649,6 +648,7 @@ if (bd->uid == qd->uid) continue; /* my status is always online in my buddy list */ if (tm_limit < bd->last_update) continue; if (bd->status == QQ_BUDDY_ONLINE_INVISIBLE) continue; + if (bd->status == QQ_BUDDY_CHANGE_TO_OFFLINE) continue; bd->status = QQ_BUDDY_CHANGE_TO_OFFLINE; bd->last_update = time(NULL);