ObjFW  Diff

Differences From Artifact [b78dbdb727]:

To Artifact [30c14bee93]:


85
86
87
88
89
90
91
92

93
94
95




96
97
98
99
100
101
102
103
104


105
106
107



108
109
110
111
112
113
114
85
86
87
88
89
90
91

92
93


94
95
96
97
98
99
100
101
102
103
104
105

106
107
108


109
110
111
112
113
114
115
116
117
118







-
+

-
-
+
+
+
+








-
+
+

-
-
+
+
+







- (void)run
{
	for (;;) {
		void *pool = objc_autoreleasePoolPush();
		OFDate *now = [OFDate date];

		@synchronized (timersQueue) {
			of_list_object_t *iter, *next;
			of_list_object_t *iter;

			for (iter = [timersQueue firstListObject];
			    iter != NULL; iter = next) {
			while ((iter = [timersQueue firstListObject]) != NULL) {
				void *pool2 = objc_autoreleasePoolPush();
				OFTimer *timer;

				/*
				 * If a timer is in the future, we can
				 * stop now as it is sorted.
				 */
				if ([[iter->object fireDate] compare: now] ==
				    OF_ORDERED_DESCENDING)
					break;

				[iter->object fire];
				timer = [[iter->object retain] autorelease];
				[timersQueue removeListObject: iter];

				next = iter->next;
				[timersQueue removeListObject: iter];
				[timer fire];

				objc_autoreleasePoolPop(pool2);
			}

			/* Sleep until we reach the next timer */
			if (iter != NULL)
				[OFThread sleepUntilDate:
				    [iter->object fireDate]];
			else {