Sound::Sound() : m_bgm(0), m_bgm_source(0) { // Ensure Core is initialized get_Core(); #ifndef DISABLE_AL if(!alutInit(0, 0)) throw Sound_Init_Failure(); // Check for Vorbis extension functionality; seems to always fail :( #ifdef _MACOSX alIsExtensionPresent(const_cast<ALubyte *>(reinterpret_cast<const ALubyte *>("AL_EXT_vorbis"))); #else alIsExtensionPresent("AL_EXT_vorbis"); #endif //cerr << "Valid Audio Formats: " << alutGetMIMETypes(ALUT_LOADER_BUFFER) << endl; ALfloat listener_position[] = {0.0f, 0.0f, 0.0f}; ALfloat listener_velocity[] = {0.0f, 0.0f, 0.0f}; ALfloat listener_forward_and_up[] = {1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}; alListenerfv(AL_POSITION, listener_position); alListenerfv(AL_VELOCITY, listener_velocity); alListenerfv(AL_ORIENTATION, listener_forward_and_up); #endif }
Net::Net() { // Ensure Core is initialized get_Core(); if(SDLNet_Init()) throw Net_Init_Failure(); }
Thread::~Thread() { Core::remove_pre_uninit(&m_uninit); if(m_impl) { SDL_WaitThread(m_impl, m_status); get_Core().remove_pre_uninit(&m_uninit); } }
Joysticks::Joysticks() : m_joystick(0) { Core::remove_post_reinit(&g_reinit); /** Initialize SDL itself **/ Core &cr = get_Core(); /** Initialize Joysticks **/ init(); cr.lend_pre_uninit(&g_uninit); cr.lend_post_reinit(&g_reinit); }
Thread::Thread(Repeatable_Task &task) : m_impl(0), m_status(&task.status), #ifdef _WINDOWS #pragma warning( push ) #pragma warning( disable : 4355 ) #endif m_uninit(*this) #ifdef _WINDOWS #pragma warning( pop ) #endif { // Ensure Core is initialized Core &cr = get_Core(); m_impl = SDL_CreateThread(run_repeatable_task, &task); cr.lend_pre_uninit(&m_uninit); }
Thread::Thread(int (SDLCALL *fn)(void *), void *data, int * const status) : m_impl(0), m_status(status), #ifdef _WINDOWS #pragma warning( push ) #pragma warning( disable : 4355 ) #endif m_uninit(*this) #ifdef _WINDOWS #pragma warning( pop ) #endif { // Ensure Core is initialized Core &cr = get_Core(); m_impl = SDL_CreateThread(fn, data); cr.lend_pre_uninit(&m_uninit); }
#else : #if SDL_VERSION_ATLEAST(1,3,0) m_window(0), #else m_display_surface(0), #endif m_icon_surface(0) #endif { if(!g_enabled) throw Window_Init_Failure(); Core::remove_post_reinit(&g_reinit); Core &cr = get_Core(); #ifndef ANDROID if(SDL_InitSubSystem(SDL_INIT_VIDEO) == -1) throw Window_Init_Failure(); Core::print_error(); // Initialize Window Mode Listing #if SDL_VERSION_ATLEAST(1,3,0) const int num_modes = SDL_GetNumDisplayModes(0); for(int i = 0; i != num_modes; ++i) { SDL_DisplayMode mode; SDL_GetDisplayMode(0, i, &mode); if(m_modes.empty() || m_modes.rbegin()->x != mode.w || m_modes.rbegin()->y != mode.h) m_modes.push_back(Point2i(mode.w, mode.h));