diff options
author | Vincent Sanders <vince@netsurf-browser.org> | 2011-02-15 11:55:09 +0000 |
---|---|---|
committer | Vincent Sanders <vince@netsurf-browser.org> | 2011-02-15 11:55:09 +0000 |
commit | 3407760e64f1f3e6315aec58489a58b4a7efcc62 (patch) | |
tree | bccc72919071f3fbab2ba215df13b6ecffbc688f /windows/schedule.c | |
parent | e4035987a79b18d0ee3f8968a9bfd63080cf4068 (diff) | |
download | netsurf-3407760e64f1f3e6315aec58489a58b4a7efcc62.tar.gz netsurf-3407760e64f1f3e6315aec58489a58b4a7efcc62.tar.bz2 |
improve comments and add more explanation about subtleties
svn path=/trunk/netsurf/; revision=11686
Diffstat (limited to 'windows/schedule.c')
-rw-r--r-- | windows/schedule.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/windows/schedule.c b/windows/schedule.c index a37a0e051..f363d476a 100644 --- a/windows/schedule.c +++ b/windows/schedule.c @@ -50,7 +50,6 @@ struct nscallback * The callback function will be called as soon as possible after t cs have * passed. */ - void schedule(int cs_ival, void (*callback)(void *p), void *p) { struct nscallback *nscb; @@ -61,7 +60,7 @@ void schedule(int cs_ival, void (*callback)(void *p), void *p) nscb = calloc(1, sizeof(struct nscallback)); - LOG(("adding callback %p for %p(%p) at %d cs", nscb, callback, p, cs_ival)); + LOG(("adding callback %p for %p(%p) at %d cs", nscb, callback, p, cs_ival)); gettimeofday(&nscb->tv, NULL); timeradd(&nscb->tv, &tv, &nscb->tv); @@ -123,12 +122,8 @@ void schedule_remove(void (*callback)(void *p), void *p) } } -/** - * Process scheduled callbacks up to current time. - * - * @return The number of milliseconds untill the next scheduled event - * or -1 for no event. - */ + +/* exported interface documented in schedule.h */ int schedule_run(void) { @@ -169,11 +164,13 @@ schedule_run(void) free(unlnk_nscb); - /* need to deal with callback modifying the list. */ + /* dispatched events can modify the list, + * instead of locking we simply reset list + * enumeration to the start. + */ if (schedule_list == NULL) return -1; /* no more callbacks scheduled */ - /* reset enumeration to the start of the list */ cur_nscb = schedule_list; prev_nscb = NULL; nexttime = cur_nscb->tv; @@ -190,16 +187,17 @@ schedule_run(void) } } - /* make rettime relative to now */ + /* make returned time relative to now */ timersub(&nexttime, &tv, &rettime); -#if DEBUG_SCHEDULER +#if defined(DEBUG_SCHEDULER) LOG(("returning time to next event as %ldms",(rettime.tv_sec * 1000) + (rettime.tv_usec / 1000))); #endif /* return next event time in milliseconds (24days max wait) */ return (rettime.tv_sec * 1000) + (rettime.tv_usec / 1000); } +/* exported interface documented in schedule.h */ void list_schedule(void) { struct timeval tv; |