X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcorebuffersyncer.cpp;fp=src%2Fcore%2Fcorebuffersyncer.cpp;h=55c28b266a42125dac766fc5b50686eda710faca;hp=37ff255f9b95f80c80e1f5705897a96fa8d25962;hb=541013790cdbd0c32d81debf8f42ac6b5183a4aa;hpb=7aa691713f4185fe142f54e14d6b623ee706f77a diff --git a/src/core/corebuffersyncer.cpp b/src/core/corebuffersyncer.cpp index 37ff255f..55c28b26 100644 --- a/src/core/corebuffersyncer.cpp +++ b/src/core/corebuffersyncer.cpp @@ -32,7 +32,7 @@ public: INIT_SYNCABLE_OBJECT(CoreBufferSyncer) CoreBufferSyncer::CoreBufferSyncer(CoreSession *parent) - : BufferSyncer(Core::bufferLastSeenMsgIds(parent->user()), parent), + : BufferSyncer(Core::bufferLastSeenMsgIds(parent->user()), Core::bufferMarkerLineMsgIds(parent->user()), parent), _coreSession(parent), _purgeBuffers(false) { @@ -40,18 +40,31 @@ CoreBufferSyncer::CoreBufferSyncer(CoreSession *parent) void CoreBufferSyncer::requestSetLastSeenMsg(BufferId buffer, const MsgId &msgId) { if(setLastSeenMsg(buffer, msgId)) - dirtyBuffers << buffer; + dirtyLastSeenBuffers << buffer; +} + +void CoreBufferSyncer::requestSetMarkerLine(BufferId buffer, const MsgId &msgId) { + if(setMarkerLine(buffer, msgId)) + dirtyMarkerLineBuffers << buffer; } void CoreBufferSyncer::storeDirtyIds() { UserId userId = _coreSession->user(); MsgId msgId; - foreach(BufferId bufferId, dirtyBuffers) { + foreach(BufferId bufferId, dirtyLastSeenBuffers) { msgId = lastSeenMsg(bufferId); if(msgId.isValid()) Core::setBufferLastSeenMsg(userId, bufferId, msgId); } - dirtyBuffers.clear(); + + foreach(BufferId bufferId, dirtyMarkerLineBuffers) { + msgId = markerLine(bufferId); + if(msgId.isValid()) + Core::setBufferMarkerLineMsg(userId, bufferId, msgId); + } + + dirtyLastSeenBuffers.clear(); + dirtyMarkerLineBuffers.clear(); } void CoreBufferSyncer::removeBuffer(BufferId bufferId) { @@ -140,7 +153,7 @@ void CoreBufferSyncer::purgeBufferIds() { actualBuffers << bufferInfo.bufferId(); } - QList storedIds = bufferIds(); + QSet storedIds = lastSeenBufferIds().toSet() + markerLineBufferIds().toSet(); foreach(BufferId bufferId, storedIds) { if(!actualBuffers.contains(bufferId)) { BufferSyncer::removeBuffer(bufferId);