Update the libspeechd_loader
authorCheng Zhao <zcbenz@gmail.com>
Tue, 8 Dec 2015 02:26:32 +0000 (10:26 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Tue, 8 Dec 2015 02:26:32 +0000 (10:26 +0800)
chromium_src/library_loaders/libspeechd.h
chromium_src/library_loaders/libspeechd_loader.cc

index 0d62f2c..f7b2762 100644 (file)
@@ -33,6 +33,7 @@ class LibSpeechdLoader {
   decltype(&::spd_set_synthesis_voice) spd_set_synthesis_voice;
   decltype(&::spd_list_modules) spd_list_modules;
   decltype(&::spd_set_output_module) spd_set_output_module;
+  decltype(&::spd_set_language) spd_set_language;
 
 
  private:
index 6066610..f09ea3a 100644 (file)
@@ -201,6 +201,19 @@ bool LibSpeechdLoader::Load(const std::string& library_name) {
     return false;
   }
 
+#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBSPEECHD_H_DLOPEN)
+  spd_set_language =
+      reinterpret_cast<decltype(this->spd_set_language)>(
+          dlsym(library_, "spd_set_language"));
+#endif
+#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBSPEECHD_H_DT_NEEDED)
+  spd_set_language = &::spd_set_language;
+#endif
+  if (!spd_set_language) {
+    CleanUp(true);
+    return false;
+  }
+
 
   loaded_ = true;
   return true;
@@ -227,5 +240,6 @@ void LibSpeechdLoader::CleanUp(bool unload) {
   spd_set_synthesis_voice = NULL;
   spd_list_modules = NULL;
   spd_set_output_module = NULL;
+  spd_set_language = NULL;
 
 }