From 759ee24c4c1722813609c3b7c77fabef275b02bf Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Thu, 22 Aug 2019 18:18:59 +0200 Subject: [PATCH] Game Kit: do not allocate BBuffers before initializing the Media Kit The port pool now being created in BMediaRoster init, we must make sure the media roster is initialized before doing anything else. Change-Id: I5a3cc61c993e9be4078772bbf341b637d951d239 Reviewed-on: https://review.haiku-os.org/c/haiku/+/1734 Reviewed-by: waddlesplash --- src/kits/game/GameSoundDevice.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/kits/game/GameSoundDevice.cpp b/src/kits/game/GameSoundDevice.cpp index edfdafc23b..63188bb791 100644 --- a/src/kits/game/GameSoundDevice.cpp +++ b/src/kits/game/GameSoundDevice.cpp @@ -146,6 +146,9 @@ BGameSoundDevice::CreateBuffer(gs_id* sound, const gs_audio_format* format, if (frames <= 0 || !sound) return B_BAD_VALUE; + // Make sure BMediaRoster is created before we AllocateSound() + BMediaRoster* roster = BMediaRoster::Roster(); + status_t err = B_MEDIA_TOO_MANY_BUFFERS; int32 position = AllocateSound(); @@ -153,7 +156,7 @@ BGameSoundDevice::CreateBuffer(gs_id* sound, const gs_audio_format* format, fSounds[position] = new SimpleSoundBuffer(format, data, frames); media_node systemMixer; - BMediaRoster::Roster()->GetAudioMixer(&systemMixer); + roster->GetAudioMixer(&systemMixer); err = fSounds[position]->Connect(&systemMixer); } @@ -171,6 +174,9 @@ BGameSoundDevice::CreateBuffer(gs_id* sound, const void* object, if (!object || !sound) return B_BAD_VALUE; + // Make sure BMediaRoster is created before we AllocateSound() + BMediaRoster* roster = BMediaRoster::Roster(); + status_t err = B_MEDIA_TOO_MANY_BUFFERS; int32 position = AllocateSound(); @@ -179,7 +185,7 @@ BGameSoundDevice::CreateBuffer(gs_id* sound, const void* object, inBufferFrameCount, inBufferCount); media_node systemMixer; - BMediaRoster::Roster()->GetAudioMixer(&systemMixer); + roster->GetAudioMixer(&systemMixer); err = fSounds[position]->Connect(&systemMixer); }