diff --git a/openbr/core/common.h b/openbr/core/common.h index 4bb9620..5154c7c 100644 --- a/openbr/core/common.h +++ b/openbr/core/common.h @@ -102,7 +102,7 @@ void MinMax(const QList &vals, T *min, T *max) template T Min(const QList &vals) { - int min, max; + T min, max; MinMax(vals, &min, &max); return min; } @@ -110,7 +110,7 @@ T Min(const QList &vals) template T Max(const QList &vals) { - int min, max; + T min, max; MinMax(vals, &min, &max); return max; } diff --git a/openbr/plugins/independent.cpp b/openbr/plugins/independent.cpp index 138fcbc..0fe335c 100644 --- a/openbr/plugins/independent.cpp +++ b/openbr/plugins/independent.cpp @@ -173,8 +173,8 @@ class SingletonTransform : public MetaTransform Q_PROPERTY(QString description READ get_description WRITE set_description RESET reset_description STORED false) BR_PROPERTY(QString, description, "Identity") + static QMutex mutex; static QHash transforms; - static QMutex trainingMutex; static QHash trainingReferenceCounts; static QHash trainingData; @@ -182,6 +182,7 @@ class SingletonTransform : public MetaTransform void init() { + QMutexLocker locker(&mutex); if (!transforms.contains(description)) { transforms.insert(description, make(description)); trainingReferenceCounts.insert(description, 0); @@ -193,7 +194,7 @@ class SingletonTransform : public MetaTransform void train(const TemplateList &data) { - QMutexLocker locker(&trainingMutex); + QMutexLocker locker(&mutex); trainingData[description].append(data); trainingReferenceCounts[description]--; if (trainingReferenceCounts[description] > 0) return; @@ -219,8 +220,8 @@ class SingletonTransform : public MetaTransform } }; +QMutex SingletonTransform::mutex; QHash SingletonTransform::transforms; -QMutex SingletonTransform::trainingMutex; QHash SingletonTransform::trainingReferenceCounts; QHash SingletonTransform::trainingData;