X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcorebuffersyncer.cpp;h=55c28b266a42125dac766fc5b50686eda710faca;hp=37ff255f9b95f80c80e1f5705897a96fa8d25962;hb=a5ee21025ec613dc128ceb78a7e5fcd0f353275e;hpb=f6b9eeda207d42c99fc3e9085631722cf2ec83dc 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);