From ac888733f5b3d1f2f96f03cf18d852e28bcbf56a Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Sun, 2 Oct 2016 21:18:33 -0700 Subject: [PATCH 1/3] Add setMapping to AssetScriptingInterface --- .../src/AssetScriptingInterface.cpp | 17 ++++++++++++++++- .../script-engine/src/AssetScriptingInterface.h | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/libraries/script-engine/src/AssetScriptingInterface.cpp b/libraries/script-engine/src/AssetScriptingInterface.cpp index 80cd30a8b6..f3944f3ea7 100644 --- a/libraries/script-engine/src/AssetScriptingInterface.cpp +++ b/libraries/script-engine/src/AssetScriptingInterface.cpp @@ -31,13 +31,28 @@ void AssetScriptingInterface::uploadData(QString data, QScriptValue callback) { QObject::connect(upload, &AssetUpload::finished, this, [this, callback](AssetUpload* upload, const QString& hash) mutable { if (callback.isFunction()) { QString url = "atp:" + hash; - QScriptValueList args { url }; + QScriptValueList args { url, hash }; callback.call(_engine->currentContext()->thisObject(), args); } + upload->deleteLater(); }); upload->start(); } +void AssetScriptingInterface::setMapping(QString path, QString hash, QScriptValue callback) { + auto setMappingRequest = DependencyManager::get()->createSetMappingRequest(path, hash); + + QObject::connect(setMappingRequest, &SetMappingRequest::finished, this, [this, callback](SetMappingRequest* request) mutable { + if (callback.isFunction()) { + QScriptValueList args { }; + callback.call(_engine->currentContext()->thisObject(), args); + } + request->deleteLater(); + }); + setMappingRequest->start(); +} + + void AssetScriptingInterface::downloadData(QString urlString, QScriptValue callback) { const QString ATP_SCHEME { "atp:" }; diff --git a/libraries/script-engine/src/AssetScriptingInterface.h b/libraries/script-engine/src/AssetScriptingInterface.h index 2c2c596e09..85746ad36e 100644 --- a/libraries/script-engine/src/AssetScriptingInterface.h +++ b/libraries/script-engine/src/AssetScriptingInterface.h @@ -26,6 +26,7 @@ public: Q_INVOKABLE void uploadData(QString data, QScriptValue callback); Q_INVOKABLE void downloadData(QString url, QScriptValue downloadComplete); + Q_INVOKABLE void setMapping(QString path, QString hash, QScriptValue callback); protected: QSet _pendingRequests; From 7d491c2b1e7d191f3ed3cfacc88df31a8a9fefa0 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Sun, 2 Oct 2016 21:19:03 -0700 Subject: [PATCH 2/3] Fix ScriptEngine not moving AssetScriptingInterface to correct thread --- libraries/script-engine/src/ScriptEngine.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 160ad77197..6e6563d022 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -143,6 +143,7 @@ ScriptEngine::ScriptEngine(const QString& scriptContents, const QString& fileNam _fileNameString(fileNameString), _arrayBufferClass(new ArrayBufferClass(this)) { + _assetScriptingInterface.moveToThread(thread()); DependencyManager::get()->addScriptEngine(this); connect(this, &QScriptEngine::signalHandlerException, this, [this](const QScriptValue& exception) { From 2a18c7a297ed1af3553fa727abc0aaf6a440a522 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Sat, 9 Jul 2016 04:16:12 -0700 Subject: [PATCH 3/3] Remove forcefully moving AssetScriptingInterface to ScriptEngine thread --- libraries/script-engine/src/ScriptEngine.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 6e6563d022..160ad77197 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -143,7 +143,6 @@ ScriptEngine::ScriptEngine(const QString& scriptContents, const QString& fileNam _fileNameString(fileNameString), _arrayBufferClass(new ArrayBufferClass(this)) { - _assetScriptingInterface.moveToThread(thread()); DependencyManager::get()->addScriptEngine(this); connect(this, &QScriptEngine::signalHandlerException, this, [this](const QScriptValue& exception) {