static int LoadARTSLibrary(void) { int i, retval = -1; arts_handle = SDL_LoadObject(arts_library); if ( arts_handle ) { arts_loaded = 1; retval = 0; for ( i=0; i<SDL_TABLESIZE(arts_functions); ++i ) { *arts_functions[i].func = SDL_LoadFunction(arts_handle, arts_functions[i].name); if ( !*arts_functions[i].func ) { retval = -1; UnloadARTSLibrary(); break; } } } return retval; }
static int Audio_Available(void) { int available = 0; if ( LoadARTSLibrary() < 0 ) { return available; } if ( SDL_NAME(arts_init)() == 0 ) { #define ARTS_CRASH_HACK /* Play a stream so aRts doesn't crash */ #ifdef ARTS_CRASH_HACK arts_stream_t stream2; stream2=SDL_NAME(arts_play_stream)(44100, 16, 2, "SDL"); SDL_NAME(arts_write)(stream2, "", 0); SDL_NAME(arts_close_stream)(stream2); #endif available = 1; SDL_NAME(arts_free)(); } UnloadARTSLibrary(); return available; }
static int Audio_Available(void) { int available = 0; if ( LoadARTSLibrary() < 0 ) { return available; } if ( SDL_NAME(arts_init)() == 0 ) { if ( ARTS_Suspend() ) { arts_stream_t stream2; stream2=SDL_NAME(arts_play_stream)(44100, 16, 2, "SDL"); SDL_NAME(arts_write)(stream2, "", 0); SDL_NAME(arts_close_stream)(stream2); available = 1; } SDL_NAME(arts_free)(); } UnloadARTSLibrary(); return available; }
static void Audio_DeleteDevice(SDL_AudioDevice *device) { free(device->hidden); free(device); UnloadARTSLibrary(); }