From 019a59ffca44ddc32fc6b16fd6cdcc8f3e1c93c6 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Thu, 7 Aug 2008 00:37:32 +0200 Subject: [PATCH] Reset the MessageProcessor on disconnect --- src/client/abstractmessageprocessor.h | 1 + src/client/client.cpp | 2 ++ src/qtui/qtuimessageprocessor.cpp | 9 +++++++++ src/qtui/qtuimessageprocessor.h | 3 +++ 4 files changed, 15 insertions(+) diff --git a/src/client/abstractmessageprocessor.h b/src/client/abstractmessageprocessor.h index f02728cb..b6bc4492 100644 --- a/src/client/abstractmessageprocessor.h +++ b/src/client/abstractmessageprocessor.h @@ -28,6 +28,7 @@ class AbstractMessageProcessor : public QObject { public: AbstractMessageProcessor(QObject *parent); + virtual void reset() = 0; public slots: virtual void process(Message &msg) = 0; diff --git a/src/client/client.cpp b/src/client/client.cpp index d2972634..b0bd4df3 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -342,6 +342,8 @@ void Client::disconnectFromCore() { emit disconnected(); emit coreConnectionStateChanged(false); + messageProcessor()->reset(); + // Clear internal data. Hopefully nothing relies on it at this point. setCurrentCoreAccount(0); diff --git a/src/qtui/qtuimessageprocessor.cpp b/src/qtui/qtuimessageprocessor.cpp index 203397de..f06030d3 100644 --- a/src/qtui/qtuimessageprocessor.cpp +++ b/src/qtui/qtuimessageprocessor.cpp @@ -33,6 +33,15 @@ QtUiMessageProcessor::QtUiMessageProcessor(QObject *parent) : AbstractMessagePro connect(&_processTimer, SIGNAL(timeout()), this, SLOT(processNextMessage())); } +void QtUiMessageProcessor::reset() { + if(processMode() == TimerBased) { + if(_processTimer.isActive()) _processTimer.stop(); + _processing = false; + _currentBatch.clear(); + _processQueue.clear(); + } +} + void QtUiMessageProcessor::process(Message &msg) { checkForHighlight(msg); Client::messageModel()->insertMessage(msg); diff --git a/src/qtui/qtuimessageprocessor.h b/src/qtui/qtuimessageprocessor.h index cfbc1394..53d4f021 100644 --- a/src/qtui/qtuimessageprocessor.h +++ b/src/qtui/qtuimessageprocessor.h @@ -35,9 +35,12 @@ class QtUiMessageProcessor : public AbstractMessageProcessor { }; QtUiMessageProcessor(QObject *parent); + inline bool isProcessing() const { return _processing; } inline Mode processMode() const { return _processMode; } + void reset(); + public slots: void process(Message &msg); void process(QList &msgs); -- 2.20.1