From 99ec2aec4a8c63a4d59525fe3e718562d9ec6ca5 Mon Sep 17 00:00:00 2001 From: vladest Date: Mon, 23 Oct 2017 20:44:13 +0200 Subject: [PATCH 1/4] Prevent scripts log window open several times --- interface/src/Application.cpp | 18 ++++++++++++++---- interface/src/Application.h | 4 ++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 0b99ce5004..d03ff8f1da 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5800,6 +5800,7 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEnginePointe ClipboardScriptingInterface* clipboardScriptable = new ClipboardScriptingInterface(); scriptEngine->registerGlobalObject("Clipboard", clipboardScriptable); connect(scriptEngine.data(), &ScriptEngine::finished, clipboardScriptable, &ClipboardScriptingInterface::deleteLater); + connect(scriptEngine.data(), &ScriptEngine::finished, this, &Application::cleanupRunningScripts); scriptEngine->registerGlobalObject("Overlays", &_overlays); qScriptRegisterMetaType(scriptEngine.data(), OverlayPropertyResultToScriptValue, OverlayPropertyResultFromScriptValue); @@ -6213,10 +6214,15 @@ void Application::showDialog(const QUrl& widgetUrl, const QUrl& tabletUrl, const } void Application::showScriptLogs() { - auto scriptEngines = DependencyManager::get(); - QUrl defaultScriptsLoc = PathUtils::defaultScriptsLocation(); - defaultScriptsLoc.setPath(defaultScriptsLoc.path() + "developer/debugging/debugWindow.js"); - scriptEngines->loadScript(defaultScriptsLoc.toString()); + if (!_runningScripts.contains("debugWindow.js")) { + auto scriptEngines = DependencyManager::get(); + QUrl defaultScriptsLoc = PathUtils::defaultScriptsLocation(); + defaultScriptsLoc.setPath(defaultScriptsLoc.path() + "developer/debugging/debugWindow.js"); + ScriptEnginePointer sePointer = scriptEngines->loadScript(defaultScriptsLoc.toString()); + _runningScripts["debugWindow.js"] = sePointer; + } else { + qWarning() << "Scripts Log already running"; + } } void Application::showAssetServerWidget(QString filePath) { @@ -7311,6 +7317,10 @@ void Application::switchDisplayMode() { _previousHMDWornStatus = currentHMDWornStatus; } +void Application::cleanupRunningScripts(const QString &fileNameString, ScriptEnginePointer) { + _runningScripts.remove(QUrl(fileNameString).fileName()); +} + void Application::startHMDStandBySession() { _autoSwitchDisplayModeSupportedHMDPlugin->startStandBySession(); } diff --git a/interface/src/Application.h b/interface/src/Application.h index b6c09bbd87..65b6dd2c9e 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -451,6 +451,8 @@ private slots: void handleSandboxStatus(QNetworkReply* reply); void switchDisplayMode(); + + void cleanupRunningScripts(const QString& fileNameString, ScriptEnginePointer); private: static void initDisplay(); void init(); @@ -720,5 +722,7 @@ private: std::atomic _pendingIdleEvent { false }; std::atomic _pendingRenderEvent { false }; + + QHash _runningScripts; }; #endif // hifi_Application_h From c55f93813237d2a3010237b0e5dcc6ded12f1f82 Mon Sep 17 00:00:00 2001 From: vladest Date: Tue, 24 Oct 2017 22:09:00 +0200 Subject: [PATCH 2/4] Code style fix --- interface/src/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index d03ff8f1da..05ec8a5df1 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7317,7 +7317,7 @@ void Application::switchDisplayMode() { _previousHMDWornStatus = currentHMDWornStatus; } -void Application::cleanupRunningScripts(const QString &fileNameString, ScriptEnginePointer) { +void Application::cleanupRunningScripts(const QString& fileNameString, ScriptEnginePointer) { _runningScripts.remove(QUrl(fileNameString).fileName()); } From 5e32298183caa1cc7ef8f1a05d372d545cf6bef8 Mon Sep 17 00:00:00 2001 From: vladest Date: Wed, 8 Nov 2017 18:43:59 +0100 Subject: [PATCH 3/4] Rework as script=only solution --- interface/src/Application.cpp | 18 ++++-------------- interface/src/Application.h | 4 ---- scripts/developer/debugging/debugWindow.js | 10 ++++++++++ 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 13765e41d3..4f051697ad 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5781,7 +5781,6 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEnginePointe ClipboardScriptingInterface* clipboardScriptable = new ClipboardScriptingInterface(); scriptEngine->registerGlobalObject("Clipboard", clipboardScriptable); connect(scriptEngine.data(), &ScriptEngine::finished, clipboardScriptable, &ClipboardScriptingInterface::deleteLater); - connect(scriptEngine.data(), &ScriptEngine::finished, this, &Application::cleanupRunningScripts); scriptEngine->registerGlobalObject("Overlays", &_overlays); qScriptRegisterMetaType(scriptEngine.data(), OverlayPropertyResultToScriptValue, OverlayPropertyResultFromScriptValue); @@ -6195,15 +6194,10 @@ void Application::showDialog(const QUrl& widgetUrl, const QUrl& tabletUrl, const } void Application::showScriptLogs() { - if (!_runningScripts.contains("debugWindow.js")) { - auto scriptEngines = DependencyManager::get(); - QUrl defaultScriptsLoc = PathUtils::defaultScriptsLocation(); - defaultScriptsLoc.setPath(defaultScriptsLoc.path() + "developer/debugging/debugWindow.js"); - ScriptEnginePointer sePointer = scriptEngines->loadScript(defaultScriptsLoc.toString()); - _runningScripts["debugWindow.js"] = sePointer; - } else { - qWarning() << "Scripts Log already running"; - } + auto scriptEngines = DependencyManager::get(); + QUrl defaultScriptsLoc = PathUtils::defaultScriptsLocation(); + defaultScriptsLoc.setPath(defaultScriptsLoc.path() + "developer/debugging/debugWindow.js"); + scriptEngines->loadScript(defaultScriptsLoc.toString()); } void Application::showAssetServerWidget(QString filePath) { @@ -7302,10 +7296,6 @@ void Application::switchDisplayMode() { _previousHMDWornStatus = currentHMDWornStatus; } -void Application::cleanupRunningScripts(const QString& fileNameString, ScriptEnginePointer) { - _runningScripts.remove(QUrl(fileNameString).fileName()); -} - void Application::startHMDStandBySession() { _autoSwitchDisplayModeSupportedHMDPlugin->startStandBySession(); } diff --git a/interface/src/Application.h b/interface/src/Application.h index c651ea6d5b..fbfb3979be 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -440,8 +440,6 @@ private slots: void handleSandboxStatus(QNetworkReply* reply); void switchDisplayMode(); - - void cleanupRunningScripts(const QString& fileNameString, ScriptEnginePointer); private: static void initDisplay(); void init(); @@ -712,7 +710,5 @@ private: std::atomic _pendingIdleEvent { false }; std::atomic _pendingRenderEvent { false }; - - QHash _runningScripts; }; #endif // hifi_Application_h diff --git a/scripts/developer/debugging/debugWindow.js b/scripts/developer/debugging/debugWindow.js index b16739b2b8..4390cf1f77 100644 --- a/scripts/developer/debugging/debugWindow.js +++ b/scripts/developer/debugging/debugWindow.js @@ -10,13 +10,23 @@ (function() { // BEGIN LOCAL_SCOPE +//check if script already running. +var scriptData = ScriptDiscoveryService.getRunning(); +var scripts = scriptData.filter(function (datum) { return datum.name === 'debugWindow.js'; }); +if (scripts.length >= 2) { + //2nd instance of the script is too much + return; +} + // Set up the qml ui var qml = Script.resolvePath('debugWindow.qml'); + var window = new OverlayWindow({ title: 'Debug Window', source: qml, width: 400, height: 900, }); + window.setPosition(25, 50); window.closed.connect(function() { Script.stop(); }); From 02625a6e28d63c0f6fb7f488eb3b1d310a3d8703 Mon Sep 17 00:00:00 2001 From: vladest Date: Wed, 8 Nov 2017 21:53:42 +0100 Subject: [PATCH 4/4] Remove script from engine --- scripts/developer/debugging/debugWindow.js | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/developer/debugging/debugWindow.js b/scripts/developer/debugging/debugWindow.js index 4390cf1f77..068efb351b 100644 --- a/scripts/developer/debugging/debugWindow.js +++ b/scripts/developer/debugging/debugWindow.js @@ -15,6 +15,7 @@ var scriptData = ScriptDiscoveryService.getRunning(); var scripts = scriptData.filter(function (datum) { return datum.name === 'debugWindow.js'; }); if (scripts.length >= 2) { //2nd instance of the script is too much + ScriptDiscoveryService.stopScript(scripts[1].url); return; }