From b39121c6a682eb8ae5efd29a875bd7c098185f04 Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Fri, 20 Feb 2015 00:31:09 -0500 Subject: Refactor config file API. The config file API previously relied on binding config variables using M_BindVariable() which took a void pointer. It occurred to me that if used on a boolean variable, this would be erroneous, but the void pointer would make it impossible to tell. Split this into separate M_Bind{Foo}Variable() functions based on type, which allows for proper type checking on the pointers that are passed. Vaguely related to #509. --- src/setup/sound.c | 50 ++++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 24 deletions(-) (limited to 'src/setup/sound.c') diff --git a/src/setup/sound.c b/src/setup/sound.c index 2b9bfcbb..e7670feb 100644 --- a/src/setup/sound.c +++ b/src/setup/sound.c @@ -81,7 +81,7 @@ static float libsamplerate_scale = 0.65; static char *timidity_cfg_path = NULL; static char *gus_patch_path = NULL; -static unsigned int gus_ram_kb = 1024; +static int gus_ram_kb = 1024; // DOS specific variables: these are unused but should be maintained // so that the config file can be shared between chocolate @@ -297,32 +297,34 @@ void ConfigSound(void) void BindSoundVariables(void) { - M_BindVariable("snd_sfxdevice", &snd_sfxdevice); - M_BindVariable("snd_musicdevice", &snd_musicdevice); - M_BindVariable("snd_channels", &numChannels); - M_BindVariable("sfx_volume", &sfxVolume); - M_BindVariable("music_volume", &musicVolume); - M_BindVariable("snd_samplerate", &snd_samplerate); - M_BindVariable("use_libsamplerate", &use_libsamplerate); - M_BindVariable("libsamplerate_scale", &libsamplerate_scale); - M_BindVariable("timidity_cfg_path", &timidity_cfg_path); - M_BindVariable("gus_patch_path", &gus_patch_path); - M_BindVariable("gus_ram_kb", &gus_ram_kb); - - M_BindVariable("snd_sbport", &snd_sbport); - M_BindVariable("snd_sbirq", &snd_sbirq); - M_BindVariable("snd_sbdma", &snd_sbdma); - M_BindVariable("snd_mport", &snd_mport); - M_BindVariable("snd_maxslicetime_ms", &snd_maxslicetime_ms); - M_BindVariable("snd_musiccmd", &snd_musiccmd); - - M_BindVariable("snd_cachesize", &snd_cachesize); - M_BindVariable("opl_io_port", &opl_io_port); + M_BindIntVariable("snd_sfxdevice", &snd_sfxdevice); + M_BindIntVariable("snd_musicdevice", &snd_musicdevice); + M_BindIntVariable("snd_channels", &numChannels); + M_BindIntVariable("snd_samplerate", &snd_samplerate); + M_BindIntVariable("sfx_volume", &sfxVolume); + M_BindIntVariable("music_volume", &musicVolume); + + M_BindIntVariable("use_libsamplerate", &use_libsamplerate); + M_BindFloatVariable("libsamplerate_scale", &libsamplerate_scale); + + M_BindIntVariable("gus_ram_kb", &gus_ram_kb); + M_BindStringVariable("gus_patch_path", &gus_patch_path); + M_BindStringVariable("timidity_cfg_path", &timidity_cfg_path); + + M_BindIntVariable("snd_sbport", &snd_sbport); + M_BindIntVariable("snd_sbirq", &snd_sbirq); + M_BindIntVariable("snd_sbdma", &snd_sbdma); + M_BindIntVariable("snd_mport", &snd_mport); + M_BindIntVariable("snd_maxslicetime_ms", &snd_maxslicetime_ms); + M_BindStringVariable("snd_musiccmd", &snd_musiccmd); + + M_BindIntVariable("snd_cachesize", &snd_cachesize); + M_BindIntVariable("opl_io_port", &opl_io_port); if (gamemission == strife) { - M_BindVariable("voice_volume", &voiceVolume); - M_BindVariable("show_talk", &show_talk); + M_BindIntVariable("voice_volume", &voiceVolume); + M_BindIntVariable("show_talk", &show_talk); } timidity_cfg_path = M_StringDuplicate(""); -- cgit v1.2.3