/* * 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; }