summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2012-10-06 12:42:20 +0200
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2012-10-06 13:53:09 +0200
commit7f76bb48b352984c4de8f40509618763e39f181f (patch)
tree051d788b3dd466bbc560de3dc96d271c9f768343
parenta2dd1625bcfb1272cb711dc35896924817af3c0c (diff)
downloadrockbox-7f76bb48b352984c4de8f40509618763e39f181f.zip
rockbox-7f76bb48b352984c4de8f40509618763e39f181f.tar.gz
rockbox-7f76bb48b352984c4de8f40509618763e39f181f.tar.bz2
rockbox-7f76bb48b352984c4de8f40509618763e39f181f.tar.xz
Don't assume success for TTS object creation.
While the current implementation of getTTS() will always return an object this might change later. Check the returned object before using it to be on the safe side. Change-Id: Ic949cae7cfbe6f3086dee6aab741b0acafe14640
-rw-r--r--rbutil/rbutilqt/base/talkgenerator.cpp18
-rw-r--r--rbutil/rbutilqt/configure.cpp16
-rw-r--r--rbutil/rbutilqt/createvoicewindow.cpp6
-rw-r--r--rbutil/rbutilqt/installtalkwindow.cpp6
4 files changed, 41 insertions, 5 deletions
diff --git a/rbutil/rbutilqt/base/talkgenerator.cpp b/rbutil/rbutilqt/base/talkgenerator.cpp
index 16e1b15..a2ab578 100644
--- a/rbutil/rbutilqt/base/talkgenerator.cpp
+++ b/rbutil/rbutilqt/base/talkgenerator.cpp
@@ -35,12 +35,19 @@ TalkGenerator::Status TalkGenerator::process(QList<TalkEntry>* list,int wavtrimt
bool warnings = false;
//tts
- emit logItem(tr("Starting TTS Engine"),LOGINFO);
- m_tts = TTSBase::getTTS(this,RbSettings::value(RbSettings::Tts).toString());
+ emit logItem(tr("Starting TTS Engine"), LOGINFO);
+ m_tts = TTSBase::getTTS(this, RbSettings::value(RbSettings::Tts).toString());
+ if(!m_tts)
+ {
+ qDebug() << "[TalkGenerator] getting the TTS object failed!";
+ emit logItem(tr("Init of TTS engine failed"), LOGERROR);
+ emit done(true);
+ return eERROR;
+ }
if(!m_tts->start(&errStr))
{
emit logItem(errStr.trimmed(),LOGERROR);
- emit logItem(tr("Init of TTS engine failed"),LOGERROR);
+ emit logItem(tr("Init of TTS engine failed"), LOGERROR);
emit done(true);
return eERROR;
}
@@ -278,6 +285,11 @@ void TalkGenerator::setLang(QString name)
QString engine = RbSettings::value(RbSettings::Tts).toString();
TTSBase* tts = TTSBase::getTTS(this,RbSettings::value(RbSettings::Tts).toString());
+ if(!tts)
+ {
+ qDebug() << "[TalkGenerator] getting the TTS object failed!";
+ return;
+ }
QString vendor = tts->voiceVendor();
delete tts;
diff --git a/rbutil/rbutilqt/configure.cpp b/rbutil/rbutilqt/configure.cpp
index 9dee3f4..eef1fcf 100644
--- a/rbutil/rbutilqt/configure.cpp
+++ b/rbutil/rbutilqt/configure.cpp
@@ -418,6 +418,13 @@ void Config::updateTtsState(int index)
QString ttsName = ui.comboTts->itemData(index).toString();
TTSBase* tts = TTSBase::getTTS(this,ttsName);
+ if(!tts)
+ {
+ QMessageBox::critical(this, tr("TTS error"),
+ tr("The selected TTS failed to initialize. You can't use this TTS."));
+ return;
+ }
+
if(tts->configOk())
{
ui.configTTSstatus->setText(tr("Configuration OK"));
@@ -837,9 +844,14 @@ void Config::testTts()
QString errstr;
int index = ui.comboTts->currentIndex();
TTSBase* tts;
-
- ui.testTTS->setEnabled(false);
tts = TTSBase::getTTS(this,ui.comboTts->itemData(index).toString());
+ if(!tts)
+ {
+ QMessageBox::critical(this, tr("TTS error"),
+ tr("The selected TTS failed to initialize. You can't use this TTS."));
+ return;
+ }
+ ui.testTTS->setEnabled(false);
if(!tts->configOk())
{
QMessageBox::warning(this,tr("TTS configuration invalid"),
diff --git a/rbutil/rbutilqt/createvoicewindow.cpp b/rbutil/rbutilqt/createvoicewindow.cpp
index 8bd4e8d..5b6ef16 100644
--- a/rbutil/rbutilqt/createvoicewindow.cpp
+++ b/rbutil/rbutilqt/createvoicewindow.cpp
@@ -93,6 +93,12 @@ void CreateVoiceWindow::updateSettings(void)
QString ttsName = RbSettings::value(RbSettings::Tts).toString();
TTSBase* tts = TTSBase::getTTS(this,ttsName);
+ if(!tts)
+ {
+ QMessageBox::critical(this, tr("TTS error"),
+ tr("The selected TTS failed to initialize. You can't use this TTS."));
+ return;
+ }
if(tts->configOk())
ui.labelTtsProfile->setText(tr("Engine: <b>%1</b>")
.arg(TTSBase::getTTSName(ttsName)));
diff --git a/rbutil/rbutilqt/installtalkwindow.cpp b/rbutil/rbutilqt/installtalkwindow.cpp
index 95aad65..9a72326 100644
--- a/rbutil/rbutilqt/installtalkwindow.cpp
+++ b/rbutil/rbutilqt/installtalkwindow.cpp
@@ -130,6 +130,12 @@ void InstallTalkWindow::updateSettings(void)
QString mp = RbSettings::value(RbSettings::Mountpoint).toString();
QString ttsName = RbSettings::value(RbSettings::Tts).toString();
TTSBase* tts = TTSBase::getTTS(this,ttsName);
+ if(!tts)
+ {
+ QMessageBox::critical(this, tr("TTS error"),
+ tr("The selected TTS failed to initialize. You can't use this TTS."));
+ return;
+ }
if(tts->configOk())
ui.labelTtsProfile->setText(QString("<b>%1</b>")
.arg(TTSBase::getTTSName(ttsName)));