X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fcorebuffersyncer.cpp;h=d7b3b5c4cdedd57a7c0e0bf5a0e7922e5de0a7c0;hb=HEAD;hp=4f3830e3953a207dba641f4d7b75bfee5d38c934;hpb=cc6e7c08709c4e761e2fd9c2e322751015497003;p=quassel.git diff --git a/src/core/corebuffersyncer.cpp b/src/core/corebuffersyncer.cpp index 4f3830e3..7c432646 100644 --- a/src/core/corebuffersyncer.cpp +++ b/src/core/corebuffersyncer.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2019 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); } }