History

Make stereo interface async

Atlante45 committed 8 years ago

Commit 4a4c0d11 parent 29ff47c5 files · +36 −19Browse files

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

Unified · Split

libraries/script-engine/src/AudioScriptingInterface.cpp+17−11
@@ -23,6 +23,21 @@ void registerAudioMetaTypes(QScriptEngine* engine) { · 22 unmodified lines
2323 qScriptRegisterMetaType(engine, soundSharedPointerToScriptValue, soundSharedPointerFromScriptValue);
2424 }
2525
26+
27+void AudioScriptingInterface::setLocalAudioInterface(AbstractAudioInterface* audioInterface) {
28+ if (_localAudioInterface) {
29+ disconnect(_localAudioInterface, &AbstractAudioInterface::isStereoInputChanged,
30+ this, &AudioScriptingInterface::isStereoInputChanged);
31+ }
32+
33+ _localAudioInterface = audioInterface;
34+
35+ if (_localAudioInterface) {
36+ connect(_localAudioInterface, &AbstractAudioInterface::isStereoInputChanged,
37+ this, &AudioScriptingInterface::isStereoInputChanged);
38+ }
39+}
40+
2641 ScriptAudioInjector* AudioScriptingInterface::playSystemSound(SharedSoundPointer sound, const QVector3D& position) {
2742 AudioInjectorOptions options;
2843 options.position = glm::vec3(position.x(), position.y(), position.z());
@@ -60,19 +75,10 @@ ScriptAudioInjector* AudioScriptingInterface::playSound(SharedSoundPointer sound · 31 unmodified lines
6075 }
6176 }
6277
63−bool AudioScriptingInterface::setStereoInput(bool stereo) {
64− bool stereoInputChanged = false;
78+void AudioScriptingInterface::setStereoInput(bool stereo) {
6579 if (_localAudioInterface) {
66− if (QThread::currentThread() != _localAudioInterface->thread()) {
67− // TODO: This can block the main thread which is not ideal, make this function and the UI calling it async
68− BLOCKING_INVOKE_METHOD(_localAudioInterface, "setIsStereoInput", Q_RETURN_ARG(bool, stereoInputChanged),
69− Q_ARG(bool, stereo));
70− } else {
71− stereoInputChanged = _localAudioInterface->setIsStereoInput(stereo);
72− }
80+ QMetaObject::invokeMethod(_localAudioInterface, "setIsStereoInput", Q_ARG(bool, stereo));
7381 }
74−
75− return stereoInputChanged;
7682 }
7783
7884 bool AudioScriptingInterface::isStereoInput() {