diff --git a/libraries/audio/src/AudioInjector.cpp b/libraries/audio/src/AudioInjector.cpp index 78bc157afe..5ad4dc6f4d 100644 --- a/libraries/audio/src/AudioInjector.cpp +++ b/libraries/audio/src/AudioInjector.cpp @@ -19,6 +19,7 @@ int abstractAudioPointerMeta = qRegisterMetaType("AbstractAudioInterface*"); AudioInjector::AudioInjector(Sound* sound, AudioInjectorOptions injectorOptions) : + _thread(NULL), _sound(sound), _volume(injectorOptions.volume), _shouldLoopback(injectorOptions.shouldLoopback), @@ -26,21 +27,24 @@ AudioInjector::AudioInjector(Sound* sound, AudioInjectorOptions injectorOptions) _orientation(injectorOptions.orientation), _loopbackAudioInterface(injectorOptions.loopbackAudioInterface) { + _thread = new QThread(); + // we want to live on our own thread - moveToThread(&_thread); + moveToThread(_thread); } void AudioInjector::threadSound(Sound* sound, AudioInjectorOptions injectorOptions) { - AudioInjector injector(sound, injectorOptions); + AudioInjector* injector = new AudioInjector(sound, injectorOptions); // start injecting when the injector thread starts - connect(&injector._thread, SIGNAL(started()), &injector, SLOT(injectAudio())); + connect(injector->_thread, SIGNAL(started()), injector, SLOT(injectAudio())); // connect the right slots and signals so that the AudioInjector is killed once the injection is complete - connect(&injector, SIGNAL(finished()), &injector._thread, SLOT(quit())); - connect(&injector, SIGNAL(finished()), &injector, SLOT(deleteLater())); + connect(injector, SIGNAL(finished()), injector, SLOT(deleteLater())); + connect(injector, SIGNAL(finished()), injector->_thread, SLOT(quit())); + connect(injector->_thread, SIGNAL(finished()), injector->_thread, SLOT(deleteLater())); - injector._thread.start(); + injector->_thread->start(); } const uchar MAX_INJECTOR_VOLUME = 0xFF; diff --git a/libraries/audio/src/AudioInjector.h b/libraries/audio/src/AudioInjector.h index 10a1335fe8..f2e7b3b498 100644 --- a/libraries/audio/src/AudioInjector.h +++ b/libraries/audio/src/AudioInjector.h @@ -40,7 +40,7 @@ public: private: AudioInjector(Sound* sound, AudioInjectorOptions injectorOptions); - QThread _thread; + QThread* _thread; Sound* _sound; float _volume; uchar _shouldLoopback;