diff --git a/src/Backends/Audio.h b/src/Backends/Audio.h index 5f1d10d2..92a6ad41 100644 --- a/src/Backends/Audio.h +++ b/src/Backends/Audio.h @@ -22,3 +22,5 @@ void AudioBackend_RewindSound(AudioBackend_Sound *sound); void AudioBackend_SetSoundFrequency(AudioBackend_Sound *sound, unsigned int frequency); void AudioBackend_SetSoundVolume(AudioBackend_Sound *sound, long volume); void AudioBackend_SetSoundPan(AudioBackend_Sound *sound, long pan); + +void AudioBackend_SetOrganyaTimer(unsigned short timer); diff --git a/src/Backends/Audio/SDL2.cpp b/src/Backends/Audio/SDL2.cpp index 062018f2..27617b14 100644 --- a/src/Backends/Audio/SDL2.cpp +++ b/src/Backends/Audio/SDL2.cpp @@ -44,6 +44,8 @@ static SDL_AudioDeviceID device_id; static unsigned long output_frequency; +static unsigned short organya_timer; + static double MillibelToScale(long volume) { // Volume is in hundredths of decibels, from 0 to -10000 @@ -351,3 +353,12 @@ void AudioBackend_SetSoundPan(AudioBackend_Sound *sound, long pan) SDL_UnlockAudioDevice(device_id); } + +void AudioBackend_SetOrganyaTimer(unsigned short timer) +{ + SDL_LockAudioDevice(device_id); + + organya_timer = timer; + + SDL_UnlockAudioDevice(device_id); +} diff --git a/src/Organya.cpp b/src/Organya.cpp index 8880cebe..01e88e0e 100644 --- a/src/Organya.cpp +++ b/src/Organya.cpp @@ -95,8 +95,6 @@ typedef struct OrgData BOOL InitMusicData(const char *path); } ORGDATA; -unsigned short organya_timer; - AudioBackend_Sound *lpORGANBUFFER[8][8][2] = {NULL}; ///////////////////////////////////////////// @@ -827,7 +825,7 @@ void PlayOrganyaMusic(void) if (!audio_backend_initialised) return; - organya_timer = org_data.info.wait; + AudioBackend_SetOrganyaTimer(org_data.info.wait); } BOOL ChangeOrganyaVolume(signed int volume) @@ -847,7 +845,7 @@ void StopOrganyaMusic(void) if (!audio_backend_initialised) return; - organya_timer = 0; + AudioBackend_SetOrganyaTimer(0); // Stop notes for (int i = 0; i < MAXMELODY; i++) @@ -870,7 +868,7 @@ void EndOrganya(void) if (!audio_backend_initialised) return; - organya_timer = 0; + AudioBackend_SetOrganyaTimer(0); // Release everything related to org org_data.ReleaseNote(); diff --git a/src/Organya.h b/src/Organya.h index 53adcfe7..c560af38 100644 --- a/src/Organya.h +++ b/src/Organya.h @@ -6,8 +6,6 @@ #define MAXMELODY 8 #define MAXDRAM 8 -extern unsigned short organya_timer; - extern BOOL g_mute[MAXTRACK]; // Used by the debug Mute menu BOOL MakeOrganyaWave(signed char track, signed char wave_no, signed char pipi);