X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcorebuffersyncer.cpp;h=2829f5d4aaf589a707cf40902752df4a43388298;hp=a493160b7b9cc682b5982d7b70243b3009221db4;hb=HEAD;hpb=c1cf157116de7fc3da96203aa6f03c38c7ebb650 diff --git a/src/core/corebuffersyncer.cpp b/src/core/corebuffersyncer.cpp index a493160b..7c432646 100644 --- a/src/core/corebuffersyncer.cpp +++ b/src/core/corebuffersyncer.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2018 by the Quassel Project * + * Copyright (C) 2005-2022 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -20,10 +20,15 @@ #include "corebuffersyncer.h" +#include +#include +#include + #include "core.h" #include "corenetwork.h" #include "coresession.h" #include "ircchannel.h" +#include "util.h" class PurgeEvent : public QEvent { @@ -34,7 +39,8 @@ public: }; CoreBufferSyncer::CoreBufferSyncer(CoreSession* parent) - : BufferSyncer(Core::bufferLastSeenMsgIds(parent->user()), + : BufferSyncer(Core::bufferLastMsgIds(parent->user()), + Core::bufferLastSeenMsgIds(parent->user()), Core::bufferMarkerLineMsgIds(parent->user()), Core::bufferActivities(parent->user()), Core::highlightCounts(parent->user()), @@ -184,15 +190,14 @@ void CoreBufferSyncer::requestPurgeBufferIds() void CoreBufferSyncer::purgeBufferIds() { _purgeBuffers = false; - QList bufferInfos = Core::requestBuffers(_coreSession->user()); - QSet actualBuffers; - foreach (BufferInfo bufferInfo, bufferInfos) { - actualBuffers << bufferInfo.bufferId(); - } + auto bufferInfos = Core::requestBuffers(_coreSession->user()); + std::set actualBuffers; + std::transform(bufferInfos.cbegin(), bufferInfos.cend(), std::inserter(actualBuffers, actualBuffers.end()), + [](auto&& bufferInfo) { return bufferInfo.bufferId(); }); - QSet storedIds = lastSeenBufferIds().toSet() + markerLineBufferIds().toSet(); + QSet storedIds = toQSet(lastSeenBufferIds()) + toQSet(markerLineBufferIds()); foreach (BufferId bufferId, storedIds) { - if (!actualBuffers.contains(bufferId)) { + if (actualBuffers.find(bufferId) == actualBuffers.end()) { BufferSyncer::removeBuffer(bufferId); } }