/* 
 *  call-seq:
 *    fetch_sdl_events -> [event, ...]
 *
 *  NOTE: This method converts the SDL events into the new-style event
 *  classes, located in the Rubygame::Events module. For converting to
 *  the older (deprecated) events, see Rubygame.fetch_sdl_events.
 *
 *  Retrieves all pending events from SDL's event stack and converts them
 *  into Rubygame event objects. Returns an Array of all the events, in
 *  the order they were read.
 *
 *  This method is used by the EventQueue class (among others), so
 *  don't call it if you are using any of Rubygame's event management
 *  classes (e.g. EventQueue)! If you do, they will not receive all
 *  the events, because some events will have been removed from SDL's
 *  event stack by this method.
 *
 *  However, if you aren't using EventQueue, you can safely use this method
 *  to make your own event management system.
 *
 */
VALUE rg_fetch_sdl_events2( VALUE module )
{
  SDL_Event event;
  VALUE events = rb_ary_new();
  VALUE thing;

  while(SDL_PollEvent(&event)==1) 
  {
    /* Either an event or array of zero or more events. */
    thing = rg_convert_sdlevent2( event );

    if( TYPE(thing) == T_ARRAY )
    {
      rb_ary_concat( events, thing );
    }
    else
    {
      rb_ary_push( events, thing );
    }
  }

  return events;
}