From 2ab6416a34a223f1f40589bbe27cf0e4cf814dca Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sat, 12 Jan 2013 23:42:16 +0200 Subject: [PATCH] SynchronousProcess: Show "process not responding" dialog once Change-Id: I81834452d21f3f996103fb93b3b645f4f87d6251 Reviewed-by: Daniel Teske Reviewed-by: Friedemann Kleint --- src/libs/utils/synchronousprocess.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libs/utils/synchronousprocess.cpp b/src/libs/utils/synchronousprocess.cpp index c265ee3964b..f0637404814 100644 --- a/src/libs/utils/synchronousprocess.cpp +++ b/src/libs/utils/synchronousprocess.cpp @@ -208,6 +208,7 @@ struct SynchronousProcessPrivate { int m_maxHangTimerCount; bool m_startFailure; bool m_timeOutMessageBoxEnabled; + bool m_waitingForUser; QString m_binary; ChannelBuffer m_stdOut; @@ -219,7 +220,8 @@ SynchronousProcessPrivate::SynchronousProcessPrivate() : m_hangTimerCount(0), m_maxHangTimerCount(defaultMaxHangTimerCount), m_startFailure(false), - m_timeOutMessageBoxEnabled(false) + m_timeOutMessageBoxEnabled(false), + m_waitingForUser(false) { } @@ -412,10 +414,12 @@ static inline bool askToKill(const QString &binary = QString()) void SynchronousProcess::slotTimeout() { - if (++d->m_hangTimerCount > d->m_maxHangTimerCount) { + if (!d->m_waitingForUser && (++d->m_hangTimerCount > d->m_maxHangTimerCount)) { if (debug) qDebug() << Q_FUNC_INFO << "HANG detected, killing"; + d->m_waitingForUser = true; const bool terminate = !d->m_timeOutMessageBoxEnabled || askToKill(d->m_binary); + d->m_waitingForUser = false; if (terminate) { SynchronousProcess::stopProcess(d->m_process); d->m_result.result = SynchronousProcessResponse::Hang;