aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml2
-rw-r--r--README.md1
-rw-r--r--src/adlmidi_opl3.cpp5
-rw-r--r--src/chips/dosbox/dbopl.cpp9
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:
diff --git a/README.md b/README.md
index 7b259ec..521bafa 100644
--- a/README.md
+++ b/README.md
@@ -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 ) {