Showing the changes to libraries/script-engine/src/ScriptEngines.cpp (1 of 27 files). Show all
Unified · Split
| @@ -132,6 +132,20 @@ QUrl expandScriptUrl(const QUrl& rawScriptURL) { · 131 unmodified lines | ||
| 132 | 132 | |
| 133 | 133 | QObject* scriptsModel(); |
| 134 | 134 | |
| 135 | +bool NativeScriptInitializers::registerNativeScriptInitializer(NativeScriptInitializer initializer) { | |
| 136 | + return registerScriptInitializer([=](ScriptEnginePointer engine) { | |
| 137 | + initializer(qobject_cast<QScriptEngine*>(engine.data())); | |
| 138 | + }); | |
| 139 | +} | |
| 140 | + | |
| 141 | +bool NativeScriptInitializers::registerScriptInitializer(ScriptInitializer initializer) { | |
| 142 | + if (auto scriptEngines = DependencyManager::get<ScriptEngines>().data()) { | |
| 143 | + scriptEngines->registerScriptInitializer(initializer); | |
| 144 | + return true; | |
| 145 | + } | |
| 146 | + return false; | |
| 147 | +} | |
| 148 | + | |
| 135 | 149 | void ScriptEngines::registerScriptInitializer(ScriptInitializer initializer) { |
| 136 | 150 | _scriptInitializers.push_back(initializer); |
| 137 | 151 | } |
| @@ -520,6 +534,17 @@ void ScriptEngines::onScriptEngineLoaded(const QString& rawScriptURL) { · 382 unmodified lines | ||
| 520 | 534 | emit scriptCountChanged(); |
| 521 | 535 | } |
| 522 | 536 | |
| 537 | +int ScriptEngines::runScriptInitializers(ScriptEnginePointer scriptEngine) { | |
| 538 | + // register our application services and set it off on its own thread | |
| 539 | + int ii=0; | |
| 540 | + for (auto initializer : _scriptInitializers) { | |
| 541 | + ii++; | |
| 542 | + qDebug() << "initializer" << ii; | |
| 543 | + initializer(scriptEngine); | |
| 544 | + } | |
| 545 | + return ii; | |
| 546 | +} | |
| 547 | + | |
| 523 | 548 | void ScriptEngines::launchScriptEngine(ScriptEnginePointer scriptEngine) { |
| 524 | 549 | connect(scriptEngine.data(), &ScriptEngine::finished, this, &ScriptEngines::onScriptFinished, Qt::DirectConnection); |
| 525 | 550 | connect(scriptEngine.data(), &ScriptEngine::loadScript, [&](const QString& scriptName, bool userLoaded) { |
| @@ -529,10 +554,7 @@ void ScriptEngines::launchScriptEngine(ScriptEnginePointer scriptEngine) { · 3 unmodified lines | ||
| 529 | 554 | loadScript(scriptName, userLoaded, false, false, true); |
| 530 | 555 | }); |
| 531 | 556 | |
| 532 | − // register our application services and set it off on its own thread | |
| 533 | − for (auto initializer : _scriptInitializers) { | |
| 534 | − initializer(scriptEngine); | |
| 535 | − } | |
| 557 | + runScriptInitializers(scriptEngine); | |
| 536 | 558 | |
| 537 | 559 | // FIXME disabling 'shift key' debugging for now. If you start up the application with |
| 538 | 560 | // the shift key held down, it triggers a deadlock because of script interfaces running |