projects
/
quassel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
5159e20
)
Reset the MessageProcessor on disconnect
author
Manuel Nickschas
<sputnick@quassel-irc.org>
Wed, 6 Aug 2008 22:37:32 +0000
(
00:37
+0200)
committer
Manuel Nickschas
<sputnick@quassel-irc.org>
Wed, 6 Aug 2008 22:37:32 +0000
(
00:37
+0200)
src/client/abstractmessageprocessor.h
patch
|
blob
|
history
src/client/client.cpp
patch
|
blob
|
history
src/qtui/qtuimessageprocessor.cpp
patch
|
blob
|
history
src/qtui/qtuimessageprocessor.h
patch
|
blob
|
history
diff --git
a/src/client/abstractmessageprocessor.h
b/src/client/abstractmessageprocessor.h
index
f02728c
..
b6bc449
100644
(file)
--- a/
src/client/abstractmessageprocessor.h
+++ b/
src/client/abstractmessageprocessor.h
@@
-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;
diff --git
a/src/client/client.cpp
b/src/client/client.cpp
index
d297263
..
b0bd4df
100644
(file)
--- a/
src/client/client.cpp
+++ b/
src/client/client.cpp
@@
-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);
diff --git
a/src/qtui/qtuimessageprocessor.cpp
b/src/qtui/qtuimessageprocessor.cpp
index
203397d
..
f06030d
100644
(file)
--- 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()));
}
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);
diff --git
a/src/qtui/qtuimessageprocessor.h
b/src/qtui/qtuimessageprocessor.h
index
cfbc139
..
53d4f02
100644
(file)
--- a/
src/qtui/qtuimessageprocessor.h
+++ b/
src/qtui/qtuimessageprocessor.h
@@
-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);