return FALSE;
}
+ if (audio.mixer_pid == 0) /* we are the child process */
+ audio.mixer_pid = getpid();
+
#if 0
- printf("PID: %d [%s]\n", getpid(),
- (IS_CHILD_PROCESS(audio.mixer_pid) ? "child" : "parent"));
+ printf("PID: %d [%s]\n", getpid(),(IS_CHILD_PROCESS() ? "child" : "parent"));
Delay(10000 * 0);
#endif
- if (IS_CHILD_PROCESS(audio.mixer_pid))
+ if (IS_CHILD_PROCESS())
Mixer_Main(); /* this function never returns */
else
close(audio.mixer_pipe[0]); /* no reading from pipe needed */
if (audio.device_fd)
close(audio.device_fd);
- if (IS_PARENT_PROCESS(audio.mixer_pid))
+ if (IS_PARENT_PROCESS())
kill(audio.mixer_pid, SIGTERM);
}
static void SendSoundControlToMixerProcess(SoundControl *snd_ctrl)
{
- if (IS_CHILD_PROCESS(audio.mixer_pid))
+ if (IS_CHILD_PROCESS())
return;
if (write(audio.mixer_pipe[1], snd_ctrl, sizeof(SoundControl)) < 0)
static void ReadSoundControlFromMainProcess(SoundControl *snd_ctrl)
{
- if (IS_PARENT_PROCESS(audio.mixer_pid))
+ if (IS_PARENT_PROCESS())
return;
if (read(audio.mixer_pipe[0], snd_ctrl, sizeof(SoundControl))
setup.override_level_sounds :
setup.override_level_music);
- if (IS_CHILD_PROCESS(audio.mixer_pid))
+ if (IS_CHILD_PROCESS())
return;
if (leveldir_current == NULL) /* should never happen */
int i;
#if defined(AUDIO_UNIX_NATIVE)
- if (IS_PARENT_PROCESS(audio.mixer_pid))
+ if (IS_PARENT_PROCESS())
{
SendSoundControlToMixerProcess(&snd_ctrl);
return;
return snd_info;
}
-struct FileInfo *getCurrentSoundList()
+int getSoundListSize()
+{
+ return (sound_info->num_file_list_entries +
+ sound_info->num_dynamic_file_list_entries);
+}
+
+struct FileInfo *getSoundListEntry(int pos)
+{
+ int num_list_entries = sound_info->num_file_list_entries;
+ int list_pos = (pos < num_list_entries ? pos : pos - num_list_entries);
+
+ return (pos < num_list_entries ? &sound_info->file_list[list_pos] :
+ &sound_info->dynamic_file_list[list_pos]);
+}
+
+int getSoundListPropertyMappingSize()
+{
+ return sound_info->num_property_mapping_entries;
+}
+
+struct PropertyMapping *getSoundListPropertyMapping()
{
- return sound_info->file_list;
+ return sound_info->property_mapping;
}
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 **ext2_suffixes,
+ char **ext3_suffixes)
{
int i;
sound_info->num_file_list_entries = num_file_list_entries;
sound_info->num_dynamic_file_list_entries = 0;
- sound_info->num_suffix_list_entries = 0;
- for (i=0; config_suffix_list[i].token != NULL; i++)
- sound_info->num_suffix_list_entries++;
-
sound_info->file_list =
getFileListFromConfigList(config_list, config_suffix_list,
num_file_list_entries);
sound_info->dynamic_file_list = NULL;
+ sound_info->num_suffix_list_entries = 0;
+ for (i=0; config_suffix_list[i].token != NULL; i++)
+ sound_info->num_suffix_list_entries++;
+
sound_info->suffix_list = config_suffix_list;
/* ---------- initialize base prefix and suffixes lists ---------- */
for (i=0; ext2_suffixes[i] != NULL; i++)
sound_info->num_ext2_suffixes++;
+ sound_info->num_ext3_suffixes = 0;
+ for (i=0; ext3_suffixes[i] != NULL; i++)
+ sound_info->num_ext3_suffixes++;
+
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->num_property_mapping_entries = 0;
+
+ sound_info->property_mapping = NULL;
/* ---------- initialize artwork reference and content lists ---------- */