diff src/server.c @ 9237:fac583b4ecdf

[gaim-migrate @ 10035] Make sure that the buddy we're emitting buddy-idle-changed for is indeed online and idle. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Tue, 08 Jun 2004 02:20:14 +0000
parents e8d86fd68552
children 7a8aa87164ae
line wrap: on
line diff
--- a/src/server.c	Tue Jun 08 02:12:40 2004 +0000
+++ b/src/server.c	Tue Jun 08 02:20:14 2004 +0000
@@ -1075,12 +1075,23 @@
 static gboolean
 idle_timeout_cb(void)
 {
-	GList *l;
+	GList *l, *l_next;
+
+	for (l = idle_buddies; l != NULL; l = l_next)
+	{
+		GaimBuddy *buddy = (GaimBuddy *)l->data;
+
+		l_next = l->next;
 
-	for (l = idle_buddies; l != NULL; l = l->next)
-	{
-		gaim_signal_emit(gaim_blist_get_handle(), "buddy-idle-updated",
-						 l->data);
+		if (!GAIM_BUDDY_IS_ONLINE(buddy) || buddy->idle <= 0)
+		{
+			remove_idle_buddy(buddy);
+		}
+		else
+		{
+			gaim_signal_emit(gaim_blist_get_handle(), "buddy-idle-updated",
+							 l->data);
+		}
 	}
 
 	return TRUE;