@@ -1136,14 +1136,11 @@ void SignalChainTabButton::paintButton(Graphics& g, bool isMouseOver, bool isBut
11361136
11371137// how about some loading and saving?
11381138
1139- XmlElement* EditorViewport::createNodeXml (GenericEditor* editor,
1140- int insertionPt)
1139+ XmlElement* EditorViewport::createNodeXml (GenericProcessor* source)
11411140{
11421141
11431142 XmlElement* e = new XmlElement (" PROCESSOR" );
11441143
1145- GenericProcessor* source = (GenericProcessor*) editor->getProcessor ();
1146-
11471144 String name = " " ;
11481145
11491146 if (source->isSource ())
@@ -1155,12 +1152,12 @@ XmlElement* EditorViewport::createNodeXml(GenericEditor* editor,
11551152 else
11561153 name += " Filters/" ;
11571154
1158- name += editor ->getName ();
1155+ name += source-> getEditor () ->getName ();
11591156
11601157 std::cout << name << std::endl;
11611158
11621159 e->setAttribute (" name" , name);
1163- e->setAttribute (" insertionPoint" , insertionPt );
1160+ e->setAttribute (" insertionPoint" , 1 );
11641161 e->setAttribute (" pluginName" , source->getPluginName ());
11651162 e->setAttribute (" pluginType" , (int )(source->getPluginType ()));
11661163 e->setAttribute (" pluginIndex" , source->getIndex ());
@@ -1222,7 +1219,6 @@ const String EditorViewport::saveState(File fileToUse, String* xmlText)
12221219 /* * Used to reset saveOrder at end, to allow saving the same processor multiple times*/
12231220 Array<GenericProcessor*> allProcessors;
12241221
1225- bool moveForward;
12261222 int saveOrder = 0 ;
12271223
12281224 XmlElement* xml = new XmlElement (" SETTINGS" );
@@ -1246,103 +1242,56 @@ const String EditorViewport::saveState(File fileToUse, String* xmlText)
12461242 XmlElement* machineName = info->createNewChildElement (" MACHINE" );
12471243 machineName->addTextElement (SystemStats::getComputerName ());
12481244
1249- GenericEditor* editor;
1250-
12511245 for (int n = 0 ; n < signalChainArray.size (); n++)
12521246 {
1253-
1254- moveForward = true ;
1255-
12561247 XmlElement* signalChain = new XmlElement (" SIGNALCHAIN" );
12571248
1258- editor = signalChainArray[n]->getEditor ();
1259-
1260- int insertionPt = 1 ;
1249+ GenericProcessor* processor = signalChainArray[n]->getEditor ()->getProcessor ();
12611250
1262- while (editor != 0 )
1251+ while (processor != nullptr )
12631252 {
1264-
1265- GenericProcessor* currentProcessor = (GenericProcessor*) editor->getProcessor ();
1266- GenericProcessor* nextProcessor;
1267-
1268- if (currentProcessor->saveOrder < 0 ) // create a new XML element
1253+ if (processor->saveOrder < 0 )
12691254 {
1255+ if (processor->isSplitter ())
1256+ {
1257+ // add to list of splitters to come back to
1258+ splitPoints.add (processor);
1259+ processor->switchIO (0 );
1260+ }
12701261
1271- signalChain->addChildElement (createNodeXml (editor, insertionPt));
1272- currentProcessor->saveOrder = saveOrder;
1273- allProcessors.addIfNotAlreadyThere (currentProcessor);
1262+ // create a new XML element
1263+ signalChain->addChildElement (createNodeXml (processor));
1264+ processor->saveOrder = saveOrder;
1265+ allProcessors.addIfNotAlreadyThere (processor);
12741266 saveOrder++;
12751267
12761268 }
12771269 else
12781270 {
1279- std::cout << " Processor already saved as number " << currentProcessor->saveOrder << std::endl;
1280- }
1281-
1282- if (moveForward)
1283- {
1284- std::cout << " Moving forward along signal chain." << std::endl;
1285- nextProcessor = currentProcessor->getDestNode ();
1286- }
1287- else
1288- {
1289- std::cout << " Moving backward along signal chain." << std::endl;
1290- nextProcessor = currentProcessor->getSourceNode ();
1271+ std::cout << " Processor already saved as number " << processor->saveOrder << std::endl;
12911272 }
12921273
1274+ // continue until the end of the chain
1275+ std::cout << " Moving forward along signal chain." << std::endl;
1276+ processor = processor->getDestNode ();
12931277
1294- if (nextProcessor != 0 ) // continue until the end of the chain
1278+ if (processor == nullptr )
12951279 {
1296-
1297- editor = (GenericEditor*) nextProcessor->getEditor ();
1298-
1299- if ((nextProcessor->isSplitter ())// || nextProcessor->isMerger())
1300- && nextProcessor->saveOrder < 0 )
1301- {
1302- splitPoints.add (nextProcessor);
1303-
1304- nextProcessor->switchIO (0 );
1305- }
1306-
1307- }
1308- else
1309- {
1310-
1311- std::cout << " No processor found." << std::endl;
1312-
13131280 if (splitPoints.size () > 0 )
13141281 {
1282+ std::cout << " Going back to first unswitched splitter." << std::endl;
13151283
1316- nextProcessor = splitPoints.getFirst ();
1284+ processor = splitPoints.getFirst ();
13171285 splitPoints.remove (0 );
13181286
1319- nextProcessor->switchIO (1 );
1320- signalChain->addChildElement (switchNodeXml (nextProcessor));
1321-
1322- if (nextProcessor->isMerger ())
1323- {
1324- insertionPt = 0 ;
1325- moveForward = false ;
1326- }
1327- else
1328- {
1329- insertionPt = 1 ;
1330- moveForward = true ;
1331- }
1332-
1333- editor = nextProcessor->getEditor ();
1334-
1287+ processor->switchIO (1 );
1288+ signalChain->addChildElement (switchNodeXml (processor));
13351289 }
13361290 else
13371291 {
1338-
13391292 std::cout << " End of chain." << std::endl;
1340-
1341- editor = 0 ;
13421293 }
13431294 }
1344-
1345- // insertionPt++;
13461295 }
13471296
13481297 xml->addChildElement (signalChain);
0 commit comments