/* 
 *  call-seq:
 *    Joystick.activate_all()  ->  [joystick1, joystick2, ...]
 *
 *  Activate all joysticks on the system, equivalent to calling
 *  Joystick.new for every joystick available. This will allow
 *  joystick-related events to be sent to the EventQueue for
 *  all joysticks.
 *  
 *  Returns::  Array of zero or more Joysticks.
 *
 */
VALUE rbgm_joystick_activateall(VALUE module)
{
        /* Initialize if it isn't already. */
        if( !SDL_WasInit(SDL_INIT_JOYSTICK) )
        {
                if( SDL_Init(SDL_INIT_JOYSTICK) != 0 )
                {
                        rb_raise( eSDLError, "Could not initialize SDL joystick." );
                }
        }

        int num_joysticks = SDL_NumJoysticks();
        int i = 0;

        /* Collect Joystick instances in an Array. */
        VALUE joysticks = rb_ary_new();

        for(; i < num_joysticks; ++i )
        {
                rb_ary_push( joysticks, rbgm_joystick_new(module, INT2NUM(i)) );
        }

        return joysticks;
}