/*
 *  call-seq:
 *    Clock.wait( time, nice=false )  ->  Integer
 *
 *  time::  The target wait time, in milliseconds.
 *          (Non-negative Integer. Required.)
 *  nice::  If true, try to let other ruby threads run during the delay.
 *          (true or false. Optional.)
 *
 *  Returns:: The actual wait time, in milliseconds.
 *
 *  Pause the program for approximately +time+ milliseconds. Both this
 *  function and Clock.delay can be used to slow down the framerate so
 *  that the application doesn't use too much CPU time. See also
 *  Clock#tick for a good and easy way to limit the framerate.
 *
 *  The accuracy of this function depends on processor scheduling,
 *  which varies with operating system and hardware. The actual delay
 *  time may be up to 10ms longer than +time+. If you need more
 *  accuracy use Clock.delay, which is more accurate but uses slightly
 *  more CPU time.
 *
 *  If +nice+ is true, this function will try to allow other ruby
 *  threads to run during this function. Otherwise, other ruby threads
 *  will probably also be paused. Setting +nice+ to true is only
 *  useful if your application is multithreaded. It's safe (but
 *  pointless) to use this feature for single threaded applications.
 *
 *  The Rubygame timer system will be initialized when you call this
 *  function, if it has not been already. See Clock.runtime.
 *
 */
VALUE rbgm_clock_wait(int argc, VALUE *argv, VALUE module)
{
  rg_init_sdl_timer();

  VALUE  vtime, vnice;

  rb_scan_args(argc,argv,"11", &vtime, &vnice);

  int delay = NUM2INT(vtime);
  if( delay < 0 )
  {
    delay = 0;
  }

  int nice = (vnice == Qtrue) ? 1 : 0;

  return UINT2NUM( rg_threaded_delay(delay, nice) );
}