Mercurial > hg > svcore
diff transform/ModelTransformerFactory.cpp @ 1713:978c143c767f
Merge from branch single-point
author | Chris Cannam |
---|---|
date | Fri, 17 May 2019 10:02:43 +0100 |
parents | b17fb3a4560c |
children | 8efce64dd85e |
line wrap: on
line diff
--- a/transform/ModelTransformerFactory.cpp Thu May 16 12:54:58 2019 +0100 +++ b/transform/ModelTransformerFactory.cpp Fri May 17 10:02:43 2019 +0100 @@ -34,6 +34,7 @@ #include <set> #include <QRegExp> +#include <QMutexLocker> using std::vector; @@ -59,6 +60,8 @@ sv_frame_t duration, UserConfigurator *configurator) { + QMutexLocker locker(&m_mutex); + ModelTransformer::Input input(nullptr); if (candidateInputModels.empty()) return input; @@ -213,6 +216,8 @@ { SVDEBUG << "ModelTransformerFactory::transformMultiple: Constructing transformer with input model " << input.getModel() << endl; + QMutexLocker locker(&m_mutex); + ModelTransformer *t = createTransformer(transforms, input); if (!t) return vector<Model *>(); @@ -255,6 +260,8 @@ void ModelTransformerFactory::transformerFinished() { + QMutexLocker locker(&m_mutex); + QObject *s = sender(); ModelTransformer *transformer = dynamic_cast<ModelTransformer *>(s); @@ -299,17 +306,21 @@ { TransformerSet affected; - for (TransformerSet::iterator i = m_runningTransformers.begin(); - i != m_runningTransformers.end(); ++i) { + { + QMutexLocker locker(&m_mutex); + + for (TransformerSet::iterator i = m_runningTransformers.begin(); + i != m_runningTransformers.end(); ++i) { - ModelTransformer *t = *i; + ModelTransformer *t = *i; - if (t->getInputModel() == m) { - affected.insert(t); - } else { - vector<Model *> mm = t->getOutputModels(); - for (int i = 0; i < (int)mm.size(); ++i) { - if (mm[i] == m) affected.insert(t); + if (t->getInputModel() == m) { + affected.insert(t); + } else { + vector<Model *> mm = t->getOutputModels(); + for (int i = 0; i < (int)mm.size(); ++i) { + if (mm[i] == m) affected.insert(t); + } } } } @@ -327,3 +338,10 @@ } } +bool +ModelTransformerFactory::haveRunningTransformers() const +{ + QMutexLocker locker(&m_mutex); + + return (!m_runningTransformers.empty()); +}