History

trying again on script loading changes

Seth Alves committed 10 years ago

Commit 35affe21 parent 0f288244 files · +67 −36Browse files

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

Unified · Split

libraries/script-engine/src/ScriptEngines.cpp+51−27
@@ -44,16 +44,21 @@ ScriptEngines::ScriptEngines() · 43 unmodified lines
4444
4545 QUrl normalizeScriptURL(const QUrl& rawScriptURL) {
4646 if (rawScriptURL.scheme() == "file") {
47+ qDebug() << "+";
48+ qDebug() << "+";
49+ qDebug() << "+";
50+
4751 QUrl fullNormal = rawScriptURL;
4852 QUrl defaultScriptLoc = defaultScriptsLocation();
4953
50− #ifdef Q_OS_LINUX
51− #else
52− // Force lowercase on file scripts because of drive letter weirdness.
53− if (rawScriptURL.isLocalFile()) {
54− fullNormal.setPath(fullNormal.path().toLower());
55− }
56− #endif
54+ // #ifdef Q_OS_LINUX
55+ // #else
56+ // // Force lowercase on file scripts because of drive letter weirdness.
57+ // if (rawScriptURL.isLocalFile()) {
58+ // fullNormal.setPath(fullNormal.path()); // .toLower());
59+ // }
60+ // #endif
61+
5762 // if this url is something "beneath" the default script url, replace the local path with ~
5863 if (fullNormal.scheme() == defaultScriptLoc.scheme() &&
5964 fullNormal.host() == defaultScriptLoc.host() &&
@@ -69,21 +74,37 @@ QUrl normalizeScriptURL(const QUrl& rawScriptURL) { · 9 unmodified lines
6974 }
7075 }
7176
72−QUrl expandScriptUrl(const QUrl& normalizedScriptURL) {
77+QUrl expandScriptUrl(const QUrl& rawScriptURL) {
78+ QUrl normalizedScriptURL = normalizeScriptURL(rawScriptURL);
79+
80+ qDebug() << "expandScriptUrl in = " << rawScriptURL;
81+
7382 if (normalizedScriptURL.scheme() == "http" ||
7483 normalizedScriptURL.scheme() == "https" ||
7584 normalizedScriptURL.scheme() == "atp") {
85+
86+ qDebug() << "expandScriptUrl out(net) = " << normalizedScriptURL;
87+
7688 return normalizedScriptURL;
7789 } else if (normalizedScriptURL.scheme() == "file") {
7890 if (normalizedScriptURL.path().startsWith("/~/")) {
7991 QUrl url = normalizedScriptURL;
92+ qDebug() << "in expand, normalizedScriptURL = " << normalizedScriptURL;
8093 QStringList splitPath = url.path().split("/");
8194 QUrl defaultScriptsLoc = defaultScriptsLocation();
8295 url.setPath(defaultScriptsLoc.path() + "/" + splitPath.mid(2).join("/")); // 2 to skip the slashes in /~/
96+
97+ qDebug() << "expandScriptUrl out(file 0) = " << url;
98+
8399 return url;
84100 }
101+
102+ qDebug() << "expandScriptUrl out(file 1) = " << normalizedScriptURL;
103+
85104 return normalizedScriptURL;
86105 } else {
106+ qDebug() << "expandScriptUrl out(bad scheme) = " << normalizedScriptURL;
107+
87108 return QUrl("");
88109 }
89110 }
@@ -230,7 +251,7 @@ QVariantList ScriptEngines::getRunning() { · 140 unmodified lines
230251 }
231252 QVariantMap resultNode;
232253 resultNode.insert("name", runningScriptURL.fileName());
233− QUrl displayURL = expandScriptUrl(QUrl(runningScriptURL));
254+ QUrl displayURL = expandScriptUrl(runningScriptURL);
234255 QString displayURLString;
235256 if (displayURL.isLocalFile()) {
236257 displayURLString = displayURL.toLocalFile();
@@ -268,7 +289,7 @@ void ScriptEngines::loadScripts() { · 31 unmodified lines
268289 loadDefaultScripts();
269290 _firstRun.set(false);
270291 return;
271− }
292+ }
272293
273294 // loads all saved scripts
274295 Settings settings;
@@ -310,7 +331,12 @@ void ScriptEngines::saveScripts() { · 35 unmodified lines
310331
311332 QStringList ScriptEngines::getRunningScripts() {
312333 QReadLocker lock(&_scriptEnginesHashLock);
313− return _scriptEnginesHash.keys();
334+ QList<QUrl> urls = _scriptEnginesHash.keys();
335+ QStringList result;
336+ for (auto url : urls) {
337+ result.append(url.toString());
338+ }
339+ return result;
314340 }
315341
316342 void ScriptEngines::stopAllScripts(bool restart) {
@@ -318,7 +344,7 @@ void ScriptEngines::stopAllScripts(bool restart) { · 1 unmodified line
318344 if (restart) {
319345 // Delete all running scripts from cache so that they are re-downloaded when they are restarted
320346 auto scriptCache = DependencyManager::get<ScriptCache>();
321− for (QHash<QString, ScriptEngine*>::const_iterator it = _scriptEnginesHash.constBegin();
347+ for (QHash<QUrl, ScriptEngine*>::const_iterator it = _scriptEnginesHash.constBegin();
322348 it != _scriptEnginesHash.constEnd(); it++) {
323349 if (!it.value()->isFinished()) {
324350 scriptCache->deleteScript(it.key());
@@ -327,7 +353,7 @@ void ScriptEngines::stopAllScripts(bool restart) { · 2 unmodified lines
327353 }
328354
329355 // Stop and possibly restart all currently running scripts
330− for (QHash<QString, ScriptEngine*>::const_iterator it = _scriptEnginesHash.constBegin();
356+ for (QHash<QUrl, ScriptEngine*>::const_iterator it = _scriptEnginesHash.constBegin();
331357 it != _scriptEnginesHash.constEnd(); it++) {
332358 if (it.value()->isFinished()) {
333359 continue;
@@ -350,21 +376,20 @@ bool ScriptEngines::stopScript(const QString& rawScriptURL, bool restart) { · 16 unmodified lines
350376 if (!scriptURL.isValid()) {
351377 scriptURL = normalizeScriptURL(QUrl::fromLocalFile(rawScriptURL));
352378 }
353− const QString scriptURLString = scriptURL.toString();
354379
355380 QReadLocker lock(&_scriptEnginesHashLock);
356− if (_scriptEnginesHash.contains(scriptURLString)) {
357− ScriptEngine* scriptEngine = _scriptEnginesHash[scriptURLString];
381+ if (_scriptEnginesHash.contains(scriptURL)) {
382+ ScriptEngine* scriptEngine = _scriptEnginesHash[scriptURL];
358383 if (restart) {
359384 auto scriptCache = DependencyManager::get<ScriptCache>();
360− scriptCache->deleteScript(QUrl(scriptURLString));
385+ scriptCache->deleteScript(scriptURL);
361386 connect(scriptEngine, &ScriptEngine::finished, this, [this](QString scriptName, ScriptEngine* engine) {
362387 reloadScript(scriptName);
363388 });
364389 }
365390 scriptEngine->stop();
366391 stoppedScript = true;
367− qCDebug(scriptengine) << "stopping script..." << scriptURLString;
392+ qCDebug(scriptengine) << "stopping script..." << scriptURL;
368393 }
369394 }
370395 return stoppedScript;
@@ -379,7 +404,7 @@ void ScriptEngines::setScriptsLocation(const QString& scriptsLocation) { · 8 unmodified lines
379404 _scriptsModel.updateScriptsLocation(scriptsLocation);
380405 }
381406
382−void ScriptEngines::reloadAllScripts() {
407+void ScriptEngines::reloadAllScripts() {
383408 DependencyManager::get<ScriptCache>()->clearCache();
384409 emit scriptsReloading();
385410 stopAllScripts(true);
@@ -409,7 +434,7 @@ ScriptEngine* ScriptEngines::loadScript(const QUrl& scriptFilename, bool isUserL · 23 unmodified lines
409434 scriptUrl = normalizeScriptURL(scriptFilename);
410435 }
411436
412− auto scriptEngine = getScriptEngine(scriptUrl.toString());
437+ auto scriptEngine = getScriptEngine(scriptUrl);
413438 if (scriptEngine) {
414439 return scriptEngine;
415440 }
@@ -435,12 +460,12 @@ ScriptEngine* ScriptEngines::loadScript(const QUrl& scriptFilename, bool isUserL · 19 unmodified lines
435460 return scriptEngine;
436461 }
437462
438−ScriptEngine* ScriptEngines::getScriptEngine(const QString& rawScriptURL) {
463+ScriptEngine* ScriptEngines::getScriptEngine(const QUrl& rawScriptURL) {
439464 ScriptEngine* result = nullptr;
440465 {
441466 QReadLocker lock(&_scriptEnginesHashLock);
442− const QString scriptURLString = normalizeScriptURL(QUrl(rawScriptURL)).toString();
443− auto it = _scriptEnginesHash.find(scriptURLString);
467+ const QUrl scriptURL = normalizeScriptURL(rawScriptURL);
468+ auto it = _scriptEnginesHash.find(scriptURL);
444469 if (it != _scriptEnginesHash.end()) {
445470 result = it.value();
446471 }
@@ -459,8 +484,7 @@ void ScriptEngines::onScriptEngineLoaded(const QString& rawScriptURL) { · 12 unmodified lines
459484 QWriteLocker lock(&_scriptEnginesHashLock);
460485 QUrl url = QUrl(rawScriptURL);
461486 QUrl normalized = normalizeScriptURL(url);
462− const QString scriptURLString = normalized.toString();
463− _scriptEnginesHash.insertMulti(scriptURLString, scriptEngine);
487+ _scriptEnginesHash.insertMulti(normalized, scriptEngine);
464488 }
465489 emit scriptCountChanged();
466490 }
@@ -486,8 +510,8 @@ void ScriptEngines::onScriptFinished(const QString& rawScriptURL, ScriptEngine* · 19 unmodified lines
486510 bool removed = false;
487511 {
488512 QWriteLocker lock(&_scriptEnginesHashLock);
489− const QString scriptURLString = normalizeScriptURL(QUrl(rawScriptURL)).toString();
490− for (auto it = _scriptEnginesHash.find(scriptURLString); it != _scriptEnginesHash.end(); ++it) {
513+ const QUrl scriptURL = normalizeScriptURL(QUrl(rawScriptURL));
514+ for (auto it = _scriptEnginesHash.find(scriptURL); it != _scriptEnginesHash.end(); ++it) {
491515 if (it.value() == engine) {
492516 _scriptEnginesHash.erase(it);
493517 removed = true;