/*
* call-seq:
* delay( time, gran=12 ) -> Integer
*
* time:: how many milliseconds to delay.
* gran:: the granularity (in milliseconds) to assume for the system. A
* smaller value should use less CPU time, but if it's lower than the
* actual system granularity, this function might wait too long. The
* default, 12 ms, has a fairly low risk of over-waiting for many
* systems.
* Use the CPU to more accurately wait for the given period. Returns the
* actual delay time, in milliseconds. This function is more accurate than
* #wait, but is also somewhat more CPU-intensive.
*
* The Rubygame timer system will be initialized when you call this function,
* if it has not been already.
*
*/
VALUE rbgm_time_delay(int argc, VALUE *argv, VALUE module)
{
int ticks, goal, accuracy;
VALUE vtime, vgran;
rb_scan_args(argc,argv,"11", &vtime, &vgran);
goal = NUM2INT(vtime);
if(goal < 0)
goal = 0;
if( RTEST(vgran) )
accuracy = NUM2INT(vgran);
else
accuracy = WORST_CLOCK_ACCURACY;
ticks = accurate_delay(goal,accuracy);
return INT2NUM(ticks);
}