Change the audio backend API a little

AudioBackend_SetSoundPosition was very loosely-defined.
This commit is contained in:
Clownacy 2019-09-04 03:16:33 +01:00
parent d7362f8a14
commit a3bb651194
4 changed files with 15 additions and 21 deletions

View file

@ -15,8 +15,8 @@ void AudioBackend_UnlockSound(AudioBackend_Sound *sound);
void AudioBackend_PlaySound(AudioBackend_Sound *sound, BOOL looping); void AudioBackend_PlaySound(AudioBackend_Sound *sound, BOOL looping);
void AudioBackend_StopSound(AudioBackend_Sound *sound); void AudioBackend_StopSound(AudioBackend_Sound *sound);
void AudioBackend_PauseSound(AudioBackend_Sound *sound);
void AudioBackend_SetSoundFrequency(AudioBackend_Sound *sound, unsigned int frequency); void AudioBackend_SetSoundFrequency(AudioBackend_Sound *sound, unsigned int frequency);
void AudioBackend_SetSoundVolume(AudioBackend_Sound *sound, long volume); void AudioBackend_SetSoundVolume(AudioBackend_Sound *sound, long volume);
void AudioBackend_SetSoundPan(AudioBackend_Sound *sound, long pan); void AudioBackend_SetSoundPan(AudioBackend_Sound *sound, long pan);
void AudioBackend_SetSoundPosition(AudioBackend_Sound *sound, size_t position);

View file

@ -271,6 +271,19 @@ void AudioBackend_StopSound(AudioBackend_Sound *sound)
SDL_LockAudioDevice(device_id); 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; sound->playing = FALSE;
SDL_UnlockAudioDevice(device_id); SDL_UnlockAudioDevice(device_id);
@ -311,15 +324,3 @@ void AudioBackend_SetSoundPan(AudioBackend_Sound *sound, long pan)
SDL_UnlockAudioDevice(device_id); 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);
}

View file

@ -177,7 +177,6 @@ BOOL MakeSoundObject8(signed char *wavep, signed char track, signed char pipi)
} }
AudioBackend_UnlockSound(lpORGANBUFFER[track][j][k]); 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) case 0: // 停止 (Stop)
if (old_key[track] != 0xFF) if (old_key[track] != 0xFF)
{
AudioBackend_StopSound(lpORGANBUFFER[track][old_key[track] / 12][key_twin[track]]); AudioBackend_StopSound(lpORGANBUFFER[track][old_key[track] / 12][key_twin[track]]);
AudioBackend_SetSoundPosition(lpORGANBUFFER[track][old_key[track] / 12][key_twin[track]], 0);
}
break; break;
case 1: // 再生 (Playback) case 1: // 再生 (Playback)
@ -345,12 +341,10 @@ void PlayDramObject(unsigned char key, int mode, signed char track)
{ {
case 0: // 停止 (Stop) case 0: // 停止 (Stop)
AudioBackend_StopSound(lpSECONDARYBUFFER[150 + track]); AudioBackend_StopSound(lpSECONDARYBUFFER[150 + track]);
AudioBackend_SetSoundPosition(lpSECONDARYBUFFER[150 + track], 0);
break; break;
case 1: // 再生 (Playback) case 1: // 再生 (Playback)
AudioBackend_StopSound(lpSECONDARYBUFFER[150 + track]); AudioBackend_StopSound(lpSECONDARYBUFFER[150 + track]);
AudioBackend_SetSoundPosition(lpSECONDARYBUFFER[150 + track], 0);
ChangeDramFrequency(key, track); // 周波数を設定して () ChangeDramFrequency(key, track); // 周波数を設定して ()
AudioBackend_PlaySound(lpSECONDARYBUFFER[150 + track], FALSE); AudioBackend_PlaySound(lpSECONDARYBUFFER[150 + track], FALSE);
break; break;

View file

@ -197,12 +197,11 @@ void PlaySoundObject(int no, int mode)
switch (mode) switch (mode)
{ {
case 0: // 停止 (Stop) case 0: // 停止 (Stop)
AudioBackend_StopSound(lpSECONDARYBUFFER[no]); AudioBackend_PauseSound(lpSECONDARYBUFFER[no]);
break; break;
case 1: // 再生 (Playback) case 1: // 再生 (Playback)
AudioBackend_StopSound(lpSECONDARYBUFFER[no]); AudioBackend_StopSound(lpSECONDARYBUFFER[no]);
AudioBackend_SetSoundPosition(lpSECONDARYBUFFER[no], 0);
AudioBackend_PlaySound(lpSECONDARYBUFFER[no], FALSE); AudioBackend_PlaySound(lpSECONDARYBUFFER[no], FALSE);
break; break;