diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp index f123489..7955c85 100644 --- a/src/plugins/coreplugin/dialogs/settingsdialog.cpp +++ b/src/plugins/coreplugin/dialogs/settingsdialog.cpp @@ -57,6 +57,7 @@ #include #include #include +#include static const char categoryKeyC[] = "General/LastPreferenceCategory"; static const char pageKeyC[] = "General/LastPreferencePage"; @@ -399,6 +400,7 @@ void SettingsDialog::createGui() SettingsDialog::~SettingsDialog() { + qDebug() << Q_FUNC_INFO; } void SettingsDialog::showCategory(int index) @@ -585,6 +587,7 @@ bool SettingsDialog::execDialog() m_instance = 0; // make sure that the current "single" instance is deleted // we can't delete right away, since we still access the m_applied member + qDebug() << Q_FUNC_INFO << " deleteLater"; deleteLater(); } else { // exec dialog is called while the instance is already running @@ -595,6 +598,7 @@ bool SettingsDialog::execDialog() // a break point it will complain about missing helper, and offer the // option to open the settings dialog. // Keep the UI running by creating another event loop. + qDebug() << Q_FUNC_INFO << " add loop"; QEventLoop *loop = new QEventLoop(this); m_eventLoops.append(loop); loop->exec(); diff --git a/src/shared/proparser/qmakebuiltins.cpp b/src/shared/proparser/qmakebuiltins.cpp index 90f9b25..dc08ff9 100644 --- a/src/shared/proparser/qmakebuiltins.cpp +++ b/src/shared/proparser/qmakebuiltins.cpp @@ -56,6 +56,7 @@ #endif #include #include +#include #ifdef Q_OS_WIN32 #define QT_POPEN _popen @@ -331,6 +332,11 @@ void QMakeEvaluator::runProcess(QProcess *proc, const QString &command) const QByteArray QMakeEvaluator::getCommandOutput(const QString &args) const { + static QHash m_cmd_cache; + QString key = currentDirectory() + args; + if (m_cmd_cache.contains(key)) + return m_cmd_cache.value(key); + qDebug() << currentDirectory() << " " << args; #ifndef QT_BOOTSTRAPPED QProcess proc; runProcess(&proc, args); @@ -345,7 +351,9 @@ QByteArray QMakeEvaluator::getCommandOutput(const QString &args) const m_handler->message(QMakeHandler::EvalError, QString::fromLocal8Bit(errout)); } # endif - return proc.readAllStandardOutput(); + QByteArray res = proc.readAllStandardOutput(); + m_cmd_cache.insert(key, res); + return res; #else QByteArray out; if (FILE *proc = QT_POPEN(QString(QLatin1String("cd ") @@ -360,6 +368,8 @@ QByteArray QMakeEvaluator::getCommandOutput(const QString &args) const } QT_PCLOSE(proc); } + m_cmd_cache.insert(key, out); + qDebug() << "inserted, " << m_cmd_cache.contains(key); return out; #endif }