From 68ce7a667bf8e7182d154cd3aecdf24ff474ce8d Mon Sep 17 00:00:00 2001 From: hjk <qthjk@ovi.com> Date: Thu, 28 Jun 2012 08:15:50 +0200 Subject: [PATCH] debugger: speed up logging by collecting bigger chunks Change-Id: Ie2171e0afdc0e3296f57974b1e4e5ee952658626 Reviewed-by: hjk <qthjk@ovi.com> --- src/plugins/debugger/logwindow.cpp | 24 ++++++++++++++++++++---- src/plugins/debugger/logwindow.h | 5 ++++- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/plugins/debugger/logwindow.cpp b/src/plugins/debugger/logwindow.cpp index 74dd0d54735..4329b507c02 100644 --- a/src/plugins/debugger/logwindow.cpp +++ b/src/plugins/debugger/logwindow.cpp @@ -394,6 +394,8 @@ LogWindow::LogWindow(QWidget *parent) connect(m_inputText, SIGNAL(executeLineRequested()), SLOT(executeLine())); + connect(&m_outputTimer, SIGNAL(timeout()), SLOT(doOutput())); + setMinimumHeight(60); } @@ -414,9 +416,6 @@ void LogWindow::showOutput(int channel, const QString &output) if (output.isEmpty()) return; - QTextCursor cursor = m_combinedText->textCursor(); - const bool atEnd = cursor.atEnd(); - const QChar cchar = charForChannel(channel); const QChar nchar = QLatin1Char('\n'); @@ -445,7 +444,24 @@ void LogWindow::showOutput(int channel, const QString &output) } pos = nnpos + 1; } - m_combinedText->append(out); + if (!out.endsWith(nchar)) + out.append(nchar); + + m_queuedOutput.append(out); + m_outputTimer.setSingleShot(true); + m_outputTimer.start(80); +} + +void LogWindow::doOutput() +{ + if (m_queuedOutput.isEmpty()) + return; + + QTextCursor cursor = m_combinedText->textCursor(); + const bool atEnd = cursor.atEnd(); + + m_combinedText->append(m_queuedOutput); + m_queuedOutput.clear(); if (atEnd) { cursor.movePosition(QTextCursor::End); diff --git a/src/plugins/debugger/logwindow.h b/src/plugins/debugger/logwindow.h index a71db75e5e2..7f63a42b0e1 100644 --- a/src/plugins/debugger/logwindow.h +++ b/src/plugins/debugger/logwindow.h @@ -36,6 +36,7 @@ #include "debuggerconstants.h" #include <QWidget> +#include <QTimer> QT_BEGIN_NAMESPACE class QCursor; @@ -74,6 +75,7 @@ public slots: void executeLine(); void showOutput(int channel, const QString &output); void showInput(int channel, const QString &input); + void doOutput(); signals: void showPage(); @@ -82,12 +84,13 @@ signals: private: DebuggerPane *m_combinedText; // combined input/output DebuggerPane *m_inputText; // scriptable input alone + QTimer m_outputTimer; + QString m_queuedOutput; QLineEdit *m_commandEdit; QLabel *m_commandLabel; bool m_ignoreNextInputEcho; }; - } // namespace Internal } // namespace Debugger -- GitLab