X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsound.c;h=0299521267dd802ccd5024467a15590fb286ed22;hb=5ae04ac2ef54f6f164a797c16c9782042cc2ce67;hp=3f1d04e9eee0cd0593e1f54114e5e3af1f3c626a;hpb=ff2510f5098b545a03965c6b95296eec6885a4fb;p=rocksndiamonds.git diff --git a/src/libgame/sound.c b/src/libgame/sound.c index 3f1d04e9..02995212 100644 --- a/src/libgame/sound.c +++ b/src/libgame/sound.c @@ -149,9 +149,14 @@ struct SoundControl typedef struct SoundControl SoundControl; static struct ArtworkListInfo *sound_info = NULL; +#if 0 static SoundInfo **Sound = NULL; +#endif static MusicInfo **Music = NULL; -static int num_sounds = 0, num_music = 0; +#if 0 +static int num_sounds = 0; +#endif +static int num_music = 0; static int stereo_volume[SOUND_MAX_LEFT2RIGHT + 1]; @@ -175,6 +180,8 @@ static void ReloadCustomSounds(); static void ReloadCustomMusic(); static void FreeSound(void *); +static SoundInfo *getSoundInfoEntryFromSoundID(int); + /* ------------------------------------------------------------------------- */ /* functions for native (non-SDL) Unix audio/mixer support */ @@ -292,7 +299,7 @@ void UnixCloseAudio(void) if (audio.device_fd) close(audio.device_fd); - if (IS_PARENT_PROCESS()) + if (IS_PARENT_PROCESS() && HAS_CHILD_PROCESS()) kill(audio.mixer_pid, SIGTERM); } @@ -816,6 +823,7 @@ static void Mixer_InsertSound(SoundControl snd_ctrl) { SoundInfo *snd_info; int i, k; + int num_sounds = getSoundListSize(); #if 0 printf("NEW SOUND %d ARRIVED [%d] [%d ACTIVE CHANNELS]\n", @@ -832,7 +840,13 @@ static void Mixer_InsertSound(SoundControl snd_ctrl) else if (snd_ctrl.nr >= num_sounds) return; +#if 0 snd_info = (IS_MUSIC(snd_ctrl) ? Music[snd_ctrl.nr] : Sound[snd_ctrl.nr]); +#else + snd_info = (IS_MUSIC(snd_ctrl) ? Music[snd_ctrl.nr] : + getSoundInfoEntryFromSoundID(snd_ctrl.nr)); +#endif + if (snd_info == NULL) return; @@ -1782,6 +1796,17 @@ struct FileInfo *getSoundListEntry(int pos) &sound_info->dynamic_file_list[list_pos]); } +static SoundInfo *getSoundInfoEntryFromSoundID(int pos) +{ + int num_list_entries = sound_info->num_file_list_entries; + int list_pos = (pos < num_list_entries ? pos : pos - num_list_entries); + SoundInfo **snd_info = + (SoundInfo **)(pos < num_list_entries ? sound_info->artwork_list : + sound_info->dynamic_artwork_list); + + return snd_info[list_pos]; +} + int getSoundListPropertyMappingSize() { return sound_info->num_property_mapping_entries; @@ -1794,10 +1819,9 @@ struct PropertyMapping *getSoundListPropertyMapping() void InitSoundList(struct ConfigInfo *config_list, int num_file_list_entries, struct ConfigInfo *config_suffix_list, - char **base_prefixes, - char **ext1_suffixes, - char **ext2_suffixes, - char **ext3_suffixes) + char **base_prefixes, char **ext1_suffixes, + char **ext2_suffixes, char **ext3_suffixes, + char **ignore_tokens) { int i; @@ -1810,7 +1834,7 @@ void InitSoundList(struct ConfigInfo *config_list, int num_file_list_entries, sound_info->num_dynamic_file_list_entries = 0; sound_info->file_list = - getFileListFromConfigList(config_list, config_suffix_list, + getFileListFromConfigList(config_list, config_suffix_list, ignore_tokens, num_file_list_entries); sound_info->dynamic_file_list = NULL; @@ -1838,10 +1862,15 @@ void InitSoundList(struct ConfigInfo *config_list, int num_file_list_entries, for (i=0; ext3_suffixes[i] != NULL; i++) sound_info->num_ext3_suffixes++; + sound_info->num_ignore_tokens = 0; + for (i=0; ignore_tokens[i] != NULL; i++) + sound_info->num_ignore_tokens++; + sound_info->base_prefixes = base_prefixes; sound_info->ext1_suffixes = ext1_suffixes; sound_info->ext2_suffixes = ext2_suffixes; sound_info->ext3_suffixes = ext3_suffixes; + sound_info->ignore_tokens = ignore_tokens; sound_info->num_property_mapping_entries = 0; @@ -1862,8 +1891,10 @@ void InitSoundList(struct ConfigInfo *config_list, int num_file_list_entries, sound_info->load_artwork = Load_WAV; sound_info->free_artwork = FreeSound; +#if 0 num_sounds = sound_info->num_file_list_entries; Sound = (SoundInfo **)sound_info->artwork_list; +#endif } static MusicInfo *Load_MOD(char *filename) @@ -2076,6 +2107,10 @@ static void ReloadCustomSounds() LoadArtworkConfig(sound_info); ReloadCustomArtworkList(sound_info); + +#if 0 + num_sounds = getSoundListSize(); +#endif } static void ReloadCustomMusic()