Skip to content

Commit cf5e817

Browse files
committed
Prevent merging downstream processors
1 parent d7d5f4a commit cf5e817

1 file changed

Lines changed: 31 additions & 13 deletions

File tree

Source/Processors/Merger/MergerEditor.cpp

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -140,22 +140,40 @@ void MergerEditor::mouseDown(const MouseEvent& e)
140140

141141
Array<GenericProcessor*> selectableProcessors;
142142

143-
for (auto& processor : availableProcessors)
143+
for (auto& processorToCheck : availableProcessors)
144144
{
145-
if (!processor->isMerger() &&
146-
!processor->isSplitter() &&
147-
processor->getDestNode() == 0)
145+
if (!processorToCheck->isMerger() &&
146+
!processorToCheck->isSplitter() &&
147+
processorToCheck->getDestNode() == 0)
148148
{
149-
150-
String name = String(processor->getNodeId());
151-
name += " - ";
152-
name += processor->getName();
153-
154-
menu.addItem(++menuItemIndex, // index
155-
name, // message
156-
true); // isSelectable
157149

158-
selectableProcessors.add(processor);
150+
bool isDownstream = false;
151+
GenericProcessor* sourceNode = processorToCheck->getSourceNode();
152+
153+
while (sourceNode != 0)
154+
{
155+
if (sourceNode == getProcessor())
156+
{
157+
isDownstream = true;
158+
break;
159+
}
160+
161+
sourceNode = sourceNode->getSourceNode();
162+
}
163+
164+
if (!isDownstream)
165+
{
166+
String name = String(processorToCheck->getNodeId());
167+
name += " - ";
168+
name += processorToCheck->getName();
169+
170+
menu.addItem(++menuItemIndex, // index
171+
name, // message
172+
true); // isSelectable
173+
174+
selectableProcessors.add(processorToCheck);
175+
}
176+
159177
}
160178
}
161179

0 commit comments

Comments
 (0)