- FSOUND_Init(44100, 32, 0);
-
- FSOUND_SetSFXMasterVolume((int)(volume*255));
-
- strm[stream_music3] = FSOUND_Stream_Open(ConvertFileName(":Data:Sounds:music3.mp3"), FSOUND_2D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=0;}
-// FSOUND_Sample_SetMinMaxDistance(strm[stream_music3], 4.0f, 1000.0f);
- FSOUND_Stream_SetMode(strm[stream_music3], FSOUND_LOOP_NORMAL);
+ int output = -1;
+
+ #if PLATFORM_LINUX
+ extern bool cmdline(const char *cmd);
+ unsigned char rc = 0;
+ output = OPENAL_OUTPUT_ALSA; // Try alsa first...
+ if (cmdline("forceoss")) // ...but let user override that.
+ output = OPENAL_OUTPUT_OSS;
+ else if (cmdline("nosound"))
+ output = OPENAL_OUTPUT_NOSOUND;
+
+ OPENAL_SetOutput(output);
+ if ((rc = OPENAL_Init(44100, 32, 0)) == false)
+ {
+ // if we tried ALSA and failed, fall back to OSS.
+ if ( (output == OPENAL_OUTPUT_ALSA) && (!cmdline("forcealsa")) )
+ {
+ OPENAL_Close();
+ output = OPENAL_OUTPUT_OSS;
+ OPENAL_SetOutput(output);
+ rc = OPENAL_Init(44100, 32, 0);
+ }
+ }
+
+ if (rc == false)
+ {
+ OPENAL_Close();
+ output = OPENAL_OUTPUT_NOSOUND; // we tried! just do silence.
+ OPENAL_SetOutput(output);
+ rc = OPENAL_Init(44100, 32, 0);
+ }
+ #else
+ OPENAL_Init(44100, 32, 0);
+ #endif
+
+ OPENAL_SetSFXMasterVolume((int)(volume*255));
+
+ strm[stream_music3] = OPENAL_Stream_Open(ConvertFileName(":Data:Sounds:music3.mp3"), OPENAL_2D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=0;}
+// OPENAL_Sample_SetMinMaxDistance(strm[stream_music3], 4.0f, 1000.0f);
+ OPENAL_Stream_SetMode(strm[stream_music3], OPENAL_LOOP_NORMAL);