Commit 8f6de663 authored by Max-Wilhelm Bruker's avatar Max-Wilhelm Bruker
Browse files

don't call QAudioOutput constructor unless sound is enabled

parent 81d7c08f
...@@ -191,6 +191,7 @@ void SettingsCache::setSoundEnabled(int _soundEnabled) ...@@ -191,6 +191,7 @@ void SettingsCache::setSoundEnabled(int _soundEnabled)
{ {
soundEnabled = _soundEnabled; soundEnabled = _soundEnabled;
settings->setValue("sound/enabled", soundEnabled); settings->setValue("sound/enabled", soundEnabled);
emit soundEnabledChanged();
} }
void SettingsCache::setSoundPath(const QString &_soundPath) void SettingsCache::setSoundPath(const QString &_soundPath)
......
...@@ -22,6 +22,7 @@ signals: ...@@ -22,6 +22,7 @@ signals:
void horizontalHandChanged(); void horizontalHandChanged();
void invertVerticalCoordinateChanged(); void invertVerticalCoordinateChanged();
void minPlayersForMultiColumnLayoutChanged(); void minPlayersForMultiColumnLayoutChanged();
void soundEnabledChanged();
void soundPathChanged(); void soundPathChanged();
void ignoreUnregisteredUsersChanged(); void ignoreUnregisteredUsersChanged();
private: private:
......
...@@ -6,20 +6,14 @@ ...@@ -6,20 +6,14 @@
#include <QBuffer> #include <QBuffer>
SoundEngine::SoundEngine(QObject *parent) SoundEngine::SoundEngine(QObject *parent)
: QObject(parent) : QObject(parent), audio(0)
{ {
inputBuffer = new QBuffer; inputBuffer = new QBuffer(this);
QAudioFormat format;
format.setFrequency(44100);
format.setChannels(1);
format.setSampleSize(16);
format.setCodec("audio/pcm");
format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::SignedInt);
audio = new QAudioOutput(format, this);
connect(settingsCache, SIGNAL(soundPathChanged()), this, SLOT(cacheData())); connect(settingsCache, SIGNAL(soundPathChanged()), this, SLOT(cacheData()));
connect(settingsCache, SIGNAL(soundEnabledChanged()), this, SLOT(soundEnabledChanged()));
cacheData(); cacheData();
soundEnabledChanged();
} }
void SoundEngine::cacheData() void SoundEngine::cacheData()
...@@ -34,9 +28,29 @@ void SoundEngine::cacheData() ...@@ -34,9 +28,29 @@ void SoundEngine::cacheData()
} }
} }
void SoundEngine::soundEnabledChanged()
{
if (settingsCache->getSoundEnabled()) {
qDebug("SoundEngine: enabling sound");
QAudioFormat format;
format.setFrequency(44100);
format.setChannels(1);
format.setSampleSize(16);
format.setCodec("audio/pcm");
format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::SignedInt);
audio = new QAudioOutput(format, this);
} else if (audio) {
qDebug("SoundEngine: disabling sound");
audio->stop();
audio->deleteLater();
audio = 0;
}
}
void SoundEngine::playSound(const QString &fileName) void SoundEngine::playSound(const QString &fileName)
{ {
if (!settingsCache->getSoundEnabled()) if (!audio)
return; return;
audio->stop(); audio->stop();
......
...@@ -16,6 +16,7 @@ private: ...@@ -16,6 +16,7 @@ private:
QAudioOutput *audio; QAudioOutput *audio;
private slots: private slots:
void cacheData(); void cacheData();
void soundEnabledChanged();
public: public:
SoundEngine(QObject *parent = 0); SoundEngine(QObject *parent = 0);
public slots: public slots:
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment