Mercurial > pidgin.yaz
comparison libpurple/protocols/jabber/buddy.c @ 25953:cf29591fe78a
Only update the idle time on a buddy when getting info if the buddy already has
an idle time set. This will avoid setting idle time on a resource that won't
send an updated idle (going unidle) in a <presence/> later on (thus getting
"stuck" idle).
author | Marcus Lundblad <ml@update.uu.se> |
---|---|
date | Thu, 25 Dec 2008 10:48:49 +0000 |
parents | 6185767dc03c |
children | f2d533384535 |
comparison
equal
deleted
inserted
replaced
25952:6185767dc03c | 25953:cf29591fe78a |
---|---|
1644 when a server doesn't mark delayed presence */ | 1644 when a server doesn't mark delayed presence */ |
1645 jb = jabber_buddy_find(js, from, FALSE); | 1645 jb = jabber_buddy_find(js, from, FALSE); |
1646 if (jb) { | 1646 if (jb) { |
1647 resource = jabber_get_resource(from); | 1647 resource = jabber_get_resource(from); |
1648 buddy_name = jabber_get_bare_jid(from); | 1648 buddy_name = jabber_get_bare_jid(from); |
1649 /* if the resource already has an idle time set, we | |
1650 must have gotten it originally from a presence. In | |
1651 this case we update it. Otherwise don't update it, to | |
1652 avoid setting an idle and not getting informed about | |
1653 the resource getting unidle */ | |
1649 if (resource && buddy_name) { | 1654 if (resource && buddy_name) { |
1650 jbr = jabber_buddy_find_resource(jb, resource); | 1655 jbr = jabber_buddy_find_resource(jb, resource); |
1651 jbr->idle = time(NULL) - sec; | |
1652 | 1656 |
1653 if (jbr == | 1657 if (jbr->idle) { |
1654 jabber_buddy_find_resource(jb, NULL) && | 1658 if (sec) { |
1655 jbr->idle) { | 1659 jbr->idle = time(NULL) - sec; |
1656 purple_prpl_got_user_idle(js->gc->account, | 1660 } else { |
1657 buddy_name, jbr->idle, jbr->idle); | 1661 jbr->idle = 0; |
1662 } | |
1663 | |
1664 if (jbr == | |
1665 jabber_buddy_find_resource(jb, NULL)) { | |
1666 purple_prpl_got_user_idle(js->gc->account, | |
1667 buddy_name, jbr->idle, jbr->idle); | |
1668 } | |
1658 } | 1669 } |
1659 } | 1670 } |
1660 g_free(resource); | 1671 g_free(resource); |
1661 g_free(buddy_name); | 1672 g_free(buddy_name); |
1662 } | 1673 } |