History

use a wrapper on audio injector for script ownership

Stephen Birarda committed 11 years ago

Commit 79674fb1 parent 449719b7 files · +105 −25Browse files

Showing the changes to libraries/script-engine/src/AudioScriptingInterface.cpp (1 of 7 files). Show all

Unified · Split

libraries/script-engine/src/AudioScriptingInterface.cpp+11−2
@@ -9,6 +9,8 @@ · 8 unmodified lines
9// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html9// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10//10//
11 11
12#include "ScriptAudioInjector.h"
13
12#include "AudioScriptingInterface.h"14#include "AudioScriptingInterface.h"
13 15
14void registerAudioMetaTypes(QScriptEngine* engine) {16void registerAudioMetaTypes(QScriptEngine* engine) {
@@ -28,12 +30,16 @@ AudioScriptingInterface::AudioScriptingInterface() : · 13 unmodified lines
28 30
29}31}
30 32
31AudioInjector* AudioScriptingInterface::playSound(Sound* sound, const AudioInjectorOptions& injectorOptions) {33ScriptAudioInjector* AudioScriptingInterface::playSound(Sound* sound, const AudioInjectorOptions& injectorOptions) {
32 AudioInjector* injector = NULL;34 AudioInjector* injector = NULL;
33 QMetaObject::invokeMethod(this, "invokedPlaySound", Qt::BlockingQueuedConnection,35 QMetaObject::invokeMethod(this, "invokedPlaySound", Qt::BlockingQueuedConnection,
34 Q_RETURN_ARG(AudioInjector*, injector),36 Q_RETURN_ARG(AudioInjector*, injector),
35 Q_ARG(Sound*, sound), Q_ARG(const AudioInjectorOptions&, injectorOptions));37 Q_ARG(Sound*, sound), Q_ARG(const AudioInjectorOptions&, injectorOptions));
36 return injector;38 if (injector) {
39 return new ScriptAudioInjector(injector);
40 } else {
41 return NULL;
42 }
37}43}
38 44
39AudioInjector* AudioScriptingInterface::invokedPlaySound(Sound* sound, const AudioInjectorOptions& injectorOptions) {45AudioInjector* AudioScriptingInterface::invokedPlaySound(Sound* sound, const AudioInjectorOptions& injectorOptions) {
@@ -43,6 +49,7 @@ AudioInjector* AudioScriptingInterface::invokedPlaySound(Sound* sound, const Aud · 3 unmodified lines
43 optionsCopy.stereo = sound->isStereo();49 optionsCopy.stereo = sound->isStereo();
44 50
45 QThread* injectorThread = new QThread();51 QThread* injectorThread = new QThread();
52 qDebug() << "the injector thread is" << injectorThread;
46 injectorThread->setObjectName("Audio Injector Thread");53 injectorThread->setObjectName("Audio Injector Thread");
47 54
48 AudioInjector* injector = new AudioInjector(sound, optionsCopy);55 AudioInjector* injector = new AudioInjector(sound, optionsCopy);
@@ -50,6 +57,8 @@ AudioInjector* AudioScriptingInterface::invokedPlaySound(Sound* sound, const Aud · 1 unmodified line
50 57
51 injector->moveToThread(injectorThread);58 injector->moveToThread(injectorThread);
52 59
60 qDebug() << "the injector is" << injector;
61
53 // start injecting when the injector thread starts62 // start injecting when the injector thread starts
54 connect(injectorThread, &QThread::started, injector, &AudioInjector::injectAudio);63 connect(injectorThread, &QThread::started, injector, &AudioInjector::injectAudio);
55 64