| 1300 | } |
| 1301 | |
| 1302 | JavascriptProcessor::SnippetResult JavascriptProcessor::compileInternal() |
| 1303 | { |
| 1304 | auto mc = dynamic_cast<Processor*>(this)->getMainController(); |
| 1305 | LockHelpers::freeToGo(mc); |
| 1306 | |
| 1307 | SUSPEND_GLOBAL_DISPATCH(mc, "compile script"); |
| 1308 | |
| 1309 | ProcessorWithScriptingContent* thisAsScriptBaseProcessor = dynamic_cast<ProcessorWithScriptingContent*>(this); |
| 1310 | |
| 1311 | |
| 1312 | |
| 1313 | ScriptingApi::Content* content = thisAsScriptBaseProcessor->getScriptingContent(); |
| 1314 | |
| 1315 | const bool saveThisContent = lastCompileWasOK && content != nullptr && !useStoredContentData; |
| 1316 | |
| 1317 | auto& uph = thisAsScriptBaseProcessor->getMainController_()->getUserPresetHandler(); |
| 1318 | |
| 1319 | bool useCustomPreset = false; |
| 1320 | |
| 1321 | if(auto asJmp = dynamic_cast<JavascriptMidiProcessor*>(this)) |
| 1322 | { |
| 1323 | useCustomPreset = asJmp->isFront() && uph.isUsingCustomDataModel(); |
| 1324 | } |
| 1325 | |
| 1326 | if (saveThisContent) |
| 1327 | { |
| 1328 | if (useCustomPreset) |
| 1329 | { |
| 1330 | if (uph.isUsingPersistentObject()) |
| 1331 | { |
| 1332 | thisAsScriptBaseProcessor->restoredContentValues = ValueTree("Content"); |
| 1333 | |
| 1334 | uph.saveStateManager(thisAsScriptBaseProcessor->restoredContentValues, UserPresetIds::CustomJSON); |
| 1335 | } |
| 1336 | } |
| 1337 | else |
| 1338 | thisAsScriptBaseProcessor->restoredContentValues = content->exportAsValueTree(); |
| 1339 | } |
| 1340 | |
| 1341 | auto thisAsProcessor = dynamic_cast<Processor*>(this); |
| 1342 | |
| 1343 | { |
| 1344 | CompileDebugLock compileLock(*this); |
| 1345 | scriptEngine->clearDebugInformation(); |
| 1346 | } |
| 1347 | |
| 1348 | content->beginInitialization(); |
| 1349 | |
| 1350 | setupApi(); |
| 1351 | |
| 1352 | content = thisAsScriptBaseProcessor->getScriptingContent(); |
| 1353 | |
| 1354 | scriptEngine->setIsInitialising(true); |
| 1355 | |
| 1356 | if (cycleReferenceCheckEnabled) |
| 1357 | scriptEngine->setUseCycleReferenceCheckForNextCompilation(); |
| 1358 | |
| 1359 | thisAsScriptBaseProcessor->allowObjectConstructors = true; |
no test coverage detected