diff options
author | Christian Kandeler <christian.kandeler@theqtcompany.com> | 2015-04-24 11:03:54 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@theqtcompany.com> | 2015-04-24 14:01:57 +0000 |
commit | 6a8a7f4fb25ff7259ed66de70b9b4f956dfe0e14 (patch) | |
tree | 57b17dba66a2678f40f4d65d60a18dc576fb7073 /src/lib/corelib/buildgraph/depscanner.cpp | |
parent | 04fab8951118242c5243113c3452a4c316a35ce9 (diff) |
Do not process events in custom scanners' script engines.
Otherwise we will get calls to slots in the executor
at points in time where none are expected.
Note: This means that custom scanner scripts become non-interruptible.
It is not clear if and how we can fix the relevant bug otherwise.
Putting the input artifact scanner into its own thread seems even more
problematic.
Task-number: QBS-782
Change-Id: I44edebfb2a38dc00062cdb9572991ff9352ddd9f
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Diffstat (limited to 'src/lib/corelib/buildgraph/depscanner.cpp')
-rw-r--r-- | src/lib/corelib/buildgraph/depscanner.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/lib/corelib/buildgraph/depscanner.cpp b/src/lib/corelib/buildgraph/depscanner.cpp index 6442d881f..503355db1 100644 --- a/src/lib/corelib/buildgraph/depscanner.cpp +++ b/src/lib/corelib/buildgraph/depscanner.cpp @@ -120,17 +120,23 @@ const void *PluginDependencyScanner::key() const } UserDependencyScanner::UserDependencyScanner(const ResolvedScannerConstPtr &scanner, - const Logger &logger, ScriptEngine *engine) + const Logger &logger) : m_scanner(scanner), m_logger(logger), - m_engine(engine), - m_observer(engine), + m_engine(new ScriptEngine(logger)), + m_observer(m_engine), m_product(0) { - m_global = engine->newObject(); + m_engine->setProcessEventsInterval(-1); // QBS-782 + m_global = m_engine->newObject(); setupScriptEngineForFile(m_engine, m_scanner->scanScript->fileContext, m_global); } +UserDependencyScanner::~UserDependencyScanner() +{ + delete m_engine; +} + QStringList UserDependencyScanner::collectSearchPaths(Artifact *artifact) { return evaluate(artifact, m_scanner->searchPathsScript); |