History

fix require by queueing content requests

Thijs Wenker committed 8 years ago

Commit ba8d4451 parent db884672 files · +24 −1Browse files

Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 2 files). Show all

Unified · Split

libraries/script-engine/src/ScriptEngine.cpp+14−1
@@ -219,6 +219,19 @@ ScriptEngine::ScriptEngine(Context context, const QString& scriptContents, const · 218 unmodified lines
219219 }
220220 logException(output);
221221 });
222+
223+ if (_type == Type::ENTITY_CLIENT || _type == Type::ENTITY_SERVER) {
224+ QObject::connect(this, &ScriptEngine::update, this, [this]() {
225+ // process pending entity script content
226+ if (_contentAvailableQueue.size()) {
227+ auto pending = _contentAvailableQueue.values().toStdList();
228+ _contentAvailableQueue.clear();
229+ for (auto& args : pending) {
230+ entityScriptContentAvailable(args.entityID, args.scriptOrURL, args.contents, args.isURL, args.success, args.status);
231+ }
232+ }
233+ });
234+ }
222235 }
223236
224237 QString ScriptEngine::getContext() const {
@@ -2181,7 +2194,7 @@ void ScriptEngine::loadEntityScript(const EntityItemID& entityID, const QString& · 1956 unmodified lines
21812194 qCDebug(scriptengine) << "loadEntityScript.contentAvailable" << status << QUrl(url).fileName() << entityID.toString();
21822195 #endif
21832196 if (!isStopping() && _entityScripts.contains(entityID)) {
2184− entityScriptContentAvailable(entityID, url, contents, isURL, success, status);
2197+ _contentAvailableQueue[entityID] = { entityID, url, contents, isURL, success, status };
21852198 } else {
21862199 #ifdef DEBUG_ENTITY_STATES
21872200 qCDebug(scriptengine) << "loadEntityScript.contentAvailable -- aborting";