X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsound.c;h=cd34b284473e3126a0191fc3074f7005793fd0e0;hb=c9433eab5c4317ed4f89164b386a7d33562e29be;hp=414ab122befa69174fd501a16ec44763f0a41797;hpb=86e110774e5210b326e6867b134bd638d93554d3;p=rocksndiamonds.git diff --git a/src/libgame/sound.c b/src/libgame/sound.c index 414ab122..cd34b284 100644 --- a/src/libgame/sound.c +++ b/src/libgame/sound.c @@ -1,7 +1,7 @@ /*********************************************************** * Artsoft Retro-Game Library * *----------------------------------------------------------* -* (c) 1994-2001 Artsoft Entertainment * +* (c) 1994-2002 Artsoft Entertainment * * Holger Schemel * * Detmolder Strasse 189 * * 33604 Bielefeld * @@ -11,8 +11,9 @@ * sound.c * ***********************************************************/ -#include +#include #include +#include #include #include #include @@ -497,6 +498,9 @@ static void WriteReloadInfoToPipe(char *set_name, int type) unsigned long str_size1 = strlen(leveldir_current->fullpath) + 1; unsigned long str_size2 = strlen(ti->basepath) + 1; unsigned long str_size3 = strlen(ti->fullpath) + 1; + boolean override_level_artwork = (type == SND_CTRL_RELOAD_SOUNDS ? + setup.override_level_sounds : + setup.override_level_music); if (IS_CHILD_PROCESS(audio.mixer_pid)) return; @@ -512,6 +516,8 @@ static void WriteReloadInfoToPipe(char *set_name, int type) sizeof(snd_ctrl)) < 0 || write(audio.mixer_pipe[1], set_name, snd_ctrl.data_len) < 0 || + write(audio.mixer_pipe[1], &override_level_artwork, + sizeof(boolean)) < 0 || write(audio.mixer_pipe[1], leveldir_current, sizeof(TreeInfo)) < 0 || write(audio.mixer_pipe[1], ti, @@ -542,6 +548,9 @@ static void ReadReloadInfoFromPipe(SoundControl *snd_ctrl) TreeInfo *ti = *ti_ptr; unsigned long str_size1, str_size2, str_size3; static char *set_name = NULL; + boolean *override_level_artwork = (snd_ctrl->state & SND_CTRL_RELOAD_SOUNDS ? + &setup.override_level_sounds : + &setup.override_level_music); if (set_name) free(set_name); @@ -561,6 +570,8 @@ static void ReadReloadInfoFromPipe(SoundControl *snd_ctrl) if (read(audio.mixer_pipe[0], set_name, snd_ctrl->data_len) != snd_ctrl->data_len || + read(audio.mixer_pipe[0], override_level_artwork, + sizeof(boolean)) != sizeof(boolean) || read(audio.mixer_pipe[0], leveldir_current, sizeof(TreeInfo)) != sizeof(TreeInfo) || read(audio.mixer_pipe[0], ti, @@ -586,9 +597,9 @@ static void ReadReloadInfoFromPipe(SoundControl *snd_ctrl) Error(ERR_EXIT_SOUND_SERVER, "broken pipe -- no sounds"); if (snd_ctrl->state & SND_CTRL_RELOAD_SOUNDS) - artwork.sounds_set_current = set_name; + artwork.sounds_set_current_name = set_name; else - artwork.music_set_current = set_name; + artwork.music_set_current_name = set_name; } #endif /* AUDIO_UNIX_NATIVE */ @@ -800,7 +811,12 @@ static void Mixer_InsertSound(SoundControl snd_ctrl) #endif if (IS_MUSIC(snd_ctrl)) + { + if (num_music == 0) + return; + snd_ctrl.nr = snd_ctrl.nr % num_music; + } else if (snd_ctrl.nr >= num_sounds) return; @@ -1289,7 +1305,7 @@ static int Mixer_Main_SimpleAudio(SoundControl snd_ctrl) mixer[i].volume * (long)premix_first_buffer[j] / SOUND_MAX_VOLUME; /* might be needed for u-law /dev/audio */ -#if 0 +#if 1 for(j=0; j