static int UpdaterThread(void* data) { Playlist* playlist = (Playlist*)data; int lWaitTime = 1000 / 30; // 30times /second while (playlist->mThreadAlive) { if (playlist->mSource) { if (!OAL_Source_IsPlaying(playlist->mSource)) { ++playlist->mCurrentSong; if (playlist->mCurrentSong == playlist->mSongs.end()) { playlist->mCurrentSong = playlist->mSongs.begin(); } playlist->playSong(); } } SDL_Delay(lWaitTime); } return 0; }
int main (int argc, const char *const argv[]) { if ( argc <= 1 ) { printf ("Usage : %s \"sample1.ogg\" [\"sample2.ogg\" \"sample3.ogg\" ...]\n", argv[0]); printf ("\tThe application will simply loop through all of the files\n\n"); return 1; } Playlist* lPlaylist = new Playlist(argc - 1, &argv[1]); printf ("Initializing OpenAL... "); fflush(stdout); OAL_SetupLogging(true,eOAL_LogOutput_File,eOAL_LogVerbose_High); cOAL_Init_Params oal_parms; oal_parms.mlStreamingBufferSize = 8192; if (OAL_Init(oal_parms)==false) { printf ("Failed - Check your OpenAL installation\n"); return 1; } else printf ("Success\n"); lPlaylist->playSong(); signal(SIGINT, sighandler); while (!done) { SDL_Delay(1000); } printf ("Cleaning up...\n"); delete lPlaylist; lPlaylist = 0; OAL_Close(); return 0; }