diff --git a/src/audio/audio.cpp b/src/audio/audio.cpp index 639fac1ef..8f1520f00 100644 --- a/src/audio/audio.cpp +++ b/src/audio/audio.cpp @@ -56,8 +56,6 @@ #include "audiofilterer.h" #endif -Audio* Audio::instance{nullptr}; - /** @class AudioPlayer @@ -267,16 +265,12 @@ void AudioMeterListener::doListen() } /** -Returns the singleton's instance. Will construct on first call. +Returns the singleton instance. */ Audio& Audio::getInstance() { - if (!instance) - { - instance = new Audio(); - instance->startAudioThread(); - } - return *instance; + static Audio instance; + return instance; } AudioMeterListener* Audio::createAudioMeterListener() const @@ -289,18 +283,6 @@ AudioMeterListener* Audio::createAudioMeterListener() const Audio::Audio() : d(new AudioPrivate) -{ -} - -Audio::~Audio() -{ - delete d; -} - -/** -Start the audio thread for capture and playback. -*/ -void Audio::startAudioThread() { moveToThread(d->audioThread); @@ -308,7 +290,11 @@ void Audio::startAudioThread() d->audioThread->start(); else qWarning("Audio thread already started -> ignored."); +} +Audio::~Audio() +{ + delete d; } /** @@ -541,7 +527,7 @@ The first and last argument are ignored, but allow direct compatibility with tox void Audio::playGroupAudioQueued(void*,int group, int peer, const int16_t* data, unsigned samples, uint8_t channels, unsigned sample_rate, void* core) { - QMetaObject::invokeMethod(instance, "playGroupAudio", Qt::BlockingQueuedConnection, + QMetaObject::invokeMethod(&Audio::getInstance(), "playGroupAudio", Qt::BlockingQueuedConnection, Q_ARG(int,group), Q_ARG(int,peer), Q_ARG(const int16_t*,data), Q_ARG(unsigned,samples), Q_ARG(uint8_t,channels), Q_ARG(unsigned,sample_rate)); emit static_cast(core)->groupPeerAudioPlaying(group, peer); diff --git a/src/audio/audio.h b/src/audio/audio.h index 777c30cb6..7436ff55e 100644 --- a/src/audio/audio.h +++ b/src/audio/audio.h @@ -50,8 +50,6 @@ public: static Audio& getInstance(); public: - void startAudioThread(); - AudioMeterListener* createAudioMeterListener() const; qreal outputVolume(); @@ -100,9 +98,6 @@ private: Audio(); ~Audio(); -private: - static Audio* instance; - private: AudioPrivate* d; };