From 4a3f2e1d097917402ef6690f74c4caee466efbb6 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Sun, 28 May 2017 19:25:37 -0400 Subject: [PATCH] use subclass for interface's Audio interface --- interface/src/Application.cpp | 3 +- interface/src/scripting/Audio.cpp | 14 +++++++ interface/src/scripting/Audio.h | 37 +++++++++++++++++++ .../src/AudioScriptingInterface.cpp | 6 --- .../src/AudioScriptingInterface.h | 5 +-- 5 files changed, 55 insertions(+), 10 deletions(-) create mode 100644 interface/src/scripting/Audio.cpp create mode 100644 interface/src/scripting/Audio.h diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 71e7ca205d..3bd97a48a4 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -147,6 +147,7 @@ #include "networking/HFWebEngineProfile.h" #include "networking/HFTabletWebEngineProfile.h" #include "networking/FileTypeProfile.h" +#include "scripting/Audio.h" #include "scripting/TestScriptingInterface.h" #include "scripting/AccountScriptingInterface.h" #include "scripting/AssetMappingsScriptingInterface.h" @@ -720,7 +721,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo } }); - auto audioScriptingInterface = DependencyManager::set(); + auto audioScriptingInterface = DependencyManager::set(); connect(audioThread, &QThread::started, audioIO.data(), &AudioClient::start); connect(audioIO.data(), &AudioClient::destroyed, audioThread, &QThread::quit); connect(audioThread, &QThread::finished, audioThread, &QThread::deleteLater); diff --git a/interface/src/scripting/Audio.cpp b/interface/src/scripting/Audio.cpp new file mode 100644 index 0000000000..10136ece0e --- /dev/null +++ b/interface/src/scripting/Audio.cpp @@ -0,0 +1,14 @@ +// +// Audio.cpp +// interface/src/scripting +// +// Created by Zach Pomerantz on 28/5/2017. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "Audio.h" + +using namespace scripting; \ No newline at end of file diff --git a/interface/src/scripting/Audio.h b/interface/src/scripting/Audio.h new file mode 100644 index 0000000000..decf345833 --- /dev/null +++ b/interface/src/scripting/Audio.h @@ -0,0 +1,37 @@ +// +// Audio.h +// interface/src/scripting +// +// Created by Zach Pomerantz on 28/5/2017. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_scripting_Audio_h +#define hifi_scripting_Audio_h + +#include "AudioScriptingInterface.h" + +namespace scripting { + +class Audio : public AudioScriptingInterface { + Q_OBJECT + SINGLETON_DEPENDENCY + + // TODO: Q_PROPERTY(bool mute) + // TODO: Q_PROPERTY(bool noiseReduction) + // TODO: Q_PROPERTY(bool showMicLevel) + // TODO: Q_PROPERTY(? devices) + +public: + virtual ~Audio() {} + +protected: + Audio() {} +}; + +}; + +#endif // hifi_scripting_Audio_h diff --git a/libraries/script-engine/src/AudioScriptingInterface.cpp b/libraries/script-engine/src/AudioScriptingInterface.cpp index 8452494d95..b5dd60d03b 100644 --- a/libraries/script-engine/src/AudioScriptingInterface.cpp +++ b/libraries/script-engine/src/AudioScriptingInterface.cpp @@ -19,12 +19,6 @@ void registerAudioMetaTypes(QScriptEngine* engine) { qScriptRegisterMetaType(engine, soundSharedPointerToScriptValue, soundSharedPointerFromScriptValue); } -AudioScriptingInterface::AudioScriptingInterface() : - _localAudioInterface(NULL) -{ - -} - ScriptAudioInjector* AudioScriptingInterface::playSound(SharedSoundPointer sound, const AudioInjectorOptions& injectorOptions) { if (QThread::currentThread() != thread()) { ScriptAudioInjector* injector = NULL; diff --git a/libraries/script-engine/src/AudioScriptingInterface.h b/libraries/script-engine/src/AudioScriptingInterface.h index 5ec8ce4b12..9ee2af7738 100644 --- a/libraries/script-engine/src/AudioScriptingInterface.h +++ b/libraries/script-engine/src/AudioScriptingInterface.h @@ -28,6 +28,7 @@ public: void setLocalAudioInterface(AbstractAudioInterface* audioInterface) { _localAudioInterface = audioInterface; } protected: + AudioScriptingInterface() {} // this method is protected to stop C++ callers from calling, but invokable from script Q_INVOKABLE ScriptAudioInjector* playSound(SharedSoundPointer sound, const AudioInjectorOptions& injectorOptions = AudioInjectorOptions()); @@ -44,9 +45,7 @@ signals: void inputReceived(const QByteArray& inputSamples); /// a frame of mic input audio has been received and processed private: - AudioScriptingInterface(); - - AbstractAudioInterface* _localAudioInterface; + AbstractAudioInterface* _localAudioInterface { nullptr }; }; void registerAudioMetaTypes(QScriptEngine* engine);