Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save iRi-E/961258 to your computer and use it in GitHub Desktop.
Save iRi-E/961258 to your computer and use it in GitHub Desktop.
diff --git a/QMA/plugins/QMAOpenJTalkPlugin/QMAOpenJTalkModel.h b/QMA/plugins/QMAOpenJTalkPlugin/QMAOpenJTalkModel.h
index ac7b76f..3c39998 100644
--- a/QMA/plugins/QMAOpenJTalkPlugin/QMAOpenJTalkModel.h
+++ b/QMA/plugins/QMAOpenJTalkPlugin/QMAOpenJTalkModel.h
@@ -37,6 +37,7 @@
#ifndef QMAOPENJTALKMODEL_H
#define QMAOPENJTALKMODEL_H
+#include <QtCore/QMutex>
#include <QtCore/QHash>
#include <QtCore/QIODevice>
#include <QtCore/QList>
@@ -81,6 +82,7 @@ public:
const QString getPhonemeSequence();
QByteArray finalize(bool withHeader);
+ QMutex m_mutex;
Mecab m_mecab;
NJD m_njd;
JPCommon m_jpcommon;
diff --git a/QMA/plugins/QMAOpenJTalkPlugin/QMAOpenJTalkPlugin.cc b/QMA/plugins/QMAOpenJTalkPlugin/QMAOpenJTalkPlugin.cc
index 51b389b..8568eed 100644
--- a/QMA/plugins/QMAOpenJTalkPlugin/QMAOpenJTalkPlugin.cc
+++ b/QMA/plugins/QMAOpenJTalkPlugin/QMAOpenJTalkPlugin.cc
@@ -105,6 +105,7 @@ void QMAOpenJTalkPlugin::receiveEvent(const QString &type, const QList<QVariant>
void QMAOpenJTalkPlugin::run(const QString &name, const QString &style, const QString &text)
{
QMAOpenJTalkModel *model;
+ m_mutex.lock();
if (m_models.contains(name)) {
model = m_models[name];
}
@@ -114,10 +115,14 @@ void QMAOpenJTalkPlugin::run(const QString &name, const QString &style, const QS
model->loadDictionary(m_dir);
m_models[name] = model;
}
+ m_mutex.unlock();
+
+ model->m_mutex.lock();
model->setStyle(style);
model->setText(text);
QString sequence = model->getPhonemeSequence();
QByteArray bytes = model->finalize(false);
+ model->m_mutex.unlock();
QList<QVariant> arguments;
arguments << name;
diff --git a/QMA/plugins/QMAOpenJTalkPlugin/QMAOpenJTalkPlugin.h b/QMA/plugins/QMAOpenJTalkPlugin/QMAOpenJTalkPlugin.h
index 9ecd945..4042bd3 100644
--- a/QMA/plugins/QMAOpenJTalkPlugin/QMAOpenJTalkPlugin.h
+++ b/QMA/plugins/QMAOpenJTalkPlugin/QMAOpenJTalkPlugin.h
@@ -39,6 +39,7 @@
#ifndef QMAOPENJTALKPLUGIN_H
#define QMAOPENJTALKPLUGIN_H
+#include <QtCore/QMutex>
#include <QtCore/QByteArray>
#include <QtCore/QFutureWatcher>
#include <QtCore/QIODevice>
@@ -83,6 +84,7 @@ private:
QString m_base;
QString m_dir;
QString m_config;
+ QMutex m_mutex;
Q_DISABLE_COPY(QMAOpenJTalkPlugin)
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment