diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2010-03-01 10:06:05 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2010-03-01 10:06:32 +0100 |
commit | a1fed931c45c81566fd3d806abcb39b7c7bffabd (patch) | |
tree | 7d163fbe9545b3fb2a3cc95e822e9e5fbaafa802 /src/plugins/perforce/perforcechecker.cpp | |
parent | 1f940786fbd1e99441b91e071c242858e7439da2 (diff) |
VCS: Fix time-out handling for synchronous processes.
Introduce static utilities to Utils::SynchronousProcess
for synchronous processes that mimicks the handling
of Utils::SynchronousProcess (apply timeout after no
more data are available on stdout/stderr as opposed
to waitForFinished()).
Task-number: QTCREATORBUG-777
Diffstat (limited to 'src/plugins/perforce/perforcechecker.cpp')
-rw-r--r-- | src/plugins/perforce/perforcechecker.cpp | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/src/plugins/perforce/perforcechecker.cpp b/src/plugins/perforce/perforcechecker.cpp index 9a80170faf4..f42407bc739 100644 --- a/src/plugins/perforce/perforcechecker.cpp +++ b/src/plugins/perforce/perforcechecker.cpp @@ -30,6 +30,7 @@ #include "perforcechecker.h" #include <utils/qtcassert.h> +#include <utils/synchronousprocess.h> #include <QtCore/QRegExp> #include <QtCore/QTimer> @@ -101,23 +102,12 @@ void PerforceChecker::start(const QString &binary, } } -bool PerforceChecker::ensureProcessStopped(QProcess &p) -{ - if (p.state() != QProcess::Running) - return true; - p.terminate(); - if (p.waitForFinished(300)) - return true; - p.kill(); - return p.waitForFinished(300); -} - void PerforceChecker::slotTimeOut() { if (!isRunning()) return; m_timedOut = true; - ensureProcessStopped(m_process); + Utils::SynchronousProcess::stopProcess(m_process); emitFailed(tr("\"%1\" timed out after %2ms.").arg(m_binary).arg(m_timeOutMS)); } @@ -135,7 +125,7 @@ void PerforceChecker::slotError(QProcess::ProcessError error) case QProcess::ReadError: case QProcess::WriteError: case QProcess::UnknownError: - ensureProcessStopped(m_process); + Utils::SynchronousProcess::stopProcess(m_process); break; } } |