Changeset 5302
- Timestamp:
- 02/22/08 10:55:25 (7 months ago)
- Files:
-
- libwired/trunk/libwired/thread/wi-timer.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
libwired/trunk/libwired/thread/wi-timer.c
r4855 r5302 140 140 141 141 if(timer && timer->fire - interval <= _WI_TIMER_EPSILON) 142 fire_timer = timer;142 fire_timer = wi_retain(timer); 143 143 } else { 144 144 diff = timer->fire - interval; 145 145 146 146 if(diff <= _WI_TIMER_EPSILON) { 147 fire_timer = timer;147 fire_timer = wi_retain(timer); 148 148 149 149 locked = false; 150 150 } else { 151 151 if(!wi_condition_lock_lock_when_condition(_wi_timer_lock, 1, diff)) 152 fire_timer = wi_ array_first_data(_wi_timers);152 fire_timer = wi_retain(wi_array_first_data(_wi_timers)); 153 153 } 154 154 } 155 156 if(locked) 157 wi_condition_lock_unlock_with_condition(_wi_timer_lock, 0); 155 158 156 159 if(fire_timer) { … … 161 164 if(timer->repeats) 162 165 _wi_timer_schedule(fire_timer); 166 167 wi_release(fire_timer); 163 168 } 164 165 if(locked)166 wi_condition_lock_unlock_with_condition(_wi_timer_lock, 0);167 169 168 170 if(++i % 100 == 0)
