diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2009-10-15 21:35:29 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2009-10-15 21:35:29 +0000 |
commit | 4059d2b0961a6361d422854524b2be0235719c62 (patch) | |
tree | a925bed36e4d948100b3cad9a040a0562c91596f /amiga | |
parent | 87695acd33f4285dd3c9f4da7568acff9c33016e (diff) | |
download | netsurf-4059d2b0961a6361d422854524b2be0235719c62.tar.gz netsurf-4059d2b0961a6361d422854524b2be0235719c62.tar.bz2 |
Fix-up the timer.device scheduler and reinstate it as default. Unfortunately this
doesn't remove the need for INTUITICKS messages as we still need to break out for page
reflow (which doesn't use the scheduler), but it should make animations more accurate.
svn path=/trunk/netsurf/; revision=9648
Diffstat (limited to 'amiga')
-rwxr-xr-x | amiga/gui.c | 16 | ||||
-rwxr-xr-x | amiga/schedule.c | 8 | ||||
-rwxr-xr-x | amiga/schedule.h | 1 |
3 files changed, 13 insertions, 12 deletions
diff --git a/amiga/gui.c b/amiga/gui.c index 5ec6a5374..f03dcd85f 100755 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -113,7 +113,6 @@ char *quirks_stylesheet_url; char *adblock_stylesheet_url; struct MsgPort *appport; -struct MsgPort *msgport; struct Device *TimerBase; struct TimerIFace *ITimer; struct Library *PopupMenuBase = NULL; @@ -1508,7 +1507,7 @@ void ami_get_msg(void) ULONG appsig = 1L << appport->mp_SigBit; ULONG schedulesig = 1L << msgport->mp_SigBit; ULONG signal; - struct Message *timermsg = NULL; + struct TimerRequest *timermsg = NULL; struct MsgPort *printmsgport = ami_print_get_msgport(); ULONG printsig = 1L << printmsgport->mp_SigBit; ULONG signalmask = winsignal | appsig | schedulesig | rxsig | printsig | applibsig; @@ -1538,8 +1537,8 @@ void ami_get_msg(void) } else if(signal & schedulesig) { - while(GetMsg(msgport)) - schedule_run(); + timermsg = (struct TimeRequest *)GetMsg(msgport); + //schedule_run(); } } @@ -1951,7 +1950,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, WA_SmartRefresh,TRUE, WA_IDCMP,IDCMP_MENUPICK | IDCMP_MOUSEMOVE | IDCMP_MOUSEBUTTONS | IDCMP_NEWSIZE | IDCMP_RAWKEY | IDCMP_GADGETUP | IDCMP_SIZEVERIFY | - IDCMP_IDCMPUPDATE | IDCMP_INTUITICKS | IDCMP_EXTENDEDMOUSE, + IDCMP_IDCMPUPDATE | IDCMP_EXTENDEDMOUSE | IDCMP_INTUITICKS, // WINDOW_IconifyGadget, TRUE, // WINDOW_NewMenu,menu, WINDOW_HorizProp,1, @@ -2038,7 +2037,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, IDCMP_MOUSEBUTTONS | IDCMP_NEWSIZE | IDCMP_RAWKEY | IDCMP_SIZEVERIFY | IDCMP_GADGETUP | IDCMP_IDCMPUPDATE | - IDCMP_INTUITICKS | IDCMP_ACTIVEWINDOW | + IDCMP_ACTIVEWINDOW | IDCMP_INTUITICKS | IDCMP_EXTENDEDMOUSE | IDCMP_GADGETDOWN, // WINDOW_IconifyGadget, TRUE, WINDOW_NewMenu,menu, @@ -2219,9 +2218,9 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, WA_ReportMouse,TRUE, WA_IDCMP,IDCMP_MENUPICK | IDCMP_MOUSEMOVE | IDCMP_MOUSEBUTTONS | IDCMP_NEWSIZE | - IDCMP_RAWKEY | + IDCMP_RAWKEY | IDCMP_INTUITICKS | IDCMP_GADGETUP | IDCMP_IDCMPUPDATE | - IDCMP_INTUITICKS | IDCMP_EXTENDEDMOUSE, + IDCMP_EXTENDEDMOUSE, WINDOW_HorizProp,1, WINDOW_VertProp,1, WINDOW_IDCMPHook,&gwin->shared->scrollerhook, @@ -2942,6 +2941,7 @@ void gui_window_set_status(struct gui_window *g, const char *text) if((cur_tab == g->tab) || (g->shared->tabs == 0)) { utf8text = ami_utf8_easy((char *)text); + if(utf8text == NULL) return; if((g->shared->status == NULL) || (strcmp(utf8text,g->shared->status))) { diff --git a/amiga/schedule.c b/amiga/schedule.c index 8ec7b3da0..9ce5c6096 100755 --- a/amiga/schedule.c +++ b/amiga/schedule.c @@ -62,16 +62,16 @@ void schedule(int t, void (*callback)(void *p), void *p) GetSysTime(&tv); AddTime(&nscb->tv,&tv); // now contains time when event occurs -#ifdef AMI_SCHEDULER_USES_TIMER - if(nscb->treq = AllocVec(sizeof(struct timerequest),MEMF_PRIVATE | MEMF_CLEAR)) + + if(nscb->treq = AllocVec(sizeof(struct TimeRequest),MEMF_PRIVATE | MEMF_CLEAR)) { *nscb->treq = *tioreq; nscb->treq->Request.io_Command=TR_ADDREQUEST; - nscb->treq->Time.Seconds=nscb->tv.tv_sec; // secs + nscb->treq->Time.Seconds=nscb->tv.Seconds; // secs nscb->treq->Time.Microseconds=nscb->tv.Microseconds; // micro SendIO((struct IORequest *)nscb->treq); } -#endif + nscb->callback = callback; nscb->p = p; } diff --git a/amiga/schedule.h b/amiga/schedule.h index 3317101ed..76c877861 100755 --- a/amiga/schedule.h +++ b/amiga/schedule.h @@ -23,6 +23,7 @@ struct MinList *schedule_list; struct TimeRequest *tioreq; +struct MsgPort *msgport; struct nscallback { |