Most of the synchronization was too deep in the implementation so that it did not guard everything it needed.
Now each song has precisely one mutex which must be locked for all access to its internals - this is done in the public ZMusic interface
FluidSynth 1.x: these functions return 1 on success and 0 otherwise
FluidSynth 2.x: these functions return FLUID_OK (0) on success and FLUID_FAILED (-1) otherwise
DYN_SNDFILE=NO and DYN_MPG123=NO were ignored while DYN_FLUIDSYNTH=NO broke compilation
These options should be applied to ZMusic target instead of the main executable
As a bonus, it's now possible to build GZDoom without FluidSynth
Since this gets used by both the sound backend and the music code it needs to be in a place accessible to both.
# Conflicts:
# src/CMakeLists.txt
# Conflicts:
# libraries/zmusic/decoder/mpg123_decoder.cpp
# libraries/zmusic/decoder/sndfile_decoder.cpp
# src/CMakeLists.txt
Currently all it contains are the MIDI sources and the MIDI devices, the rest needs to be reworked first.
# Conflicts:
# libraries/zmusic/i_module.cpp
# libraries/zmusic/i_module.h
# src/CMakeLists.txt
# src/i_module.cpp
# src/i_module.h
# src/sound/music/midi_cvars.cpp
# src/utility/i_module.cpp
# src/utility/i_module.h
# Conflicts:
# src/CMakeLists.txt
# src/sound/musicformats/music_opl.cpp
2020-01-05 11:46:20 +01:00
Renamed from src/sound/mididevices/music_fluidsynth_mididevice.cpp (Browse further)