+
+void CoreBufferSyncer::customEvent(QEvent *event) {
+ if(event->type() != QEvent::User)
+ return;
+
+ purgeBufferIds();
+ event->accept();
+}
+
+void CoreBufferSyncer::requestPurgeBufferIds() {
+ if(_purgeBuffers)
+ return;
+
+ _purgeBuffers = true;
+ QCoreApplication::postEvent(this, new PurgeEvent());
+}
+
+void CoreBufferSyncer::purgeBufferIds() {
+ _purgeBuffers = false;
+ QList<BufferInfo> bufferInfos = Core::requestBuffers(_coreSession->user());
+ QSet<BufferId> actualBuffers;
+ foreach(BufferInfo bufferInfo, bufferInfos) {
+ actualBuffers << bufferInfo.bufferId();
+ }
+
+ QList<BufferId> storedIds = bufferIds();
+ foreach(BufferId bufferId, storedIds) {
+ if(!actualBuffers.contains(bufferId)) {
+ BufferSyncer::removeBuffer(bufferId);
+ }
+ }
+}