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 | QObject* scriptsModel(); | 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 | void ScriptEngines::registerScriptInitializer(ScriptInitializer initializer) { | 149 | void ScriptEngines::registerScriptInitializer(ScriptInitializer initializer) { |
| 136 | _scriptInitializers.push_back(initializer); | 150 | _scriptInitializers.push_back(initializer); |
| 137 | } | 151 | } |
| @@ -520,6 +534,17 @@ void ScriptEngines::onScriptEngineLoaded(const QString& rawScriptURL) { · 382 unmodified lines | |||
| 520 | emit scriptCountChanged(); | 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 | void ScriptEngines::launchScriptEngine(ScriptEnginePointer scriptEngine) { | 548 | void ScriptEngines::launchScriptEngine(ScriptEnginePointer scriptEngine) { |
| 524 | connect(scriptEngine.data(), &ScriptEngine::finished, this, &ScriptEngines::onScriptFinished, Qt::DirectConnection); | 549 | connect(scriptEngine.data(), &ScriptEngine::finished, this, &ScriptEngines::onScriptFinished, Qt::DirectConnection); |
| 525 | connect(scriptEngine.data(), &ScriptEngine::loadScript, [&](const QString& scriptName, bool userLoaded) { | 550 | connect(scriptEngine.data(), &ScriptEngine::loadScript, [&](const QString& scriptName, bool userLoaded) { |
| @@ -529,10 +554,7 @@ void ScriptEngines::launchScriptEngine(ScriptEnginePointer scriptEngine) { · 3 unmodified lines | |||
| 529 | loadScript(scriptName, userLoaded, false, false, true); | 554 | loadScript(scriptName, userLoaded, false, false, true); |
| 530 | }); | 555 | }); |
| 531 | 556 | ||
| 532 | // register our application services and set it off on its own thread | 557 | runScriptInitializers(scriptEngine); |
| 533 | for (auto initializer : _scriptInitializers) { | ||
| 534 | initializer(scriptEngine); | ||
| 535 | } | ||
| 536 | 558 | ||
| 537 | // FIXME disabling 'shift key' debugging for now. If you start up the application with | 559 | // FIXME disabling 'shift key' debugging for now. If you start up the application with |
| 538 | // the shift key held down, it triggers a deadlock because of script interfaces running | 560 | // the shift key held down, it triggers a deadlock because of script interfaces running |