PurgeEvent() : QEvent(QEvent::User) {}
};
+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)
{
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) {
actualBuffers << bufferInfo.bufferId();
}
- QList<BufferId> storedIds = bufferIds();
+ QSet<BufferId> storedIds = lastSeenBufferIds().toSet() + markerLineBufferIds().toSet();
foreach(BufferId bufferId, storedIds) {
if(!actualBuffers.contains(bufferId)) {
- removeBuffer(bufferId);
+ BufferSyncer::removeBuffer(bufferId);
}
}
}