diff transform/TransformFactory.cpp @ 1865:7b6e18380e8f startup-timing

Make it possible to check whether the transforms have been populated yet
author Chris Cannam
date Wed, 03 Jun 2020 13:57:50 +0100
parents 6f626cfdba51
children 652c5360e682
line wrap: on
line diff
--- a/transform/TransformFactory.cpp	Wed Jun 03 13:57:37 2020 +0100
+++ b/transform/TransformFactory.cpp	Wed Jun 03 13:57:50 2020 +0100
@@ -102,7 +102,9 @@
 TransformFactory::UninstalledTransformsPopulateThread::run()
 {
     m_factory->m_populatingSlowly = true;
-    sleep(1);
+    while (!m_factory->havePopulated()) {
+        sleep(1);
+    }
     m_factory->populateUninstalledTransforms();
 }
 
@@ -324,6 +326,13 @@
     return tr("Other");
 }
 
+bool
+TransformFactory::havePopulated()
+{
+    MutexLocker locker(&m_transformsMutex, "TransformFactory::havePopulated");
+    return m_transformsPopulated;
+}
+
 void
 TransformFactory::populateTransforms()
 {
@@ -395,6 +404,12 @@
     }            
 
     m_transformsPopulated = true;
+
+#ifdef DEBUG_TRANSFORM_FACTORY
+    SVCERR << "populateTransforms exiting" << endl;
+#endif
+
+    emit transformsPopulated();
 }
 
 void
@@ -743,6 +758,8 @@
 #ifdef DEBUG_TRANSFORM_FACTORY
     SVCERR << "populateUninstalledTransforms exiting" << endl;
 #endif
+
+    emit uninstalledTransformsPopulated();
 }
 
 Transform