Changeset 5571
- Timestamp:
- 06/03/08 16:00:40 (3 months ago)
- Files:
-
- libwired/trunk/libwired/thread/wi-timer.c (modified) (7 diffs)
- libwired/trunk/test/tests/wi-timer-tests.c (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
libwired/trunk/libwired/thread/wi-timer.c
r5302 r5571 29 29 #include "config.h" 30 30 31 #ifdef WI_PTHREADS 31 #ifndef WI_PTHREADS 32 33 int wi_timer_dummy = 0; 34 35 #else 32 36 33 37 #include <pthread.h> … … 36 40 #include <wired/wi-lock.h> 37 41 #include <wired/wi-log.h> 42 #include <wired/wi-macros.h> 38 43 #include <wired/wi-private.h> 39 44 #include <wired/wi-runtime.h> … … 42 47 #include <wired/wi-timer.h> 43 48 44 #define _WI_TIMER_ EPSILON 0.249 #define _WI_TIMER_MINIMUM_INTERVAL 0.001 45 50 46 51 … … 139 144 interval = wi_time_interval(); 140 145 141 if(timer && timer->fire - interval <= _WI_TIMER_ EPSILON)146 if(timer && timer->fire - interval <= _WI_TIMER_MINIMUM_INTERVAL) 142 147 fire_timer = wi_retain(timer); 143 148 } else { 144 149 diff = timer->fire - interval; 145 150 146 if(diff <= _WI_TIMER_ EPSILON) {151 if(diff <= _WI_TIMER_MINIMUM_INTERVAL) { 147 152 fire_timer = wi_retain(timer); 148 153 … … 187 192 wi_timer_t * wi_timer_init_with_function(wi_timer_t *timer, wi_timer_func_t *func, wi_time_interval_t interval, wi_boolean_t repeats) { 188 193 timer->func = func; 189 timer->interval = interval;194 timer->interval = WI_MAX(interval, _WI_TIMER_MINIMUM_INTERVAL); 190 195 timer->repeats = repeats; 191 196 … … 248 253 249 254 timer->scheduled = false; 255 timer->repeats = false; 250 256 } 251 257 … … 271 277 272 278 void wi_timer_reschedule(wi_timer_t *timer, wi_time_interval_t interval) { 273 timer->interval = interval;279 timer->interval = WI_MAX(interval, _WI_TIMER_MINIMUM_INTERVAL); 274 280 275 281 if(timer->scheduled)
