From 00048ddf7e932bc82e0e52a7e9b44e692404564a Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 24 Sep 2019 23:46:27 +0200 Subject: [PATCH] - started cleanup work on WildMidi code. # Conflicts: # src/sound/mididevices/music_wildmidi_mididevice.cpp # Conflicts: # src/sound/mididevices/music_wildmidi_mididevice.cpp --- .../mididevices/music_wildmidi_mididevice.cpp | 15 +++++++------ src/sound/wildmidi/file_io.cpp | 15 +------------ src/sound/wildmidi/wildmidi_lib.cpp | 21 ++++--------------- src/sound/wildmidi/wildmidi_lib.h | 2 +- 4 files changed, 15 insertions(+), 38 deletions(-) diff --git a/src/sound/mididevices/music_wildmidi_mididevice.cpp b/src/sound/mididevices/music_wildmidi_mididevice.cpp index 9bd2c93ce..5fa57b9bd 100644 --- a/src/sound/mididevices/music_wildmidi_mididevice.cpp +++ b/src/sound/mididevices/music_wildmidi_mididevice.cpp @@ -35,12 +35,8 @@ // HEADER FILES ------------------------------------------------------------ #include "i_musicinterns.h" -#include "templates.h" -#include "doomdef.h" -#include "m_swap.h" -#include "w_wad.h" -#include "v_text.h" -#include "i_system.h" +#include "doomerrors.h" +#include "i_soundfont.h" // MACROS ------------------------------------------------------------------ @@ -128,6 +124,13 @@ WildMIDIDevice::WildMIDIDevice(const char *args, int samplerate) WildMidi_Shutdown(); CurrentConfig = ""; } + + auto reader = sfmanager.OpenSoundFont(CurrentConfig, SF_GUS); + if (reader == nullptr) + { + I_Error("WildMidi: Unable to open sound font %s\n", CurrentConfig.GetChars()); + } + if (!WildMidi_Init(args, SampleRate, 0)) { CurrentConfig = args; diff --git a/src/sound/wildmidi/file_io.cpp b/src/sound/wildmidi/file_io.cpp index b1d3d2dd5..41e64cf51 100644 --- a/src/sound/wildmidi/file_io.cpp +++ b/src/sound/wildmidi/file_io.cpp @@ -43,20 +43,7 @@ #include "i_soundfont.h" std::unique_ptr wm_sfreader; -static FString config_name; -bool _WM_InitReader(const char *config_file) -{ - auto reader = sfmanager.OpenSoundFont(config_file, SF_GUS); - if (reader == nullptr) - { - _WM_ERROR(__FUNCTION__, __LINE__, WM_ERR_LOAD, config_file, errno); - return false; // No sound font could be opened. - } - wm_sfreader.reset(reader); - config_name = config_file; - return true; -} unsigned char *_WM_BufferFile(const char *filename, unsigned long int *size) { @@ -65,7 +52,7 @@ unsigned char *_WM_BufferFile(const char *filename, unsigned long int *size) if (filename == nullptr) { fp = wm_sfreader->OpenMainConfigFile(); - filename = config_name; + filename = wm_sfreader->MainConfigFileName(); } else { diff --git a/src/sound/wildmidi/wildmidi_lib.cpp b/src/sound/wildmidi/wildmidi_lib.cpp index a529b4545..cce87d82f 100644 --- a/src/sound/wildmidi/wildmidi_lib.cpp +++ b/src/sound/wildmidi/wildmidi_lib.cpp @@ -51,7 +51,6 @@ #include "reverb.h" #include "gus_pat.h" #include "wildmidi_lib.h" -#include "files.h" #include "i_soundfont.h" #define IS_DIR_SEPARATOR(c) ((c) == '/' || (c) == '\\') @@ -670,21 +669,13 @@ static int WM_LoadConfig(const char *config_file, bool main) { int token_count = 0; auto config_parm = config_file; - FileReader fr; - if (main) - { - if (!_WM_InitReader(config_file)) return -1; // unable to open this as a config file. - config_parm = nullptr; - } - config_buffer = (char *)_WM_BufferFile(config_parm, &config_size); if (!config_buffer) { WM_FreePatches(); return -1; } - FString bp = wm_sfreader->basePath(); - if (config_parm == nullptr) config_file = bp.GetChars(); // Re-get the base path because for archives this is empty. + if (config_parm == nullptr) config_file = wm_sfreader->basePath().GetChars(); // Re-get the base path because for archives this is empty. // This part was rewritten because the original depended on a header that was GPL'd. dir_end = strrchr(config_file, '/'); @@ -2509,20 +2500,16 @@ WildMidi_GetString(unsigned short int info) { return NULL; } -WM_SYMBOL int WildMidi_Init(const char * config_file, unsigned short int rate, +WM_SYMBOL int WildMidi_Init(FSoundFontReader *reader, unsigned short int rate, unsigned short int options) { if (WM_Initialized) { _WM_ERROR(__FUNCTION__, __LINE__, WM_ERR_ALR_INIT, NULL, 0); return -1; } - if (config_file == NULL) { - _WM_ERROR(__FUNCTION__, __LINE__, WM_ERR_INVALID_ARG, - "(NULL config file pointer)", 0); - return -1; - } WM_InitPatches(); - if (WM_LoadConfig(config_file, true) == -1) { + wm_sfreader.reset(reader); + if (WM_LoadConfig(nullptr, true) == -1) { return -1; } diff --git a/src/sound/wildmidi/wildmidi_lib.h b/src/sound/wildmidi/wildmidi_lib.h index b5aa79849..c5d27f595 100644 --- a/src/sound/wildmidi/wildmidi_lib.h +++ b/src/sound/wildmidi/wildmidi_lib.h @@ -54,7 +54,7 @@ struct _WM_Info { typedef void midi; WM_SYMBOL const char * WildMidi_GetString (unsigned short int info); -WM_SYMBOL int WildMidi_Init (const char * config_file, unsigned short int rate, unsigned short int options); +WM_SYMBOL int WildMidi_Init (FSoundFontReader *reader, unsigned short int rate, unsigned short int options); WM_SYMBOL int WildMidi_MasterVolume (unsigned char master_volume); WM_SYMBOL int WildMidi_SetOption (midi * handle, unsigned short int options, unsigned short int setting); WM_SYMBOL int WildMidi_Close (midi * handle);