/***********************************************************
* Artsoft Retro-Game Library *
*----------------------------------------------------------*
-* (c) 1994-2000 Artsoft Entertainment *
+* (c) 1994-2001 Artsoft Entertainment *
* Holger Schemel *
* Detmolder Strasse 189 *
* 33604 Bielefeld *
return TRUE;
}
+#if !defined(TARGET_SDL)
static boolean ForkAudioProcess(void)
{
if (pipe(audio.soundserver_pipe) < 0)
return TRUE;
}
+#endif
void UnixOpenAudio(void)
{
void StartSoundserver(void)
{
+ if (!audio.sound_available)
+ return;
+
#if defined(PLATFORM_UNIX) && !defined(TARGET_SDL)
if (!ForkAudioProcess())
audio.sound_available = FALSE;
#if !defined(TARGET_SDL) && !defined(PLATFORM_MSDOS)
byte sound_header_buffer[WAV_HEADER_SIZE];
char chunk[CHUNK_ID_LEN + 1];
- int chunk_length, dummy;
+ int chunk_size, dummy;
FILE *file;
int i;
#endif
+ if (!audio.sound_available)
+ return FALSE;
+
num_sounds++;
Sound = checked_realloc(Sound, num_sounds * sizeof(struct SampleInfo));
}
/* read chunk "RIFF" */
- getFileChunk(file, chunk, &chunk_length, BYTE_ORDER_LITTLE_ENDIAN);
+ getFileChunk(file, chunk, &chunk_size, BYTE_ORDER_LITTLE_ENDIAN);
if (strcmp(chunk, "RIFF") != 0)
{
Error(ERR_WARN, "missing 'RIFF' chunk of sound file '%s'", filename);
sound_header_buffer[i] = fgetc(file);
/* read chunk "data" */
- getFileChunk(file, chunk, &chunk_length, BYTE_ORDER_LITTLE_ENDIAN);
+ getFileChunk(file, chunk, &chunk_size, BYTE_ORDER_LITTLE_ENDIAN);
if (strcmp(chunk, "data") != 0)
{
Error(ERR_WARN, "missing 'data' chunk of sound file '%s'", filename);
return FALSE;
}
- snd_info->data_len = chunk_length;
+ snd_info->data_len = chunk_size;
snd_info->data_ptr = checked_malloc(snd_info->data_len);
/* read sound data */
int num_wav_music = 0;
int num_mod_music = 0;
+ if (!audio.sound_available)
+ return 0;
+
if ((dir = opendir(music_directory)) == NULL)
{
Error(ERR_WARN, "cannot read music directory '%s'", music_directory);
#if defined(TARGET_SDL)
if (audio.mods_available) /* play MOD music */
{
- Mix_VolumeMusic(SOUND_MAX_VOLUME);
Mix_PlayMusic(Mod[nr].mix_music, -1);
+ Mix_VolumeMusic(SOUND_MAX_VOLUME); /* must be _after_ Mix_PlayMusic()! */
}
else /* play WAV music loop */
{
void FadeMusic(void)
{
#if defined(TARGET_SDL)
+ if (!audio.sound_available)
+ return;
+
if (audio.mods_available)
Mix_FadeOutMusic(SOUND_FADING_INTERVAL);
else
void FadeSounds()
{
+ FadeMusic();
StopSoundExt(-1, SSND_FADE_ALL_SOUNDS);
}