Reset the MessageProcessor on disconnect
authorManuel Nickschas <sputnick@quassel-irc.org>
Wed, 6 Aug 2008 22:37:32 +0000 (00:37 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Wed, 6 Aug 2008 22:37:32 +0000 (00:37 +0200)
src/client/abstractmessageprocessor.h
src/client/client.cpp
src/qtui/qtuimessageprocessor.cpp
src/qtui/qtuimessageprocessor.h

index f02728c..b6bc449 100644 (file)
@@ -28,6 +28,7 @@ class AbstractMessageProcessor : public QObject {
 
   public:
     AbstractMessageProcessor(QObject *parent);
 
   public:
     AbstractMessageProcessor(QObject *parent);
+    virtual void reset() = 0;
 
   public slots:
     virtual void process(Message &msg) = 0;
 
   public slots:
     virtual void process(Message &msg) = 0;
index d297263..b0bd4df 100644 (file)
@@ -342,6 +342,8 @@ void Client::disconnectFromCore() {
   emit disconnected();
   emit coreConnectionStateChanged(false);
 
   emit disconnected();
   emit coreConnectionStateChanged(false);
 
+  messageProcessor()->reset();
+
   // Clear internal data. Hopefully nothing relies on it at this point.
   setCurrentCoreAccount(0);
 
   // Clear internal data. Hopefully nothing relies on it at this point.
   setCurrentCoreAccount(0);
 
index 203397d..f06030d 100644 (file)
@@ -33,6 +33,15 @@ QtUiMessageProcessor::QtUiMessageProcessor(QObject *parent) : AbstractMessagePro
   connect(&_processTimer, SIGNAL(timeout()), this, SLOT(processNextMessage()));
 }
 
   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);
 void QtUiMessageProcessor::process(Message &msg) {
   checkForHighlight(msg);
   Client::messageModel()->insertMessage(msg);
index cfbc139..53d4f02 100644 (file)
@@ -35,9 +35,12 @@ class QtUiMessageProcessor : public AbstractMessageProcessor {
     };
 
     QtUiMessageProcessor(QObject *parent);
     };
 
     QtUiMessageProcessor(QObject *parent);
+
     inline bool isProcessing() const { return _processing; }
     inline Mode processMode() const { return _processMode; }
 
     inline bool isProcessing() const { return _processing; }
     inline Mode processMode() const { return _processMode; }
 
+    void reset();
+
   public slots:
     void process(Message &msg);
     void process(QList<Message> &msgs);
   public slots:
     void process(Message &msg);
     void process(QList<Message> &msgs);