Fixes a memory leak as a result of creating an AudioBuffer* with the old source.frameCount. This internally allocates memory to the structs data pointer which is then later overridden by the correct sound data of the source sound. (#3458)
Additionally added a volume assignment from old to new as currently there is no way to get the volume of a sound and the AudioBuffer struct is not reachable from user code due to opaque definition.
This commit is contained in:
parent
4ed776368a
commit
daf227a185
1 changed files with 5 additions and 2 deletions
|
@ -928,7 +928,6 @@ Sound LoadSoundFromWave(Wave wave)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clone sound from existing sound data, clone does not own wave data
|
// Clone sound from existing sound data, clone does not own wave data
|
||||||
// Wave data must
|
|
||||||
// NOTE: Wave data must be unallocated manually and will be shared across all clones
|
// NOTE: Wave data must be unallocated manually and will be shared across all clones
|
||||||
Sound LoadSoundAlias(Sound source)
|
Sound LoadSoundAlias(Sound source)
|
||||||
{
|
{
|
||||||
|
@ -936,13 +935,16 @@ Sound LoadSoundAlias(Sound source)
|
||||||
|
|
||||||
if (source.stream.buffer->data != NULL)
|
if (source.stream.buffer->data != NULL)
|
||||||
{
|
{
|
||||||
AudioBuffer* audioBuffer = LoadAudioBuffer(AUDIO_DEVICE_FORMAT, AUDIO_DEVICE_CHANNELS, AUDIO.System.device.sampleRate, source.frameCount, AUDIO_BUFFER_USAGE_STATIC);
|
AudioBuffer* audioBuffer = LoadAudioBuffer(AUDIO_DEVICE_FORMAT, AUDIO_DEVICE_CHANNELS, AUDIO.System.device.sampleRate, 0, AUDIO_BUFFER_USAGE_STATIC);
|
||||||
if (audioBuffer == NULL)
|
if (audioBuffer == NULL)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_WARNING, "SOUND: Failed to create buffer");
|
TRACELOG(LOG_WARNING, "SOUND: Failed to create buffer");
|
||||||
return sound; // early return to avoid dereferencing the audioBuffer null pointer
|
return sound; // early return to avoid dereferencing the audioBuffer null pointer
|
||||||
}
|
}
|
||||||
|
audioBuffer->sizeInFrames = source.stream.buffer->sizeInFrames;
|
||||||
|
audioBuffer->volume = source.stream.buffer->volume;
|
||||||
audioBuffer->data = source.stream.buffer->data;
|
audioBuffer->data = source.stream.buffer->data;
|
||||||
|
|
||||||
sound.frameCount = source.frameCount;
|
sound.frameCount = source.frameCount;
|
||||||
sound.stream.sampleRate = AUDIO.System.device.sampleRate;
|
sound.stream.sampleRate = AUDIO.System.device.sampleRate;
|
||||||
sound.stream.sampleSize = 32;
|
sound.stream.sampleSize = 32;
|
||||||
|
@ -953,6 +955,7 @@ Sound LoadSoundAlias(Sound source)
|
||||||
return sound;
|
return sound;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Checks if a sound is ready
|
// Checks if a sound is ready
|
||||||
bool IsSoundReady(Sound sound)
|
bool IsSoundReady(Sound sound)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue