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.