diff options
-rw-r--r-- | .travis.yml | 2 | ||||
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | src/adlmidi_opl3.cpp | 5 | ||||
-rw-r--r-- | src/chips/dosbox/dbopl.cpp | 9 |
4 files changed, 13 insertions, 4 deletions
diff --git a/.travis.yml b/.travis.yml index 3dc4494..01af559 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,7 +22,7 @@ matrix: - libvlc-dev - libvlccore-dev - os: osx - osx_image: xcode9.4 + osx_image: xcode10.2 compiler: clang++ addons: homebrew: @@ -26,6 +26,7 @@ Library is based on the ADLMIDI, a MIDI player for Linux and Windows with OPL3 e * DJGPP GCC 7.2 cross compiler from Linux to MS-DOS 32-bit * OpenBSD * Haiku +* Emscripten # Key features * OPL3 emulation with four-operator mode support diff --git a/src/adlmidi_opl3.cpp b/src/adlmidi_opl3.cpp index 983949e..44322a3 100644 --- a/src/adlmidi_opl3.cpp +++ b/src/adlmidi_opl3.cpp @@ -33,7 +33,10 @@ #ifdef ADLMIDI_HW_OPL static const unsigned OPLBase = 0x388; #else -# if defined(ADLMIDI_DISABLE_NUKED_EMULATOR) && defined(ADLMIDI_DISABLE_DOSBOX_EMULATOR) +# if defined(ADLMIDI_DISABLE_NUKED_EMULATOR) && \ + defined(ADLMIDI_DISABLE_DOSBOX_EMULATOR) && \ + defined(ADLMIDI_DISABLE_OPAL_EMULATOR) && \ + defined(ADLMIDI_DISABLE_JAVA_EMULATOR) # error "No emulators enabled. You must enable at least one emulator to use this library!" # endif diff --git a/src/chips/dosbox/dbopl.cpp b/src/chips/dosbox/dbopl.cpp index d1ab82f..5b4bf53 100644 --- a/src/chips/dosbox/dbopl.cpp +++ b/src/chips/dosbox/dbopl.cpp @@ -1507,11 +1507,15 @@ void Chip::Setup( Bit32u rate ) { } } -static bool doneTables = false; +static volatile bool doneTables = false; +static Mutex mutexTables; + void InitTables( void ) { if ( doneTables ) return; - doneTables = true; + MutexHolder lock( mutexTables ); + if ( doneTables ) + return; #if ( DBOPL_WAVE == WAVE_HANDLER ) || ( DBOPL_WAVE == WAVE_TABLELOG ) //Exponential volume table, same as the real adlib for ( int i = 0; i < 256; i++ ) { @@ -1661,6 +1665,7 @@ void InitTables( void ) { } } #endif + doneTables = true; } Bit32u Handler::WriteAddr( Bit32u port, Bit8u val ) { |