static tts_config_s* g_config_info = NULL;
+static pthread_mutex_t g_config_info_mutex = PTHREAD_MUTEX_INITIALIZER;
+
int tts_parser_get_engine_info(const char* path, tts_engine_info_s** engine_info)
{
if (NULL == path || NULL == engine_info) {
xmlFreeDoc(g_config_doc);
g_config_doc = NULL;
}
+ pthread_mutex_lock(&g_config_info_mutex);
if (NULL != g_config_info) {
SLOG(LOG_ERROR, TAG_TTSCONFIG, "[DEBUG] Free config_info(%p)", g_config_info);
free(g_config_info);
g_config_info = NULL;
}
+ pthread_mutex_unlock(&g_config_info_mutex);
xmlCleanupParser();
-
return 0;
}
SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] config_info is NULL");
return -1;
}
+ pthread_mutex_lock(&g_config_info_mutex);
if (NULL == g_config_info) {
SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] g_config_info is NULL");
return -1;
}
memcpy(g_config_info, config_info, sizeof(tts_config_s));
+ pthread_mutex_unlock(&g_config_info_mutex);
return 0;
}
SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] config_info is NULL");
return -1;
}
+ pthread_mutex_lock(&g_config_info_mutex);
if (NULL == g_config_info) {
SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] g_config_info is NULL");
return -1;
}
memcpy(config_info, g_config_info, sizeof(tts_config_s));
+ pthread_mutex_unlock(&g_config_info_mutex);
return 0;
}