wizards/targetsetuppage.ui
RESOURCES += qt4projectmanager.qrc \
wizards/wizards.qrc
-DEFINES += PROPARSER_THREAD_SAFE
+DEFINES += PROPARSER_THREAD_SAFE PROEVALUATOR_THREAD_SAFE
include(../../shared/proparser/proparser.pri)
include(qt-s60/qt-s60.pri)
include(qt-maemo/qt-maemo.pri)
#endif
cache = 0;
+
+#ifdef PROEVALUATOR_THREAD_SAFE
+ base_inProgress = false;
+#endif
}
ProFileOption::~ProFileOption()
if (m_parsePreAndPostFiles) {
+#ifdef PROEVALUATOR_THREAD_SAFE
+ {
+ QMutexLocker locker(&m_option->mutex);
+ if (m_option->base_inProgress) {
+ QThreadPool::globalInstance()->releaseThread();
+ m_option->cond.wait(&m_option->mutex);
+ QThreadPool::globalInstance()->reserveThread();
+ } else
+#endif
if (m_option->base_valuemap.isEmpty()) {
+#ifdef PROEVALUATOR_THREAD_SAFE
+ m_option->base_inProgress = true;
+ locker.unlock();
+#endif
+
// ### init QMAKE_QMAKE, QMAKE_SH
// ### init QMAKE_EXT_{C,H,CPP,OBJ}
// ### init TEMPLATE_PREFIX
evaluateFeatureFile(QLatin1String("default_pre.prf"),
&m_option->base_valuemap, &m_option->base_functions);
+
+#ifdef PROEVALUATOR_THREAD_SAFE
+ locker.relock();
+ m_option->base_inProgress = false;
+ m_option->cond.wakeAll();
+#endif
}
+#ifdef PROEVALUATOR_THREAD_SAFE
+ }
+#endif
m_valuemapStack.top() = m_option->base_valuemap;