don't call QAudioOutput constructor unless sound is enabled
This commit is contained in:
parent
81d7c08f08
commit
8f6de6637f
4 changed files with 28 additions and 11 deletions
|
@ -191,6 +191,7 @@ void SettingsCache::setSoundEnabled(int _soundEnabled)
|
|||
{
|
||||
soundEnabled = _soundEnabled;
|
||||
settings->setValue("sound/enabled", soundEnabled);
|
||||
emit soundEnabledChanged();
|
||||
}
|
||||
|
||||
void SettingsCache::setSoundPath(const QString &_soundPath)
|
||||
|
|
|
@ -22,6 +22,7 @@ signals:
|
|||
void horizontalHandChanged();
|
||||
void invertVerticalCoordinateChanged();
|
||||
void minPlayersForMultiColumnLayoutChanged();
|
||||
void soundEnabledChanged();
|
||||
void soundPathChanged();
|
||||
void ignoreUnregisteredUsersChanged();
|
||||
private:
|
||||
|
|
|
@ -6,20 +6,14 @@
|
|||
#include <QBuffer>
|
||||
|
||||
SoundEngine::SoundEngine(QObject *parent)
|
||||
: QObject(parent)
|
||||
: QObject(parent), audio(0)
|
||||
{
|
||||
inputBuffer = new QBuffer;
|
||||
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);
|
||||
inputBuffer = new QBuffer(this);
|
||||
|
||||
connect(settingsCache, SIGNAL(soundPathChanged()), this, SLOT(cacheData()));
|
||||
connect(settingsCache, SIGNAL(soundEnabledChanged()), this, SLOT(soundEnabledChanged()));
|
||||
cacheData();
|
||||
soundEnabledChanged();
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
if (!settingsCache->getSoundEnabled())
|
||||
if (!audio)
|
||||
return;
|
||||
|
||||
audio->stop();
|
||||
|
|
|
@ -16,6 +16,7 @@ private:
|
|||
QAudioOutput *audio;
|
||||
private slots:
|
||||
void cacheData();
|
||||
void soundEnabledChanged();
|
||||
public:
|
||||
SoundEngine(QObject *parent = 0);
|
||||
public slots:
|
||||
|
|
Loading…
Reference in a new issue