From 0a320185dcf3511ed468f90a21d3e7ca96944678 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Tue, 8 Aug 2023 17:03:08 +0200 Subject: [PATCH] Valgrind: Merge parsers' finished() and internalError() signals Replace them with done() signal. Change-Id: I5f03df927ddefd803d9cb0b06d3f4c1601a15381 Reviewed-by: hjk --- src/plugins/valgrind/memchecktool.cpp | 12 ++++++------ src/plugins/valgrind/valgrindrunner.cpp | 5 ++++- src/plugins/valgrind/xmlprotocol/parser.cpp | 16 +++++++--------- src/plugins/valgrind/xmlprotocol/parser.h | 3 +-- .../valgrind/xmlprotocol/threadedparser.cpp | 4 +--- .../valgrind/xmlprotocol/threadedparser.h | 3 +-- 6 files changed, 20 insertions(+), 23 deletions(-) diff --git a/src/plugins/valgrind/memchecktool.cpp b/src/plugins/valgrind/memchecktool.cpp index 4a353f7e908..89cf1b0351b 100644 --- a/src/plugins/valgrind/memchecktool.cpp +++ b/src/plugins/valgrind/memchecktool.cpp @@ -1058,12 +1058,12 @@ void MemcheckToolPrivate::loadXmlLogFile(const QString &filePath) auto parser = new ThreadedParser; connect(parser, &ThreadedParser::error, this, &MemcheckToolPrivate::parserError); - connect(parser, &ThreadedParser::internalError, - this, &MemcheckToolPrivate::internalParserError); - connect(parser, &ThreadedParser::finished, - this, &MemcheckToolPrivate::loadingExternalXmlLogFileFinished); - connect(parser, &ThreadedParser::finished, - parser, &ThreadedParser::deleteLater); + connect(parser, &ThreadedParser::done, this, [this, parser](bool success, const QString &err) { + if (!success) + internalParserError(err); + loadingExternalXmlLogFileFinished(); + parser->deleteLater(); + }); parser->parse(logFile); // ThreadedParser owns the file } diff --git a/src/plugins/valgrind/valgrindrunner.cpp b/src/plugins/valgrind/valgrindrunner.cpp index 804167b7bce..bfbf168faae 100644 --- a/src/plugins/valgrind/valgrindrunner.cpp +++ b/src/plugins/valgrind/valgrindrunner.cpp @@ -162,7 +162,10 @@ ValgrindRunner::ValgrindRunner(QObject *parent) { connect(&d->m_parser, &ThreadedParser::status, this, &ValgrindRunner::status); connect(&d->m_parser, &ThreadedParser::error, this, &ValgrindRunner::error); - connect(&d->m_parser, &ThreadedParser::internalError, this, &ValgrindRunner::internalError); + connect(&d->m_parser, &ThreadedParser::done, this, [this](bool success, const QString &err) { + if (!success) + emit internalError(err); + }); } ValgrindRunner::~ValgrindRunner() diff --git a/src/plugins/valgrind/xmlprotocol/parser.cpp b/src/plugins/valgrind/xmlprotocol/parser.cpp index b3e6a41c0b9..790a383d69c 100644 --- a/src/plugins/valgrind/xmlprotocol/parser.cpp +++ b/src/plugins/valgrind/xmlprotocol/parser.cpp @@ -318,12 +318,6 @@ static Status::State parseState(const QString &state) throw ParserException(Tr::tr("Unknown state \"%1\"").arg(state)); } -void Parser::Private::reportInternalError(const QString &e) -{ - errorString = e; - emit q->internalError(e); -} - static Stack makeStack(const XauxWhat &xauxwhat, const QList &frames) { Stack s; @@ -618,7 +612,9 @@ void Parser::Private::parse(QIODevice *device) { QTC_ASSERT(device, return); reader.setDevice(device); + errorString.clear(); + bool success = true; try { while (notAtEnd()) { blockingReadNext(); @@ -639,11 +635,13 @@ void Parser::Private::parse(QIODevice *device) checkTool(blockingReadElementText()); } } catch (const ParserException &e) { - reportInternalError(e.message()); + errorString = e.message(); + success = false; } catch (...) { - reportInternalError(Tr::tr("Unexpected exception caught during parsing.")); + errorString = Tr::tr("Unexpected exception caught during parsing."); + success = false; } - emit q->finished(); + emit q->done(success, errorString); } Parser::Parser(QObject *parent) diff --git a/src/plugins/valgrind/xmlprotocol/parser.h b/src/plugins/valgrind/xmlprotocol/parser.h index 069696cba64..b38d9058953 100644 --- a/src/plugins/valgrind/xmlprotocol/parser.h +++ b/src/plugins/valgrind/xmlprotocol/parser.h @@ -33,11 +33,10 @@ public: signals: void status(const Valgrind::XmlProtocol::Status &status); void error(const Valgrind::XmlProtocol::Error &error); - void internalError(const QString &errorString); void errorCount(qint64 unique, qint64 count); void suppressionCount(const QString &name, qint64 count); void announceThread(const Valgrind::XmlProtocol::AnnounceThread &announceThread); - void finished(); + void done(bool success, const QString &errorString); private: class Private; diff --git a/src/plugins/valgrind/xmlprotocol/threadedparser.cpp b/src/plugins/valgrind/xmlprotocol/threadedparser.cpp index d7385e60943..af38da7bcfe 100644 --- a/src/plugins/valgrind/xmlprotocol/threadedparser.cpp +++ b/src/plugins/valgrind/xmlprotocol/threadedparser.cpp @@ -50,9 +50,7 @@ void ThreadedParser::parse(QIODevice *device) qRegisterMetaType(); connect(parser, &Parser::status, this, &ThreadedParser::status, Qt::QueuedConnection); connect(parser, &Parser::error, this, &ThreadedParser::error, Qt::QueuedConnection); - connect(parser, &Parser::internalError, this, &ThreadedParser::internalError, - Qt::QueuedConnection); - connect(parser, &Parser::finished, this, &ThreadedParser::finished, Qt::QueuedConnection); + connect(parser, &Parser::done, this, &ThreadedParser::done, Qt::QueuedConnection); m_parserThread = new Thread; connect(m_parserThread.get(), &QThread::finished, m_parserThread.get(), &QObject::deleteLater); diff --git a/src/plugins/valgrind/xmlprotocol/threadedparser.h b/src/plugins/valgrind/xmlprotocol/threadedparser.h index c88abf3fe68..8def97f00c5 100644 --- a/src/plugins/valgrind/xmlprotocol/threadedparser.h +++ b/src/plugins/valgrind/xmlprotocol/threadedparser.h @@ -37,8 +37,7 @@ public: signals: void status(const Status &status); void error(const Error &error); - void internalError(const QString &errorString); - void finished(); + void done(bool success, const QString &errorString); private: QPointer m_parserThread;