====== Display Timing Calls ====== ---- If you have other task activities that you want to coordinate with the frame display, you can use the timer device to inform the task when a vertical blank occurs. The task can enter a wait state until it receives notice of the vertical blank, or it can continue execution while it waits. ===== Getting a VBL IOReq ===== To use VBL timing calls, a task must first have an IOReq to communicate with the timer. To get one, use this convenience call: ''%%%%'' ''%%Item GetVBLIOReq( void )%%''\\ It accepts no arguments, and when it executes, it creates an IOReq for the timer. It returns the item number of that IOReq if successful, or a negative value (an error code) if unsuccessful. Save the item number for use with the VBL timing calls. ===== Waiting for a VBL Frame ===== Once a task has a VBL IOReq, it can call on the timer to wait for a vertical blank. To do so, it uses this call: ''%%%%'' ''%%Err WaitVBL( Item ioreq, uint32 numfields )%%''\\ It accepts the item number of the VBL IOReq and the number of vertical blank fields the task should wait for before becoming active again. It returns a zero if successful, and a negative value (an error code) if unsuccessful. To allow a task to continue execution while the timer processes the IOReq sent to it, use this call: ''%%%%'' ''%%Err WaitVBLDefer( Item ioreq, uint32 numfields )%%''\\ It accepts the same arguments as ''%%WaitVBL()%%'', but, when executed, allows the task to continue execution while the IOReq is outstanding. If the task wants to be notified of the timing call's completion, use the ''%%WaitIO()%%'' call.