diff options
Diffstat (limited to 'amiga/schedule.c')
-rwxr-xr-x | amiga/schedule.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/amiga/schedule.c b/amiga/schedule.c index 1c670c4bb..030ed266a 100755 --- a/amiga/schedule.c +++ b/amiga/schedule.c @@ -133,7 +133,7 @@ void schedule_run(BOOL poll) nscb = pblHeapGetFirst(schedule_list); - if(nscb == -1) return false; + if(nscb == -1) return; if(poll) { @@ -188,3 +188,33 @@ void ami_schedule_free(void) { pblHeapFree(schedule_list); } + +void ami_schedule_open_timer(void) +{ + msgport = AllocSysObjectTags(ASOT_PORT, + ASO_NoTrack,FALSE, + TAG_DONE); + + tioreq = (struct TimeRequest *)AllocSysObjectTags(ASOT_IOREQUEST, + ASOIOR_Size,sizeof(struct TimeRequest), + ASOIOR_ReplyPort,msgport, + ASO_NoTrack,FALSE, + TAG_DONE); + + OpenDevice("timer.device", UNIT_WAITUNTIL, (struct IORequest *)tioreq, 0); + + TimerBase = (struct Device *)tioreq->Request.io_Device; + ITimer = (struct TimerIFace *)GetInterface((struct Library *)TimerBase,"main",1,NULL); +} + +void ami_schedule_close_timer(void) +{ + if(ITimer) + { + DropInterface((struct Interface *)ITimer); + } + + CloseDevice((struct IORequest *) tioreq); + FreeSysObject(ASOT_IOREQUEST,tioreq); + FreeSysObject(ASOT_PORT,msgport); +} |