From 5287ec1eee45fadcfa523fd2b1710f565172c305 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Sat, 5 Nov 2016 10:15:56 -0700 Subject: [PATCH 1/2] Fix includes hitting max retries locking the script up --- libraries/script-engine/src/ScriptCache.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/script-engine/src/ScriptCache.cpp b/libraries/script-engine/src/ScriptCache.cpp index 96e3d7e914..025447a5b8 100644 --- a/libraries/script-engine/src/ScriptCache.cpp +++ b/libraries/script-engine/src/ScriptCache.cpp @@ -222,6 +222,9 @@ void ScriptCache::scriptContentAvailable() { }); } else { // Dubious, but retained here because it matches the behavior before fixing the threading + + allCallbacks = scriptRequest.scriptUsers; + scriptContent = _scriptCache[url]; finished = true; qCWarning(scriptengine) << "Error loading script from URL " << url; From 1a704f8d0a570870bf405bfc1b59ca68c3ffac38 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Sat, 5 Nov 2016 10:16:35 -0700 Subject: [PATCH 2/2] Fix ScriptCacheSignalProxy not being properly cleaned up --- libraries/script-engine/src/BatchLoader.cpp | 3 ++- libraries/script-engine/src/BatchLoader.h | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/script-engine/src/BatchLoader.cpp b/libraries/script-engine/src/BatchLoader.cpp index 964807894e..d191c89f09 100644 --- a/libraries/script-engine/src/BatchLoader.cpp +++ b/libraries/script-engine/src/BatchLoader.cpp @@ -55,7 +55,8 @@ void BatchLoader::start() { // Use a proxy callback to handle the call and emit the signal in a thread-safe way. // If BatchLoader is deleted before the callback is called, the subsequent "emit" call will not do // anything. - ScriptCacheSignalProxy* proxy = new ScriptCacheSignalProxy(scriptCache.data()); + ScriptCacheSignalProxy* proxy = new ScriptCacheSignalProxy(); + connect(scriptCache.data(), &ScriptCache::destroyed, proxy, &ScriptCacheSignalProxy::deleteLater); connect(proxy, &ScriptCacheSignalProxy::contentAvailable, this, [this](const QString& url, const QString& contents, bool isURL, bool success) { if (isURL && success) { diff --git a/libraries/script-engine/src/BatchLoader.h b/libraries/script-engine/src/BatchLoader.h index a03a8d80c6..046e17ff63 100644 --- a/libraries/script-engine/src/BatchLoader.h +++ b/libraries/script-engine/src/BatchLoader.h @@ -24,7 +24,6 @@ class ScriptCacheSignalProxy : public QObject { Q_OBJECT public: - ScriptCacheSignalProxy(QObject* parent) : QObject(parent) { } void receivedContent(const QString& url, const QString& contents, bool isURL, bool success); signals: