Fix crash if audio init fails (especially if there are no output devices)

This commit is contained in:
elasota
2020-05-28 23:05:32 -04:00
parent 11628ddd93
commit 42e124a90c
2 changed files with 17 additions and 3 deletions

View File

@@ -353,12 +353,15 @@ namespace PortabilityLayer
AudioChannel *SoundSystemImpl::CreateChannel()
{
IGpAudioDriver *audioDriver = PortabilityLayer::HostAudioDriver::GetInstance();
if (!audioDriver)
return nullptr;
PortabilityLayer::MemoryManager *mm = PortabilityLayer::MemoryManager::GetInstance();
void *storage = mm->Alloc(sizeof(PortabilityLayer::AudioChannelImpl));
if (!storage)
return nullptr;
IGpAudioDriver *audioDriver = PortabilityLayer::HostAudioDriver::GetInstance();
IGpAudioChannel *audioChannel = audioDriver->CreateChannel();
if (!audioChannel)
{
@@ -388,7 +391,12 @@ namespace PortabilityLayer
void SoundSystemImpl::SetVolume(uint8_t vol)
{
PortabilityLayer::HostAudioDriver::GetInstance()->SetMasterVolume(vol, 255);
IGpAudioDriver *audioDriver = PortabilityLayer::HostAudioDriver::GetInstance();
if (!audioDriver)
return;
audioDriver->SetMasterVolume(vol, 255);
m_volume = vol;
}