From d003ec9c584433a0ecddc5f7ee7890efbe66eec8 Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Mon, 31 Aug 2015 15:49:17 -0700 Subject: [PATCH] Delete collision sounds (and their threads) after use. This has been broken ever since I added avatar collision sounds around https://github.com/highfidelity/hifi/pull/5159 or so. --- libraries/audio/src/AudioInjector.cpp | 11 +++++++++-- libraries/audio/src/AudioInjector.h | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/libraries/audio/src/AudioInjector.cpp b/libraries/audio/src/AudioInjector.cpp index 8fd7cb9ce5..716ed5d43e 100644 --- a/libraries/audio/src/AudioInjector.cpp +++ b/libraries/audio/src/AudioInjector.cpp @@ -313,7 +313,7 @@ AudioInjector* AudioInjector::playSound(const QString& soundUrl, const float vol QByteArray samples = sound->getByteArray(); if (stretchFactor == 1.0f) { - return playSound(samples, options, NULL); + return playSoundAndDelete(samples, options, NULL); } soxr_io_spec_t spec = soxr_io_spec(SOXR_INT16_I, SOXR_INT16_I); @@ -333,9 +333,16 @@ AudioInjector* AudioInjector::playSound(const QString& soundUrl, const float vol qCDebug(audio) << "Unable to resample" << soundUrl << "from" << nInputSamples << "@" << standardRate << "to" << nOutputSamples << "@" << resampledRate; resampled = samples; } - return playSound(resampled, options, NULL); + return playSoundAndDelete(resampled, options, NULL); } +AudioInjector* AudioInjector::playSoundAndDelete(const QByteArray& buffer, const AudioInjectorOptions options, AbstractAudioInterface* localInterface) { + AudioInjector* sound = playSound(buffer, options, localInterface); + sound->triggerDeleteAfterFinish(); + return sound; +} + + AudioInjector* AudioInjector::playSound(const QByteArray& buffer, const AudioInjectorOptions options, AbstractAudioInterface* localInterface) { QThread* injectorThread = new QThread(); injectorThread->setObjectName("Audio Injector Thread"); diff --git a/libraries/audio/src/AudioInjector.h b/libraries/audio/src/AudioInjector.h index d65925b865..0e98fe1682 100644 --- a/libraries/audio/src/AudioInjector.h +++ b/libraries/audio/src/AudioInjector.h @@ -46,6 +46,7 @@ public: void setLocalAudioInterface(AbstractAudioInterface* localAudioInterface) { _localAudioInterface = localAudioInterface; } + static AudioInjector* playSoundAndDelete(const QByteArray& buffer, const AudioInjectorOptions options, AbstractAudioInterface* localInterface); static AudioInjector* playSound(const QByteArray& buffer, const AudioInjectorOptions options, AbstractAudioInterface* localInterface); static AudioInjector* playSound(const QString& soundUrl, const float volume, const float stretchFactor, const glm::vec3 position);