aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/buildgraph/depscanner.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@theqtcompany.com>2015-04-24 11:03:54 +0200
committerChristian Kandeler <christian.kandeler@theqtcompany.com>2015-04-24 14:01:57 +0000
commit6a8a7f4fb25ff7259ed66de70b9b4f956dfe0e14 (patch)
tree57b17dba66a2678f40f4d65d60a18dc576fb7073 /src/lib/corelib/buildgraph/depscanner.cpp
parent04fab8951118242c5243113c3452a4c316a35ce9 (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.cpp14
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);