diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2012-10-06 12:42:20 +0200 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2012-10-06 13:53:09 +0200 |
commit | 7f76bb48b352984c4de8f40509618763e39f181f (patch) | |
tree | 051d788b3dd466bbc560de3dc96d271c9f768343 | |
parent | a2dd1625bcfb1272cb711dc35896924817af3c0c (diff) | |
download | rockbox-7f76bb48b352984c4de8f40509618763e39f181f.tar.gz rockbox-7f76bb48b352984c4de8f40509618763e39f181f.zip |
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.cpp | 18 | ||||
-rw-r--r-- | rbutil/rbutilqt/configure.cpp | 16 | ||||
-rw-r--r-- | rbutil/rbutilqt/createvoicewindow.cpp | 6 | ||||
-rw-r--r-- | rbutil/rbutilqt/installtalkwindow.cpp | 6 |
4 files changed, 41 insertions, 5 deletions
diff --git a/rbutil/rbutilqt/base/talkgenerator.cpp b/rbutil/rbutilqt/base/talkgenerator.cpp index 16e1b15184..a2ab578ade 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 | |||
35 | bool warnings = false; | 35 | bool warnings = false; |
36 | 36 | ||
37 | //tts | 37 | //tts |
38 | emit logItem(tr("Starting TTS Engine"),LOGINFO); | 38 | emit logItem(tr("Starting TTS Engine"), LOGINFO); |
39 | m_tts = TTSBase::getTTS(this,RbSettings::value(RbSettings::Tts).toString()); | 39 | m_tts = TTSBase::getTTS(this, RbSettings::value(RbSettings::Tts).toString()); |
40 | if(!m_tts) | ||
41 | { | ||
42 | qDebug() << "[TalkGenerator] getting the TTS object failed!"; | ||
43 | emit logItem(tr("Init of TTS engine failed"), LOGERROR); | ||
44 | emit done(true); | ||
45 | return eERROR; | ||
46 | } | ||
40 | if(!m_tts->start(&errStr)) | 47 | if(!m_tts->start(&errStr)) |
41 | { | 48 | { |
42 | emit logItem(errStr.trimmed(),LOGERROR); | 49 | emit logItem(errStr.trimmed(),LOGERROR); |
43 | emit logItem(tr("Init of TTS engine failed"),LOGERROR); | 50 | emit logItem(tr("Init of TTS engine failed"), LOGERROR); |
44 | emit done(true); | 51 | emit done(true); |
45 | return eERROR; | 52 | return eERROR; |
46 | } | 53 | } |
@@ -278,6 +285,11 @@ void TalkGenerator::setLang(QString name) | |||
278 | 285 | ||
279 | QString engine = RbSettings::value(RbSettings::Tts).toString(); | 286 | QString engine = RbSettings::value(RbSettings::Tts).toString(); |
280 | TTSBase* tts = TTSBase::getTTS(this,RbSettings::value(RbSettings::Tts).toString()); | 287 | TTSBase* tts = TTSBase::getTTS(this,RbSettings::value(RbSettings::Tts).toString()); |
288 | if(!tts) | ||
289 | { | ||
290 | qDebug() << "[TalkGenerator] getting the TTS object failed!"; | ||
291 | return; | ||
292 | } | ||
281 | QString vendor = tts->voiceVendor(); | 293 | QString vendor = tts->voiceVendor(); |
282 | delete tts; | 294 | delete tts; |
283 | 295 | ||
diff --git a/rbutil/rbutilqt/configure.cpp b/rbutil/rbutilqt/configure.cpp index 9dee3f40c6..eef1fcf4e1 100644 --- a/rbutil/rbutilqt/configure.cpp +++ b/rbutil/rbutilqt/configure.cpp | |||
@@ -418,6 +418,13 @@ void Config::updateTtsState(int index) | |||
418 | QString ttsName = ui.comboTts->itemData(index).toString(); | 418 | QString ttsName = ui.comboTts->itemData(index).toString(); |
419 | TTSBase* tts = TTSBase::getTTS(this,ttsName); | 419 | TTSBase* tts = TTSBase::getTTS(this,ttsName); |
420 | 420 | ||
421 | if(!tts) | ||
422 | { | ||
423 | QMessageBox::critical(this, tr("TTS error"), | ||
424 | tr("The selected TTS failed to initialize. You can't use this TTS.")); | ||
425 | return; | ||
426 | } | ||
427 | |||
421 | if(tts->configOk()) | 428 | if(tts->configOk()) |
422 | { | 429 | { |
423 | ui.configTTSstatus->setText(tr("Configuration OK")); | 430 | ui.configTTSstatus->setText(tr("Configuration OK")); |
@@ -837,9 +844,14 @@ void Config::testTts() | |||
837 | QString errstr; | 844 | QString errstr; |
838 | int index = ui.comboTts->currentIndex(); | 845 | int index = ui.comboTts->currentIndex(); |
839 | TTSBase* tts; | 846 | TTSBase* tts; |
840 | |||
841 | ui.testTTS->setEnabled(false); | ||
842 | tts = TTSBase::getTTS(this,ui.comboTts->itemData(index).toString()); | 847 | tts = TTSBase::getTTS(this,ui.comboTts->itemData(index).toString()); |
848 | if(!tts) | ||
849 | { | ||
850 | QMessageBox::critical(this, tr("TTS error"), | ||
851 | tr("The selected TTS failed to initialize. You can't use this TTS.")); | ||
852 | return; | ||
853 | } | ||
854 | ui.testTTS->setEnabled(false); | ||
843 | if(!tts->configOk()) | 855 | if(!tts->configOk()) |
844 | { | 856 | { |
845 | QMessageBox::warning(this,tr("TTS configuration invalid"), | 857 | QMessageBox::warning(this,tr("TTS configuration invalid"), |
diff --git a/rbutil/rbutilqt/createvoicewindow.cpp b/rbutil/rbutilqt/createvoicewindow.cpp index 8bd4e8d693..5b6ef16699 100644 --- a/rbutil/rbutilqt/createvoicewindow.cpp +++ b/rbutil/rbutilqt/createvoicewindow.cpp | |||
@@ -93,6 +93,12 @@ void CreateVoiceWindow::updateSettings(void) | |||
93 | 93 | ||
94 | QString ttsName = RbSettings::value(RbSettings::Tts).toString(); | 94 | QString ttsName = RbSettings::value(RbSettings::Tts).toString(); |
95 | TTSBase* tts = TTSBase::getTTS(this,ttsName); | 95 | TTSBase* tts = TTSBase::getTTS(this,ttsName); |
96 | if(!tts) | ||
97 | { | ||
98 | QMessageBox::critical(this, tr("TTS error"), | ||
99 | tr("The selected TTS failed to initialize. You can't use this TTS.")); | ||
100 | return; | ||
101 | } | ||
96 | if(tts->configOk()) | 102 | if(tts->configOk()) |
97 | ui.labelTtsProfile->setText(tr("Engine: <b>%1</b>") | 103 | ui.labelTtsProfile->setText(tr("Engine: <b>%1</b>") |
98 | .arg(TTSBase::getTTSName(ttsName))); | 104 | .arg(TTSBase::getTTSName(ttsName))); |
diff --git a/rbutil/rbutilqt/installtalkwindow.cpp b/rbutil/rbutilqt/installtalkwindow.cpp index 95aad659ed..9a723261b8 100644 --- a/rbutil/rbutilqt/installtalkwindow.cpp +++ b/rbutil/rbutilqt/installtalkwindow.cpp | |||
@@ -130,6 +130,12 @@ void InstallTalkWindow::updateSettings(void) | |||
130 | QString mp = RbSettings::value(RbSettings::Mountpoint).toString(); | 130 | QString mp = RbSettings::value(RbSettings::Mountpoint).toString(); |
131 | QString ttsName = RbSettings::value(RbSettings::Tts).toString(); | 131 | QString ttsName = RbSettings::value(RbSettings::Tts).toString(); |
132 | TTSBase* tts = TTSBase::getTTS(this,ttsName); | 132 | TTSBase* tts = TTSBase::getTTS(this,ttsName); |
133 | if(!tts) | ||
134 | { | ||
135 | QMessageBox::critical(this, tr("TTS error"), | ||
136 | tr("The selected TTS failed to initialize. You can't use this TTS.")); | ||
137 | return; | ||
138 | } | ||
133 | if(tts->configOk()) | 139 | if(tts->configOk()) |
134 | ui.labelTtsProfile->setText(QString("<b>%1</b>") | 140 | ui.labelTtsProfile->setText(QString("<b>%1</b>") |
135 | .arg(TTSBase::getTTSName(ttsName))); | 141 | .arg(TTSBase::getTTSName(ttsName))); |