From 0dc9bb6b1bb6cd6d41428e42014ac9bbd70cf556 Mon Sep 17 00:00:00 2001 From: Clownacy Date: Fri, 6 Sep 2019 14:46:31 +0000 Subject: [PATCH] Change the audio backend API again --- src/Backends/Audio.h | 2 +- src/Backends/Audio/SDL2.cpp | 4 ++-- src/Organya.cpp | 4 ++++ src/Sound.cpp | 3 ++- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Backends/Audio.h b/src/Backends/Audio.h index 0b28f352..d1d32773 100644 --- a/src/Backends/Audio.h +++ b/src/Backends/Audio.h @@ -15,7 +15,7 @@ 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_RewindSound(AudioBackend_Sound *sound); void AudioBackend_SetSoundFrequency(AudioBackend_Sound *sound, unsigned int frequency); void AudioBackend_SetSoundVolume(AudioBackend_Sound *sound, long volume); diff --git a/src/Backends/Audio/SDL2.cpp b/src/Backends/Audio/SDL2.cpp index 7e973297..b3d61be7 100644 --- a/src/Backends/Audio/SDL2.cpp +++ b/src/Backends/Audio/SDL2.cpp @@ -272,14 +272,14 @@ void AudioBackend_StopSound(AudioBackend_Sound *sound) SDL_UnlockAudioDevice(device_id); } -void AudioBackend_PauseSound(AudioBackend_Sound *sound) +void AudioBackend_RewindSound(AudioBackend_Sound *sound) { if (sound == NULL) return; SDL_LockAudioDevice(device_id); - sound->playing = FALSE; + sound->position = 0.0; SDL_UnlockAudioDevice(device_id); } diff --git a/src/Organya.cpp b/src/Organya.cpp index cad51b35..7079c3c5 100644 --- a/src/Organya.cpp +++ b/src/Organya.cpp @@ -177,6 +177,7 @@ BOOL MakeSoundObject8(signed char *wavep, signed char track, signed char pipi) } AudioBackend_UnlockSound(lpORGANBUFFER[track][j][k]); + AudioBackend_RewindSound(lpORGANBUFFER[track][j][k]); } } @@ -219,6 +220,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_RewindSound(lpORGANBUFFER[track][old_key[track] / 12][key_twin[track]]); break; case 1: // 再生 (Playback) @@ -341,10 +343,12 @@ void PlayDramObject(unsigned char key, int mode, signed char track) { case 0: // 停止 (Stop) AudioBackend_StopSound(lpSECONDARYBUFFER[150 + track]); + AudioBackend_RewindSound(lpSECONDARYBUFFER[150 + track]); break; case 1: // 再生 (Playback) AudioBackend_StopSound(lpSECONDARYBUFFER[150 + track]); + AudioBackend_RewindSound(lpSECONDARYBUFFER[150 + track]); ChangeDramFrequency(key, track); // 周波数を設定して () AudioBackend_PlaySound(lpSECONDARYBUFFER[150 + track], FALSE); break; diff --git a/src/Sound.cpp b/src/Sound.cpp index 447ebc68..68a7d292 100644 --- a/src/Sound.cpp +++ b/src/Sound.cpp @@ -197,11 +197,12 @@ void PlaySoundObject(int no, int mode) switch (mode) { case 0: // 停止 (Stop) - AudioBackend_PauseSound(lpSECONDARYBUFFER[no]); + AudioBackend_StopSound(lpSECONDARYBUFFER[no]); break; case 1: // 再生 (Playback) AudioBackend_StopSound(lpSECONDARYBUFFER[no]); + AudioBackend_RewindSound(lpSECONDARYBUFFER[no]); AudioBackend_PlaySound(lpSECONDARYBUFFER[no], FALSE); break;