From 56aff185a6cd5c2dbdda583f747fdbe7911a2eab Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Wed, 21 Jul 2010 11:02:51 +0200 Subject: [PATCH] debugger: move progress handling to debugger engine base class --- src/plugins/debugger/debuggerengine.cpp | 37 +++++++++++++++++++++++-- src/plugins/debugger/debuggerengine.h | 1 + src/plugins/debugger/gdb/gdbengine.cpp | 33 ++-------------------- src/plugins/debugger/gdb/gdbengine.h | 2 -- 4 files changed, 38 insertions(+), 35 deletions(-) diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 50f4b801485..cc1b5e45fef 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -48,6 +48,8 @@ #include <coreplugin/icore.h> #include <coreplugin/editormanager/editormanager.h> +#include <coreplugin/progressmanager/progressmanager.h> +#include <coreplugin/progressmanager/futureprogress.h> #include <projectexplorer/debugginghelper.h> #include <projectexplorer/environment.h> @@ -68,6 +70,7 @@ #include <QtCore/QDir> #include <QtCore/QFileInfo> #include <QtCore/QTimer> +#include <QtCore/QFutureInterface> #include <QtGui/QAbstractItemView> #include <QtGui/QStandardItemModel> @@ -230,7 +233,14 @@ public: m_threadsHandler(engine), m_watchHandler(engine), m_disassemblerViewAgent(engine) - {} + { + m_progress.setProgressRange(0, 100); + Core::FutureProgress *fp = Core::ICore::instance()->progressManager() + ->addTask(m_progress.future(), tr("Launching"), _("Debugger.Launcher")); + fp->setKeepOnFinish(false); + } + + ~DebuggerEnginePrivate() {} public slots: void breakpointSetRemoveMarginActionTriggered(); @@ -304,6 +314,7 @@ public: ThreadsHandler m_threadsHandler; WatchHandler m_watchHandler; DisassemblerViewAgent m_disassemblerViewAgent; + QFutureInterface<void> m_progress; }; void DebuggerEnginePrivate::breakpointSetRemoveMarginActionTriggered() @@ -675,6 +686,7 @@ void DebuggerEngine::showMessage(const QString &msg, int channel, int timeout) c void DebuggerEngine::startDebugger(DebuggerRunControl *runControl) { + d->m_progress.reportStarted(); QTC_ASSERT(runControl, notifyEngineSetupFailed(); return); QTC_ASSERT(!d->m_runControl, notifyEngineSetupFailed(); return); @@ -704,6 +716,7 @@ void DebuggerEngine::startDebugger(DebuggerRunControl *runControl) qDebug() << state()); setState(EngineSetupRequested); + d->m_progress.setProgressValue(20); setupEngine(); } @@ -876,6 +889,10 @@ void DebuggerEngine::addToWatchWindow() void DebuggerEngine::handleStartFailed() { d->m_runControl = 0; + + d->m_progress.setProgressValue(90); + d->m_progress.reportCanceled(); + d->m_progress.reportFinished(); } // Called from RunControl. @@ -891,6 +908,9 @@ void DebuggerEngine::handleFinished() QTC_ASSERT(sessionTemplate != this, /**/); breakHandler()->storeToTemplate(sessionTemplate->breakHandler()); watchHandler()->storeToTemplate(sessionTemplate->watchHandler()); + + d->m_progress.setProgressValue(100); + d->m_progress.reportFinished(); } const DebuggerStartParameters &DebuggerEngine::startParameters() const @@ -1068,17 +1088,21 @@ void DebuggerEngine::notifyEngineSetupOk() QTC_ASSERT(state() == EngineSetupRequested, qDebug() << state()); setState(EngineSetupOk); QTC_ASSERT(d->m_runControl, /**/); - if (d->m_runControl) + if (d->m_runControl) { + d->m_progress.setProgressValue(100); + d->m_progress.reportFinished(); d->m_runControl->startSuccessful(); + } showMessage(_("QUEUE: SETUP INFERIOR")); QTimer::singleShot(0, d, SLOT(doSetupInferior())); } void DebuggerEnginePrivate::doSetupInferior() { + m_engine->showMessage(_("CALL: SETUP INFERIOR")); QTC_ASSERT(state() == EngineSetupOk, qDebug() << state()); + m_progress.setProgressValue(25); m_engine->setState(InferiorSetupRequested); - m_engine->showMessage(_("CALL: SETUP INFERIOR")); m_engine->setupInferior(); } @@ -1101,6 +1125,7 @@ void DebuggerEnginePrivate::doRunEngine() { m_engine->showMessage(_("CALL: RUN ENGINE")); QTC_ASSERT(state() == EngineRunRequested, qDebug() << state()); + m_progress.setProgressValue(30); m_engine->runEngine(); } @@ -1438,6 +1463,12 @@ void DebuggerEngine::requestInterruptInferior() d->doInterruptInferior(); } +void DebuggerEngine::progressPing() +{ + int progress = d->m_progress.progressValue(); + d->m_progress.setProgressValue(qMin(70, progress + 1)); +} + } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index e2b47831d83..7cf207694f1 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -212,6 +212,7 @@ public: //QAbstractItemModel *snapshotModel() const; QAbstractItemModel *sourceFilesModel() const; + void progressPing(); void handleFinished(); void handleStartFailed(); bool debuggerActionsEnabled() const; diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index ff6df3110e7..9c1fb225395 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -72,8 +72,6 @@ #include <texteditor/itexteditor.h> #include <projectexplorer/toolchain.h> #include <coreplugin/icore.h> -#include <coreplugin/progressmanager/progressmanager.h> -#include <coreplugin/progressmanager/futureprogress.h> #include <QtCore/QCoreApplication> #include <QtCore/QDebug> @@ -179,8 +177,6 @@ static QByteArray parsePlainConsoleStream(const GdbResponse &response) GdbEngine::GdbEngine(const DebuggerStartParameters &startParameters) : DebuggerEngine(startParameters) { - m_progress = 0; - m_commandTimer = new QTimer(this); m_commandTimer->setSingleShot(true); connect(m_commandTimer, SIGNAL(timeout()), SLOT(commandTimeout())); @@ -260,8 +256,6 @@ void GdbEngine::initializeVariables() #ifdef Q_OS_LINUX m_entryPoint.clear(); #endif - delete m_progress; - m_progress = 0; } QString GdbEngine::errorMessage(QProcess::ProcessError error) @@ -400,14 +394,14 @@ void GdbEngine::handleResponse(const QByteArray &buff) QByteArray id = result.findChild("id").data(); if (!id.isEmpty()) showStatusMessage(tr("Library %1 loaded").arg(_(id)), 1000); - int progress = m_progress->progressValue(); - m_progress->setProgressValue(qMin(70, progress + 1)); + progressPing(); invalidateSourcesList(); } else if (asyncClass == "library-unloaded") { // Archer has 'id="/usr/lib/libdrm.so.2", // target-name="/usr/lib/libdrm.so.2", // host-name="/usr/lib/libdrm.so.2" QByteArray id = result.findChild("id").data(); + progressPing(); showStatusMessage(tr("Library %1 unloaded").arg(_(id)), 1000); invalidateSourcesList(); } else if (asyncClass == "thread-group-added") { @@ -417,8 +411,7 @@ void GdbEngine::handleResponse(const QByteArray &buff) // Archer had only "{id="28902"}" at some point of 6.8.x. // *-started seems to be standard in 7.1, but in early // 7.0.x, there was a *-created instead. - const int progress = m_progress->progressValue(); - m_progress->setProgressValue(qMin(70, progress + 1)); + progressPing(); // 7.1.50 has thread-group-started,id="i1",pid="3529" QByteArray id = result.findChild("id").data(); showStatusMessage(tr("Thread group %1 created").arg(_(id)), 1000); @@ -538,10 +531,6 @@ void GdbEngine::handleResponse(const QByteArray &buff) if (resultClass == "done") { response.resultClass = GdbResultDone; } else if (resultClass == "running") { - if (m_progress) { - m_progress->setProgressValue(100); - m_progress->reportFinished(); - } // FIXME: Handle this in the individual result handlers. //if (state() == InferiorStopOk) { // Result of manual command. // resetLocation(); @@ -1658,12 +1647,6 @@ void GdbEngine::notifyAdapterShutdownOk() QTC_ASSERT(state() == EngineShutdownRequested, qDebug() << state()); showMessage(_("INITIATE GDBENGINE SHUTDOWN IN STATE %1, PROC: %2") .arg(lastGoodState()).arg(gdbProc()->state())); - if (m_progress) { - m_progress->setProgressValue(90); - m_progress->reportCanceled(); - m_progress->reportFinished(); - } - m_commandsDoneCallback = 0; postCommand("-gdb-exit", GdbEngine::ExitRequest, CB(handleGdbExit)); } @@ -1755,13 +1738,6 @@ void GdbEngine::setupEngine() QTC_ASSERT(state() == EngineSetupRequested, qDebug() << state()); QTC_ASSERT(m_debuggingHelperState == DebuggingHelperUninitialized, /**/); - m_progress = new QFutureInterface<void>(); - m_progress->setProgressRange(0, 100); - Core::FutureProgress *fp = Core::ICore::instance()->progressManager() - ->addTask(m_progress->future(), tr("Launching"), _("Debugger.Launcher")); - fp->setKeepOnFinish(false); - m_progress->reportStarted(); - //qDebug() << "CREATED ADAPTER: " << m_gdbAdapter; if (m_gdbAdapter->dumperHandling() != AbstractGdbAdapter::DumperNotAvailable) { @@ -1773,7 +1749,6 @@ void GdbEngine::setupEngine() this, SLOT(recheckDebuggingHelperAvailabilityClassic())); } - m_progress->setProgressValue(20); QTC_ASSERT(state() == EngineSetupRequested, /**/); m_gdbAdapter->startAdapter(); } @@ -4170,8 +4145,6 @@ void GdbEngine::handleAdapterStartFailed(const QString &msg, const QString &sett void GdbEngine::handleAdapterStarted() { QTC_ASSERT(state() == EngineSetupRequested, qDebug() << state()); - if (m_progress) - m_progress->setProgressValue(25); showMessage(_("ADAPTER SUCCESSFULLY STARTED")); notifyEngineSetupOk(); } diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index e4cdca9d540..e3f679eca37 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -38,7 +38,6 @@ #include "watchutils.h" #include <QtCore/QByteArray> -#include <QtCore/QFutureInterface> #include <QtCore/QHash> #include <QtCore/QMap> #include <QtCore/QMultiMap> @@ -336,7 +335,6 @@ private: ////////// Inferior Management ////////// void handleInfoProc(const GdbResponse &response); QByteArray m_entryPoint; - QFutureInterface<void> *m_progress; private: ////////// View & Data Stuff ////////// -- GitLab