From 84fe779b989464946b4630005ca93dbd9a939b65 Mon Sep 17 00:00:00 2001 From: derselbst Date: Fri, 6 Oct 2017 10:25:38 +0200 Subject: [PATCH 1/4] jack: atomically get audio_driver --- src/drivers/fluid_jack.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drivers/fluid_jack.c b/src/drivers/fluid_jack.c index fe824209..51f63a96 100644 --- a/src/drivers/fluid_jack.c +++ b/src/drivers/fluid_jack.c @@ -554,7 +554,7 @@ fluid_jack_driver_process (jack_nframes_t nframes, void *arg) } } - audio_driver = client->audio_driver; + audio_driver = fluid_atomic_pointer_get (&client->audio_driver); if (!audio_driver) return 0; if (audio_driver->callback != NULL) From 3a4385c7f6bd8d3bf57bfe3a79f20adbe4016eeb Mon Sep 17 00:00:00 2001 From: derselbst Date: Fri, 6 Oct 2017 10:28:28 +0200 Subject: [PATCH 2/4] settings: avoid silent error hiding fail if param out of range, addresses #225 --- src/utils/fluid_settings.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/utils/fluid_settings.c b/src/utils/fluid_settings.c index bf1d71e9..8bdc3035 100644 --- a/src/utils/fluid_settings.c +++ b/src/utils/fluid_settings.c @@ -1098,8 +1098,11 @@ fluid_settings_setnum(fluid_settings_t* settings, const char *name, double val) if (node->type == FLUID_NUM_TYPE) { fluid_num_setting_t* setting = &node->num; - if (val < setting->min) val = setting->min; - else if (val > setting->max) val = setting->max; + if (val < setting->min || val > setting->max) + { + FLUID_LOG(FLUID_DBG, "requested set value for %s out of range", name); + return retval; + } setting->value = val; @@ -1247,8 +1250,11 @@ fluid_settings_setint(fluid_settings_t* settings, const char *name, int val) if (node->type == FLUID_INT_TYPE) { fluid_int_setting_t* setting = &node->i; - if (val < setting->min) val = setting->min; - else if (val > setting->max) val = setting->max; + if (val < setting->min || val > setting->max) + { + FLUID_LOG(FLUID_DBG, "requested set value for %s out of range", name); + return retval; + } setting->value = val; From 6e3644d1aa71626b6f1abfc83153c68f5d22733f Mon Sep 17 00:00:00 2001 From: derselbst Date: Fri, 6 Oct 2017 10:31:44 +0200 Subject: [PATCH 3/4] cleanup fluidsynth.c --- src/fluidsynth.c | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/src/fluidsynth.c b/src/fluidsynth.c index 822c118c..8495d562 100644 --- a/src/fluidsynth.c +++ b/src/fluidsynth.c @@ -42,10 +42,6 @@ #include "config_win32.h" #endif -#ifdef HAVE_SIGNAL_H -#include "signal.h" -#endif - #include "fluid_lash.h" #ifndef WITH_MIDI @@ -263,16 +259,6 @@ fast_render_loop(fluid_settings_t* settings, fluid_synth_t* synth, fluid_player_ delete_fluid_file_renderer(renderer); } -#ifdef HAVE_SIGNAL_H -/* - * handle_signal - */ -void handle_signal(int sig_num) -{ -} -#endif - - /* * main */ @@ -632,10 +618,6 @@ int main(int argc, char** argv) argv[i]); } -#ifdef HAVE_SIGNAL_H -/* signal(SIGINT, handle_signal); */ -#endif - /* start the synthesis thread */ if (!fast_render) { adriver = new_fluid_audio_driver(settings, synth); @@ -682,9 +664,9 @@ int main(int argc, char** argv) /* run commands specified in config file */ if (config_file != NULL) { fluid_source(cmd_handler, config_file); - } else if (fluid_get_userconf(buf, 512) != NULL) { + } else if (fluid_get_userconf(buf, sizeof(buf)*sizeof(buf[0])) != NULL) { fluid_source(cmd_handler, buf); - } else if (fluid_get_sysconf(buf, 512) != NULL) { + } else if (fluid_get_sysconf(buf, sizeof(buf)*sizeof(buf[0])) != NULL) { fluid_source(cmd_handler, buf); } From 2b861a12eb20c5f2a10b26d62ad9293dbfc2b426 Mon Sep 17 00:00:00 2001 From: derselbst Date: Fri, 6 Oct 2017 10:34:35 +0200 Subject: [PATCH 4/4] assure audio_groups is not overwritten with an unset value, fixes #225 --- src/fluidsynth.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/fluidsynth.c b/src/fluidsynth.c index 8495d562..860622fa 100644 --- a/src/fluidsynth.c +++ b/src/fluidsynth.c @@ -575,14 +575,18 @@ int main(int argc, char** argv) } #endif - /* The 'groups' setting is only relevant for LADSPA operation + /* The 'groups' setting is relevant for LADSPA operation and channel mapping + * in rvoice_mixer. * If not given, set number groups to number of audio channels, because * they are the same (there is nothing between synth output and 'sound card') */ if ((audio_groups == 0) && (audio_channels != 0)) { audio_groups = audio_channels; } - fluid_settings_setint(settings, "synth.audio-groups", audio_groups); + if (audio_groups != 0) + { + fluid_settings_setint(settings, "synth.audio-groups", audio_groups); + } if (fast_render) { midi_in = 0;