-void CoreBufferSyncer::mergeBuffersPermanently(BufferId bufferId1, BufferId bufferId2) {
- BufferInfo bufferInfo1 = Core::getBufferInfo(_coreSession->user(), bufferId1);
- BufferInfo bufferInfo2 = Core::getBufferInfo(_coreSession->user(), bufferId2);
- if(!bufferInfo1.isValid() || !bufferInfo2.isValid()) {
- qWarning() << "CoreBufferSyncer::mergeBufferPermanently(): invalid BufferIds:" << bufferId1 << bufferId2 << "for User:" << _coreSession->user();
- return;
- }
-
- if(bufferInfo1.type() != BufferInfo::QueryBuffer || bufferInfo2.type() != BufferInfo::QueryBuffer) {
- qWarning() << "CoreBufferSyncer::mergeBufferPermanently(): only QueryBuffers can be merged!" << bufferId1 << bufferId2;
- return;
- }
-
- if(Core::mergeBuffersPermanently(_coreSession->user(), bufferId1, bufferId2)) {
- BufferSyncer::mergeBuffersPermanently(bufferId1, bufferId2);
- }
+void CoreBufferSyncer::mergeBuffersPermanently(BufferId bufferId1, BufferId bufferId2)
+{
+ BufferInfo bufferInfo1 = Core::getBufferInfo(_coreSession->user(), bufferId1);
+ BufferInfo bufferInfo2 = Core::getBufferInfo(_coreSession->user(), bufferId2);
+ if (!bufferInfo1.isValid() || !bufferInfo2.isValid()) {
+ qWarning() << "CoreBufferSyncer::mergeBuffersPermanently(): invalid BufferIds:" << bufferId1 << bufferId2
+ << "for User:" << _coreSession->user();
+ return;
+ }
+
+ if ((bufferInfo1.type() != BufferInfo::QueryBuffer && bufferInfo1.type() != BufferInfo::ChannelBuffer)
+ || (bufferInfo2.type() != BufferInfo::QueryBuffer && bufferInfo2.type() != BufferInfo::ChannelBuffer)) {
+ qWarning() << "CoreBufferSyncer::mergeBuffersPermanently(): only QueryBuffers and/or ChannelBuffers can be merged!" << bufferId1
+ << bufferId2;
+ return;
+ }
+
+ if (Core::mergeBuffersPermanently(_coreSession->user(), bufferId1, bufferId2)) {
+ BufferSyncer::mergeBuffersPermanently(bufferId1, bufferId2);
+ }
+}
+
+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();
+ }
+
+ QSet<BufferId> storedIds = lastSeenBufferIds().toSet() + markerLineBufferIds().toSet();
+ foreach (BufferId bufferId, storedIds) {
+ if (!actualBuffers.contains(bufferId)) {
+ BufferSyncer::removeBuffer(bufferId);
+ }
+ }
+}
+
+void CoreBufferSyncer::setBufferActivity(BufferId buffer, int activity)
+{
+ BufferSyncer::setBufferActivity(buffer, activity);
+ dirtyActivities << buffer;
+}
+
+void CoreBufferSyncer::setHighlightCount(BufferId buffer, int highlightCount)
+{
+ BufferSyncer::setHighlightCount(buffer, highlightCount);
+ dirtyHighlights << buffer;