-
- BufferViewConfig *config = 0;
- QSet<int>::const_iterator viewIter;
- for(viewIter = _bufferViewIds.constBegin(); viewIter != _bufferViewIds.constEnd(); viewIter++) {
- config = Client::bufferViewManager()->bufferViewConfig(*viewIter);
- if(!config)
- continue;
-
- networkIds << config->networkId();
- buffers += config->bufferList().toSet();
- removedBuffers += config->removedBuffers();
- tempRemovedBuffers += config->temporarilyRemovedBuffers();
-
- addBuffersAutomatically |= config->addNewBuffersAutomatically();
- hideInactiveBuffers &= config->hideInactiveBuffers();
- allowedBufferTypes |= config->allowedBufferTypes();
- if(minimumActivity == -1 || config->minimumActivity() < minimumActivity)
- minimumActivity = config->minimumActivity();
+
+ if(Client::bufferViewManager()) {
+ BufferViewConfig *config = 0;
+ QSet<int>::const_iterator viewIter;
+ for(viewIter = _bufferViewIds.constBegin(); viewIter != _bufferViewIds.constEnd(); viewIter++) {
+ config = Client::bufferViewManager()->bufferViewConfig(*viewIter);
+ if(!config)
+ continue;
+
+ networkIds << config->networkId();
+ if(config->networkId().isValid()) {
+ NetworkId networkId = config->networkId();
+ // we have to filter out all the buffers that don't belong to this net... :/
+ QSet<BufferId> bufferIds;
+ foreach(BufferId bufferId, config->bufferList()) {
+ if(Client::networkModel()->networkId(bufferId) == networkId)
+ bufferIds << bufferId;
+ }
+ buffers += bufferIds;
+
+ bufferIds.clear();
+ foreach(BufferId bufferId, config->temporarilyRemovedBuffers()) {
+ if(Client::networkModel()->networkId(bufferId) == networkId)
+ bufferIds << bufferId;
+ }
+ tempRemovedBuffers += bufferIds;
+ } else {
+ buffers += config->bufferList().toSet();
+ tempRemovedBuffers += config->temporarilyRemovedBuffers();
+ }
+
+ // in the overlay a buffer is removed it is removed from all views
+ if(removedBuffers.isEmpty())
+ removedBuffers = config->removedBuffers();
+ else
+ removedBuffers.intersect(config->removedBuffers());
+
+
+ addBuffersAutomatically |= config->addNewBuffersAutomatically();
+ hideInactiveBuffers &= config->hideInactiveBuffers();
+ allowedBufferTypes |= config->allowedBufferTypes();
+ if(minimumActivity == -1 || config->minimumActivity() < minimumActivity)
+ minimumActivity = config->minimumActivity();
+ }
+ QSet<BufferId> availableBuffers = Client::networkModel()->allBufferIds().toSet();
+ buffers.intersect(availableBuffers);
+ tempRemovedBuffers.intersect(availableBuffers);