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 }