diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2008-09-09 06:25:22 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2008-09-09 06:25:22 +0000 |
commit | f78ed949267f7fcc65243c4778f5adf1496b73e8 (patch) | |
tree | 12861a9faac1cf24164cc5d5ef27cdccdf7f60a2 /amiga/schedule.c | |
parent | c6ac553d3d45bc390ccfdd0b41907d29818e4219 (diff) | |
download | netsurf-f78ed949267f7fcc65243c4778f5adf1496b73e8.tar.gz netsurf-f78ed949267f7fcc65243c4778f5adf1496b73e8.tar.bz2 |
Disabled the new scheduler by default as it is more unstable than I thought :(
Defining AMI_SCHEDULER_USES_TIMER will enable it again.
svn path=/trunk/netsurf/; revision=5291
Diffstat (limited to 'amiga/schedule.c')
-rwxr-xr-x | amiga/schedule.c | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/amiga/schedule.c b/amiga/schedule.c index 8843c013b..4c80d9227 100755 --- a/amiga/schedule.c +++ b/amiga/schedule.c @@ -39,8 +39,15 @@ void schedule(int t, void (*callback)(void *p), void *p) struct timeval tv; obj = AddObject(schedule_list,AMINS_CALLBACK); + if(!obj) return; + obj->objstruct_size = sizeof(struct nscallback); obj->objstruct = AllocVec(obj->objstruct_size,MEMF_CLEAR); + if(!obj->objstruct) + { + DelObject(obj); + return; + } nscb = (struct nscallback *)obj->objstruct; @@ -55,15 +62,16 @@ void schedule(int t, void (*callback)(void *p), void *p) GetSysTime(&tv); AddTime(&nscb->tv,&tv); // now contains time when event occurs - - nscb->treq = AllocVec(sizeof(struct timerequest),MEMF_CLEAR); - - *nscb->treq = *tioreq; - nscb->treq->tr_node.io_Command=TR_ADDREQUEST; - nscb->treq->tr_time.tv_sec=nscb->tv.tv_sec; // secs - nscb->treq->tr_time.tv_micro=nscb->tv.tv_micro; // micro - SendIO((struct IORequest *)nscb->treq); - +#ifdef AMI_SCHEDULER_USES_TIMER + if(nscb->treq = AllocVec(sizeof(struct timerequest),MEMF_CLEAR)) + { + *nscb->treq = *tioreq; + nscb->treq->tr_node.io_Command=TR_ADDREQUEST; + nscb->treq->tr_time.tv_sec=nscb->tv.tv_sec; // secs + nscb->treq->tr_time.tv_micro=nscb->tv.tv_micro; // micro + SendIO((struct IORequest *)nscb->treq); + } +#endif nscb->callback = callback; nscb->p = p; } @@ -147,7 +155,7 @@ void ami_remove_timer_event(struct nscallback *nscb) if(nscb->treq) { - if(CheckIO((struct IORequest *)nscb->treq)==0) + if(CheckIO((struct IORequest *)nscb->treq)==NULL) AbortIO((struct IORequest *)nscb->treq); WaitIO((struct IORequest *)nscb->treq); |