Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 3 files). Show all
Unified · Split
| @@ -1200,6 +1200,37 @@ void ScriptEngine::callEntityScriptMethod(const EntityItemID& entityID, const QS · 1199 unmodified lines | |||
| 1200 | } | 1200 | } |
| 1201 | } | 1201 | } |
| 1202 | 1202 | ||
| 1203 | void ScriptEngine::callEntityScriptMethod(const EntityItemID& entityID, const QString& methodName, const QStringList& params) { | ||
| 1204 | if (QThread::currentThread() != thread()) { | ||
| 1205 | #ifdef THREAD_DEBUGGING | ||
| 1206 | qDebug() << "*** WARNING *** ScriptEngine::callEntityScriptMethod() called on wrong thread [" << QThread::currentThread() << "], invoking on correct thread [" << thread() << "] " | ||
| 1207 | "entityID:" << entityID << "methodName:" << methodName; | ||
| 1208 | #endif | ||
| 1209 | |||
| 1210 | QMetaObject::invokeMethod(this, "callEntityScriptMethod", | ||
| 1211 | Q_ARG(const EntityItemID&, entityID), | ||
| 1212 | Q_ARG(const QString&, methodName), | ||
| 1213 | Q_ARG(const QStringList&, params)); | ||
| 1214 | return; | ||
| 1215 | } | ||
| 1216 | #ifdef THREAD_DEBUGGING | ||
| 1217 | qDebug() << "ScriptEngine::callEntityScriptMethod() called on correct thread [" << thread() << "] " | ||
| 1218 | "entityID:" << entityID << "methodName:" << methodName; | ||
| 1219 | #endif | ||
| 1220 | |||
| 1221 | refreshFileScript(entityID); | ||
| 1222 | if (_entityScripts.contains(entityID)) { | ||
| 1223 | EntityScriptDetails details = _entityScripts[entityID]; | ||
| 1224 | QScriptValue entityScript = details.scriptObject; // previously loaded | ||
| 1225 | if (entityScript.property(methodName).isFunction()) { | ||
| 1226 | QScriptValueList args; | ||
| 1227 | args << entityID.toScriptValue(this); | ||
| 1228 | entityScript.property(methodName).call(entityScript, args); | ||
| 1229 | } | ||
| 1230 | |||
| 1231 | } | ||
| 1232 | } | ||
| 1233 | |||
| 1203 | void ScriptEngine::callEntityScriptMethod(const EntityItemID& entityID, const QString& methodName, const MouseEvent& event) { | 1234 | void ScriptEngine::callEntityScriptMethod(const EntityItemID& entityID, const QString& methodName, const MouseEvent& event) { |
| 1204 | if (QThread::currentThread() != thread()) { | 1235 | if (QThread::currentThread() != thread()) { |
| 1205 | #ifdef THREAD_DEBUGGING | 1236 | #ifdef THREAD_DEBUGGING |