Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #9603 from Bonta0/audio-init
AudioCommon: Split Initialization
  • Loading branch information
JosJuice committed Mar 24, 2021
2 parents 75f8ce1 + 66e39de commit fa04e5a
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 9 deletions.
11 changes: 4 additions & 7 deletions Source/Core/AudioCommon/AudioCommon.cpp
Expand Up @@ -15,7 +15,6 @@
#include "Common/FileUtil.h"
#include "Common/Logging/Log.h"
#include "Core/ConfigManager.h"
#include "Core/HW/AudioInterface.h"

// This shouldn't be a global, at least not here.
std::unique_ptr<SoundStream> g_sound_stream;
Expand Down Expand Up @@ -66,13 +65,11 @@ void InitSoundStream()
g_sound_stream = std::make_unique<NullSound>();
g_sound_stream->Init();
}
}

// Ideally these two calls would be done in AudioInterface::Init so that we don't
// need to have a dependency on AudioInterface here, but this has to be done
// after creating g_sound_stream (above) and before starting audio dumping (below)
g_sound_stream->GetMixer()->SetDMAInputSampleRate(AudioInterface::GetAIDSampleRate());
g_sound_stream->GetMixer()->SetStreamInputSampleRate(AudioInterface::GetAISSampleRate());

void PostInitSoundStream()
{
// This needs to be called after AudioInterface::Init where input sample rates are set
UpdateSoundStream();
SetSoundStreamRunning(true);

Expand Down
1 change: 1 addition & 0 deletions Source/Core/AudioCommon/AudioCommon.h
Expand Up @@ -19,6 +19,7 @@ extern std::unique_ptr<SoundStream> g_sound_stream;
namespace AudioCommon
{
void InitSoundStream();
void PostInitSoundStream();
void ShutdownSoundStream();
std::string GetDefaultSoundBackend();
std::vector<std::string> GetSoundBackends();
Expand Down
6 changes: 4 additions & 2 deletions Source/Core/Core/Core.cpp
Expand Up @@ -516,6 +516,9 @@ static void EmuThread(std::unique_ptr<BootParameters> boot, WindowSystemInfo wsi
Movie::Init(*boot);
Common::ScopeGuard movie_guard{&Movie::Shutdown};

AudioCommon::InitSoundStream();
Common::ScopeGuard audio_guard{&AudioCommon::ShutdownSoundStream};

HW::Init();

Common::ScopeGuard hw_guard{[] {
Expand Down Expand Up @@ -566,8 +569,7 @@ static void EmuThread(std::unique_ptr<BootParameters> boot, WindowSystemInfo wsi
// it's now ok to initialize any custom textures
HiresTexture::Update();

AudioCommon::InitSoundStream();
Common::ScopeGuard audio_guard{&AudioCommon::ShutdownSoundStream};
AudioCommon::PostInitSoundStream();

// The hardware is initialized.
s_hardware_initialized = true;
Expand Down
3 changes: 3 additions & 0 deletions Source/Core/Core/HW/AudioInterface.cpp
Expand Up @@ -153,6 +153,9 @@ void Init()
s_aid_sample_rate = Get32KHzSampleRate();

event_type_ai = CoreTiming::RegisterEvent("AICallback", Update);

g_sound_stream->GetMixer()->SetDMAInputSampleRate(GetAIDSampleRate());
g_sound_stream->GetMixer()->SetStreamInputSampleRate(GetAISSampleRate());
}

void Shutdown()
Expand Down

0 comments on commit fa04e5a

Please sign in to comment.