From 0baddbf9a8152ab7dd3ab200e516a998a0c9433f Mon Sep 17 00:00:00 2001 From: Michael M Date: Sat, 21 Oct 2017 16:23:40 -0700 Subject: SoundStream: change Start/Stop to Init/SetRunning/destruct --- Source/Core/AudioCommon/AudioCommon.cpp | 37 +++++++++++++++------------------ 1 file changed, 17 insertions(+), 20 deletions(-) (limited to 'Source/Core/AudioCommon/AudioCommon.cpp') diff --git a/Source/Core/AudioCommon/AudioCommon.cpp b/Source/Core/AudioCommon/AudioCommon.cpp index 77da1e4c70..3e04ea8f19 100644 --- a/Source/Core/AudioCommon/AudioCommon.cpp +++ b/Source/Core/AudioCommon/AudioCommon.cpp @@ -50,23 +50,15 @@ void InitSoundStream() else if (backend == BACKEND_OPENSLES && OpenSLESStream::isValid()) g_sound_stream = std::make_unique(); - if (!g_sound_stream) + if (!g_sound_stream || !g_sound_stream->Init()) { WARN_LOG(AUDIO, "Could not initialize backend %s, using %s instead.", backend.c_str(), BACKEND_NULLSOUND); g_sound_stream = std::make_unique(); } - if (!g_sound_stream->Start()) - { - ERROR_LOG(AUDIO, "Could not start backend %s, using %s instead", backend.c_str(), - BACKEND_NULLSOUND); - - g_sound_stream = std::make_unique(); - g_sound_stream->Start(); - } - UpdateSoundStream(); + SetSoundStreamRunning(true); if (SConfig::GetInstance().m_DumpAudio && !s_audio_dump_start) StartAudioDump(); @@ -76,15 +68,11 @@ void ShutdownSoundStream() { INFO_LOG(AUDIO, "Shutting down sound stream"); - if (g_sound_stream) - { - g_sound_stream->Stop(); - - if (SConfig::GetInstance().m_DumpAudio && s_audio_dump_start) - StopAudioDump(); + if (SConfig::GetInstance().m_DumpAudio && s_audio_dump_start) + StopAudioDump(); - g_sound_stream.reset(); - } + SetSoundStreamRunning(false); + g_sound_stream.reset(); INFO_LOG(AUDIO, "Done shutting down sound stream"); } @@ -161,8 +149,15 @@ void UpdateSoundStream() void SetSoundStreamRunning(bool running) { - if (g_sound_stream) - g_sound_stream->SetRunning(running); + if (!g_sound_stream) + return; + + if (g_sound_stream->SetRunning(running)) + return; + if (running) + ERROR_LOG(AUDIO, "Error starting stream."); + else + ERROR_LOG(AUDIO, "Error stopping stream."); } void SendAIBuffer(const short* samples, unsigned int num_samples) @@ -198,6 +193,8 @@ void StartAudioDump() void StopAudioDump() { + if (!g_sound_stream) + return; g_sound_stream->GetMixer()->StopLogDTKAudio(); g_sound_stream->GetMixer()->StopLogDSPAudio(); s_audio_dump_start = false; -- cgit v1.2.3 From a988a8a4587bf18d8ad8dba36653b803e3a583b4 Mon Sep 17 00:00:00 2001 From: Michael M Date: Sat, 21 Oct 2017 15:12:05 -0700 Subject: AudioCommon: make SetSoundStreamRunning idempotent --- Source/Core/AudioCommon/AudioCommon.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'Source/Core/AudioCommon/AudioCommon.cpp') diff --git a/Source/Core/AudioCommon/AudioCommon.cpp b/Source/Core/AudioCommon/AudioCommon.cpp index 3e04ea8f19..ceecd4b909 100644 --- a/Source/Core/AudioCommon/AudioCommon.cpp +++ b/Source/Core/AudioCommon/AudioCommon.cpp @@ -21,6 +21,7 @@ std::unique_ptr g_sound_stream; static bool s_audio_dump_start = false; +static bool s_sound_stream_running = false; namespace AudioCommon { @@ -152,6 +153,10 @@ void SetSoundStreamRunning(bool running) if (!g_sound_stream) return; + if (s_sound_stream_running == running) + return; + s_sound_stream_running = running; + if (g_sound_stream->SetRunning(running)) return; if (running) -- cgit v1.2.3