From a3bb651194f90d5022ab5d2c749d084f8752bb22 Mon Sep 17 00:00:00 2001 From: Clownacy Date: Wed, 4 Sep 2019 03:16:33 +0100 Subject: [PATCH] Change the audio backend API a little AudioBackend_SetSoundPosition was very loosely-defined. --- src/Backends/Audio.h | 2 +- src/Backends/Audio/SDL2.cpp | 25 +++++++++++++------------ src/Organya.cpp | 6 ------ src/Sound.cpp | 3 +-- 4 files changed, 15 insertions(+), 21 deletions(-) diff --git a/src/Backends/Audio.h b/src/Backends/Audio.h index 90d7a1e5..0b28f352 100644 --- a/src/Backends/Audio.h +++ b/src/Backends/Audio.h @@ -15,8 +15,8 @@ void AudioBackend_UnlockSound(AudioBackend_Sound *sound); void AudioBackend_PlaySound(AudioBackend_Sound *sound, BOOL looping); void AudioBackend_StopSound(AudioBackend_Sound *sound); +void AudioBackend_PauseSound(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_SetSoundPosition(AudioBackend_Sound *sound, size_t position); diff --git a/src/Backends/Audio/SDL2.cpp b/src/Backends/Audio/SDL2.cpp index 183e24d6..63965556 100644 --- a/src/Backends/Audio/SDL2.cpp +++ b/src/Backends/Audio/SDL2.cpp @@ -271,6 +271,19 @@ void AudioBackend_StopSound(AudioBackend_Sound *sound) SDL_LockAudioDevice(device_id); + sound->playing = FALSE; + sound->position = 0.0; + + SDL_UnlockAudioDevice(device_id); +} + +void AudioBackend_PauseSound(AudioBackend_Sound *sound) +{ + if (sound == NULL) + return; + + SDL_LockAudioDevice(device_id); + sound->playing = FALSE; SDL_UnlockAudioDevice(device_id); @@ -311,15 +324,3 @@ void AudioBackend_SetSoundPan(AudioBackend_Sound *sound, long pan) SDL_UnlockAudioDevice(device_id); } - -void AudioBackend_SetSoundPosition(AudioBackend_Sound *sound, size_t position) -{ - if (sound == NULL) - return; - - SDL_LockAudioDevice(device_id); - - SetSoundPosition(sound, position); - - SDL_UnlockAudioDevice(device_id); -} diff --git a/src/Organya.cpp b/src/Organya.cpp index 7798073e..e4eeff86 100644 --- a/src/Organya.cpp +++ b/src/Organya.cpp @@ -177,7 +177,6 @@ BOOL MakeSoundObject8(signed char *wavep, signed char track, signed char pipi) } AudioBackend_UnlockSound(lpORGANBUFFER[track][j][k]); - AudioBackend_SetSoundPosition(lpORGANBUFFER[track][j][k], 0); } } @@ -219,10 +218,7 @@ void PlayOrganObject(unsigned char key, int mode, signed char track, long freq) { case 0: // 停止 (Stop) if (old_key[track] != 0xFF) - { AudioBackend_StopSound(lpORGANBUFFER[track][old_key[track] / 12][key_twin[track]]); - AudioBackend_SetSoundPosition(lpORGANBUFFER[track][old_key[track] / 12][key_twin[track]], 0); - } break; case 1: // 再生 (Playback) @@ -345,12 +341,10 @@ void PlayDramObject(unsigned char key, int mode, signed char track) { case 0: // 停止 (Stop) AudioBackend_StopSound(lpSECONDARYBUFFER[150 + track]); - AudioBackend_SetSoundPosition(lpSECONDARYBUFFER[150 + track], 0); break; case 1: // 再生 (Playback) AudioBackend_StopSound(lpSECONDARYBUFFER[150 + track]); - AudioBackend_SetSoundPosition(lpSECONDARYBUFFER[150 + track], 0); ChangeDramFrequency(key, track); // 周波数を設定して () AudioBackend_PlaySound(lpSECONDARYBUFFER[150 + track], FALSE); break; diff --git a/src/Sound.cpp b/src/Sound.cpp index 85fedc91..3275ebb2 100644 --- a/src/Sound.cpp +++ b/src/Sound.cpp @@ -197,12 +197,11 @@ void PlaySoundObject(int no, int mode) switch (mode) { case 0: // 停止 (Stop) - AudioBackend_StopSound(lpSECONDARYBUFFER[no]); + AudioBackend_PauseSound(lpSECONDARYBUFFER[no]); break; case 1: // 再生 (Playback) AudioBackend_StopSound(lpSECONDARYBUFFER[no]); - AudioBackend_SetSoundPosition(lpSECONDARYBUFFER[no], 0); AudioBackend_PlaySound(lpSECONDARYBUFFER[no], FALSE); break;