diff --git a/src/backends/tolk.rs b/src/backends/tolk.rs index 18ccd13..ae877fc 100644 --- a/src/backends/tolk.rs +++ b/src/backends/tolk.rs @@ -7,11 +7,14 @@ use crate::{Backend, Error, Features}; pub struct Tolk(TolkPtr); impl Tolk { - pub fn new() -> Self { + pub fn new() -> Option { info!("Initializing Tolk backend"); let tolk = TolkPtr::new(); - tolk.try_sapi(true); - Tolk(tolk) + if tolk.detect_screen_reader().is_some() { + Some(Tolk(tolk)) + } else { + None + } } } diff --git a/src/lib.rs b/src/lib.rs index 6a9ca6f..587b20f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -93,7 +93,11 @@ impl TTS { #[cfg(windows)] Backends::Tolk => { let tts = backends::Tolk::new(); - Ok(TTS(Box::new(tts))) + if let Some(tts) = tts { + Ok(TTS(Box::new(tts))) + } else { + Err(Error::NoneError) + } } #[cfg(windows)] Backends::WinRT => { @@ -107,13 +111,10 @@ impl TTS { #[cfg(target_os = "linux")] let tts = TTS::new(Backends::SpeechDispatcher); #[cfg(windows)] - let tts = { - let tolk = tolk::Tolk::new(); - if tolk.detect_screen_reader().is_some() { - TTS::new(Backends::Tolk) - } else { - TTS::new(Backends::WinRT) - } + let tts = if let Some(tts) = TTS::new(Backends::Tolk).ok() { + Ok(tts) + } else { + TTS::new(Backends::WinRT) }; #[cfg(target_arch = "wasm32")] let tts = TTS::new(Backends::Web);