diff options
| author | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-07-23 09:25:42 +0200 |
|---|---|---|
| committer | Christian Kandeler <christian.kandeler@digia.com> | 2013-07-23 12:32:10 +0200 |
| commit | 617d1f73cf69b96e467e31bcc8a864b9184ebdae (patch) | |
| tree | 02ae6e076a6682a22ba2587f0f904c5477470051 | |
| parent | 5b666c9e530ac977c879ee4ea0d59046440b3bd9 (diff) | |
| download | qbs-617d1f73cf69b96e467e31bcc8a864b9184ebdae.tar.gz | |
remove superfluous engine mapping
JsCommandExecutorThreadObject is running in exactly one thread now.
There's no need to save engines per thread anymore.
Change-Id: I9328cf840789131397e7713efdc105f0b56aeee8
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
| -rw-r--r-- | src/lib/buildgraph/jscommandexecutor.cpp | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/src/lib/buildgraph/jscommandexecutor.cpp b/src/lib/buildgraph/jscommandexecutor.cpp index 7358d4a59..45815a104 100644 --- a/src/lib/buildgraph/jscommandexecutor.cpp +++ b/src/lib/buildgraph/jscommandexecutor.cpp @@ -40,11 +40,7 @@ #include <tools/codelocation.h> #include <tools/error.h> -#include <QDir> #include <QEventLoop> -#include <QHash> -#include <QMutex> -#include <QMutexLocker> #include <QThread> #include <QTimer> @@ -64,6 +60,7 @@ class JsCommandExecutorThreadObject : public QObject public: JsCommandExecutorThreadObject(const Logger &logger) : m_logger(logger) + , m_scriptEngine(0) { } @@ -80,7 +77,7 @@ public slots: { m_result.success = true; m_result.errorMessage.clear(); - ScriptEngine * const scriptEngine = lookupEngine(); + ScriptEngine * const scriptEngine = provideScriptEngine(); QString trafoPtrStr = QString::number((qulonglong)transformer); if (scriptEngine->globalObject().property("_qbs_transformer_ptr").toString() != trafoPtrStr) { scriptEngine->globalObject().setProperty("_qbs_transformer_ptr", scriptEngine->toScriptValue(trafoPtrStr)); @@ -117,29 +114,18 @@ public slots: } private: - ScriptEngine *lookupEngine() + ScriptEngine *provideScriptEngine() { - QThread * const currentThread = QThread::currentThread(); - QMutexLocker locker(&m_cacheMutex); - ScriptEngine * scriptEngine = m_enginesPerThread.value(currentThread); - if (!scriptEngine) { - scriptEngine = new ScriptEngine(m_logger); - m_enginesPerThread.insert(currentThread, scriptEngine); - } else { - scriptEngine->setLogger(m_logger); - } - return scriptEngine; + if (!m_scriptEngine) + m_scriptEngine = new ScriptEngine(m_logger, this); + return m_scriptEngine; } - static QHash<QThread *, ScriptEngine *> m_enginesPerThread; - static QMutex m_cacheMutex; Logger m_logger; + ScriptEngine *m_scriptEngine; JavaScriptCommandResult m_result; }; -QHash<QThread *, ScriptEngine *> JsCommandExecutorThreadObject::m_enginesPerThread; -QMutex JsCommandExecutorThreadObject::m_cacheMutex; - JsCommandExecutor::JsCommandExecutor(const Logger &logger, QObject *parent) : AbstractCommandExecutor(logger, parent) |
