mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
fix require by queueing content requests
This commit is contained in:
parent
db8846796f
commit
ba8d445444
2 changed files with 24 additions and 1 deletions
|
@ -219,6 +219,19 @@ ScriptEngine::ScriptEngine(Context context, const QString& scriptContents, const
|
||||||
}
|
}
|
||||||
logException(output);
|
logException(output);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (_type == Type::ENTITY_CLIENT || _type == Type::ENTITY_SERVER) {
|
||||||
|
QObject::connect(this, &ScriptEngine::update, this, [this]() {
|
||||||
|
// process pending entity script content
|
||||||
|
if (_contentAvailableQueue.size()) {
|
||||||
|
auto pending = _contentAvailableQueue.values().toStdList();
|
||||||
|
_contentAvailableQueue.clear();
|
||||||
|
for (auto& args : pending) {
|
||||||
|
entityScriptContentAvailable(args.entityID, args.scriptOrURL, args.contents, args.isURL, args.success, args.status);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ScriptEngine::getContext() const {
|
QString ScriptEngine::getContext() const {
|
||||||
|
@ -2181,7 +2194,7 @@ void ScriptEngine::loadEntityScript(const EntityItemID& entityID, const QString&
|
||||||
qCDebug(scriptengine) << "loadEntityScript.contentAvailable" << status << QUrl(url).fileName() << entityID.toString();
|
qCDebug(scriptengine) << "loadEntityScript.contentAvailable" << status << QUrl(url).fileName() << entityID.toString();
|
||||||
#endif
|
#endif
|
||||||
if (!isStopping() && _entityScripts.contains(entityID)) {
|
if (!isStopping() && _entityScripts.contains(entityID)) {
|
||||||
entityScriptContentAvailable(entityID, url, contents, isURL, success, status);
|
_contentAvailableQueue[entityID] = { entityID, url, contents, isURL, success, status };
|
||||||
} else {
|
} else {
|
||||||
#ifdef DEBUG_ENTITY_STATES
|
#ifdef DEBUG_ENTITY_STATES
|
||||||
qCDebug(scriptengine) << "loadEntityScript.contentAvailable -- aborting";
|
qCDebug(scriptengine) << "loadEntityScript.contentAvailable -- aborting";
|
||||||
|
|
|
@ -71,6 +71,15 @@ public:
|
||||||
//bool forceRedownload;
|
//bool forceRedownload;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct EntityScriptContentAvailable {
|
||||||
|
EntityItemID entityID;
|
||||||
|
QString scriptOrURL;
|
||||||
|
QString contents;
|
||||||
|
bool isURL;
|
||||||
|
bool success;
|
||||||
|
QString status;
|
||||||
|
};
|
||||||
|
|
||||||
typedef QList<CallbackData> CallbackList;
|
typedef QList<CallbackData> CallbackList;
|
||||||
typedef QHash<QString, CallbackList> RegisteredEventHandlers;
|
typedef QHash<QString, CallbackList> RegisteredEventHandlers;
|
||||||
|
|
||||||
|
@ -762,6 +771,7 @@ protected:
|
||||||
QHash<EntityItemID, EntityScriptDetails> _entityScripts;
|
QHash<EntityItemID, EntityScriptDetails> _entityScripts;
|
||||||
QHash<QString, EntityItemID> _occupiedScriptURLs;
|
QHash<QString, EntityItemID> _occupiedScriptURLs;
|
||||||
QList<DeferredLoadEntity> _deferredEntityLoads;
|
QList<DeferredLoadEntity> _deferredEntityLoads;
|
||||||
|
QMap<EntityItemID, EntityScriptContentAvailable> _contentAvailableQueue;
|
||||||
|
|
||||||
bool _isThreaded { false };
|
bool _isThreaded { false };
|
||||||
QScriptEngineDebugger* _debugger { nullptr };
|
QScriptEngineDebugger* _debugger { nullptr };
|
||||||
|
|
Loading…
Reference in a new issue