diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index 5a01275d11..121276efcc 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -606,7 +606,7 @@ void Agent::setIsAvatar(bool isAvatar) { // start the timer _avatarQueryTimer->start(AVATAR_VIEW_PACKET_SEND_INTERVAL_MSECS); - connect(_scriptManager.data(), &ScriptManager::update, + connect(_scriptManager.get(), &ScriptManager::update, scriptableAvatar.data(), &ScriptableAvatar::update, Qt::QueuedConnection); // tell the avatarAudioTimer to start ticking @@ -642,7 +642,7 @@ void Agent::setIsAvatar(bool isAvatar) { nodeList->sendPacket(std::move(packet), *node); }); - disconnect(_scriptManager.data(), &ScriptManager::update, + disconnect(_scriptManager.get(), &ScriptManager::update, scriptableAvatar.data(), &ScriptableAvatar::update); QMetaObject::invokeMethod(&_avatarAudioTimer, "stop"); @@ -879,7 +879,7 @@ void Agent::aboutToFinish() { // drop our shared pointer to the script engine, then ask ScriptEngines to shutdown scripting // this ensures that the ScriptEngine goes down before ScriptEngines - _scriptManager.clear(); + _scriptManager.reset(); { DependencyManager::get()->shutdownScripting(); diff --git a/assignment-client/src/Agent.h b/assignment-client/src/Agent.h index 9cd9a9ebeb..efed440a8a 100644 --- a/assignment-client/src/Agent.h +++ b/assignment-client/src/Agent.h @@ -37,8 +37,8 @@ class ScriptEngine; class ScriptManager; -using ScriptEnginePointer = QSharedPointer; -using ScriptManagerPointer = QSharedPointer; +using ScriptEnginePointer = std::shared_ptr; +using ScriptManagerPointer = std::shared_ptr; class Agent : public ThreadedAssignment { Q_OBJECT diff --git a/assignment-client/src/scripts/EntityScriptServer.cpp b/assignment-client/src/scripts/EntityScriptServer.cpp index 0032c31e0a..3b8144164f 100644 --- a/assignment-client/src/scripts/EntityScriptServer.cpp +++ b/assignment-client/src/scripts/EntityScriptServer.cpp @@ -459,12 +459,12 @@ void EntityScriptServer::resetEntitiesScriptEngine() { // connect this script engines printedMessage signal to the global ScriptEngines these various messages auto scriptEngines = DependencyManager::get().data(); - connect(newManager.data(), &ScriptManager::printedMessage, scriptEngines, &ScriptEngines::onPrintedMessage); - connect(newManager.data(), &ScriptManager::errorMessage, scriptEngines, &ScriptEngines::onErrorMessage); - connect(newManager.data(), &ScriptManager::warningMessage, scriptEngines, &ScriptEngines::onWarningMessage); - connect(newManager.data(), &ScriptManager::infoMessage, scriptEngines, &ScriptEngines::onInfoMessage); + connect(newManager.get(), &ScriptManager::printedMessage, scriptEngines, &ScriptEngines::onPrintedMessage); + connect(newManager.get(), &ScriptManager::errorMessage, scriptEngines, &ScriptEngines::onErrorMessage); + connect(newManager.get(), &ScriptManager::warningMessage, scriptEngines, &ScriptEngines::onWarningMessage); + connect(newManager.get(), &ScriptManager::infoMessage, scriptEngines, &ScriptEngines::onInfoMessage); - connect(newManager.data(), &ScriptManager::update, this, [this] { + connect(newManager.get(), &ScriptManager::update, this, [this] { _entityViewer.queryOctree(); _entityViewer.getTree()->preUpdate(); _entityViewer.getTree()->update(); @@ -472,18 +472,18 @@ void EntityScriptServer::resetEntitiesScriptEngine() { scriptEngines->runScriptInitializers(newManager); newManager->runInThread(); - auto newEngineSP = qSharedPointerCast(newManager); + std::shared_ptr newEngineSP = newManager; // On the entity script server, these are the same DependencyManager::get()->setPersistentEntitiesScriptEngine(newEngineSP); DependencyManager::get()->setNonPersistentEntitiesScriptEngine(newEngineSP); if (_entitiesScriptManager) { - disconnect(_entitiesScriptManager.data(), &ScriptManager::entityScriptDetailsUpdated, + disconnect(_entitiesScriptManager.get(), &ScriptManager::entityScriptDetailsUpdated, this, &EntityScriptServer::updateEntityPPS); } _entitiesScriptManager.swap(newManager); - connect(_entitiesScriptManager.data(), &ScriptManager::entityScriptDetailsUpdated, + connect(_entitiesScriptManager.get(), &ScriptManager::entityScriptDetailsUpdated, this, &EntityScriptServer::updateEntityPPS); } @@ -516,7 +516,7 @@ void EntityScriptServer::shutdownScriptEngine() { auto scriptEngines = DependencyManager::get(); scriptEngines->shutdownScripting(); - _entitiesScriptManager.clear(); + _entitiesScriptManager.reset(); auto entityScriptingInterface = DependencyManager::get(); // our entity tree is going to go away so tell that to the EntityScriptingInterface diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index e250e0ce17..a6af164146 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7476,10 +7476,10 @@ void Application::registerScriptEngineWithApplicationServices(const ScriptManage ClipboardScriptingInterface* clipboardScriptable = new ClipboardScriptingInterface(); scriptEngine->registerGlobalObject("Clipboard", clipboardScriptable); - connect(scriptManager.data(), &ScriptManager::finished, clipboardScriptable, &ClipboardScriptingInterface::deleteLater); + connect(scriptManager.get(), &ScriptManager::finished, clipboardScriptable, &ClipboardScriptingInterface::deleteLater); scriptEngine->registerGlobalObject("Overlays", &_overlays); - scriptRegisterMetaType(scriptEngine.data(), RayToOverlayIntersectionResultToScriptValue, + scriptRegisterMetaType(scriptEngine.get(), RayToOverlayIntersectionResultToScriptValue, RayToOverlayIntersectionResultFromScriptValue); bool clientScript = scriptManager->isClientScript(); @@ -7497,13 +7497,13 @@ void Application::registerScriptEngineWithApplicationServices(const ScriptManage } #endif - scriptRegisterMetaType(scriptEngine.data(), wrapperToScriptValue, wrapperFromScriptValue); - scriptRegisterMetaType(scriptEngine.data(), + scriptRegisterMetaType(scriptEngine.get(), wrapperToScriptValue, wrapperFromScriptValue); + scriptRegisterMetaType(scriptEngine.get(), wrapperToScriptValue, wrapperFromScriptValue); scriptEngine->registerGlobalObject("Toolbars", DependencyManager::get().data()); - scriptRegisterMetaType(scriptEngine.data(), wrapperToScriptValue, wrapperFromScriptValue); - scriptRegisterMetaType(scriptEngine.data(), + scriptRegisterMetaType(scriptEngine.get(), wrapperToScriptValue, wrapperFromScriptValue); + scriptRegisterMetaType(scriptEngine.get(), wrapperToScriptValue, wrapperFromScriptValue); scriptEngine->registerGlobalObject("Tablet", DependencyManager::get().data()); // FIXME remove these deprecated names for the tablet scripting interface @@ -7554,12 +7554,12 @@ void Application::registerScriptEngineWithApplicationServices(const ScriptManage scriptEngine->registerGlobalObject("Account", AccountServicesScriptingInterface::getInstance()); // DEPRECATED - TO BE REMOVED scriptEngine->registerGlobalObject("GlobalServices", AccountServicesScriptingInterface::getInstance()); // DEPRECATED - TO BE REMOVED scriptEngine->registerGlobalObject("AccountServices", AccountServicesScriptingInterface::getInstance()); - scriptRegisterMetaType(scriptEngine.data(), DownloadInfoResultToScriptValue, DownloadInfoResultFromScriptValue); + scriptRegisterMetaType(scriptEngine.get(), DownloadInfoResultToScriptValue, DownloadInfoResultFromScriptValue); scriptEngine->registerGlobalObject("AvatarManager", DependencyManager::get().data()); scriptEngine->registerGlobalObject("LODManager", DependencyManager::get().data()); - scriptRegisterMetaType(scriptEngine.data(), worldDetailQualityToScriptValue, worldDetailQualityFromScriptValue); + scriptRegisterMetaType(scriptEngine.get(), worldDetailQualityToScriptValue, worldDetailQualityFromScriptValue); scriptEngine->registerGlobalObject("Keyboard", DependencyManager::get().data()); scriptEngine->registerGlobalObject("Performance", new PerformanceScriptingInterface()); @@ -7574,7 +7574,7 @@ void Application::registerScriptEngineWithApplicationServices(const ScriptManage scriptEngine->registerGlobalObject("Render", RenderScriptingInterface::getInstance()); scriptEngine->registerGlobalObject("Workload", _gameWorkload._engine->getConfiguration().get()); - GraphicsScriptingInterface::registerMetaTypes(scriptEngine.data()); + GraphicsScriptingInterface::registerMetaTypes(scriptEngine.get()); scriptEngine->registerGlobalObject("Graphics", DependencyManager::get().data()); scriptEngine->registerGlobalObject("ScriptDiscoveryService", DependencyManager::get().data()); @@ -7586,11 +7586,11 @@ void Application::registerScriptEngineWithApplicationServices(const ScriptManage scriptEngine->registerGlobalObject("GooglePoly", DependencyManager::get().data()); if (auto steamClient = PluginManager::getInstance()->getSteamClientPlugin()) { - scriptEngine->registerGlobalObject("Steam", new SteamScriptingInterface(scriptManager.data(), steamClient.get())); + scriptEngine->registerGlobalObject("Steam", new SteamScriptingInterface(scriptManager.get(), steamClient.get())); } auto scriptingInterface = DependencyManager::get(); scriptEngine->registerGlobalObject("Controller", scriptingInterface.data()); - UserInputMapper::registerControllerTypes(scriptEngine.data()); + UserInputMapper::registerControllerTypes(scriptEngine.get()); auto recordingInterface = DependencyManager::get(); scriptEngine->registerGlobalObject("Recording", recordingInterface.data()); @@ -7606,18 +7606,18 @@ void Application::registerScriptEngineWithApplicationServices(const ScriptManage scriptEngine->registerGlobalObject("HifiAbout", AboutUtil::getInstance()); // Deprecated. scriptEngine->registerGlobalObject("ResourceRequestObserver", DependencyManager::get().data()); - registerInteractiveWindowMetaType(scriptEngine.data()); + registerInteractiveWindowMetaType(scriptEngine.get()); auto pickScriptingInterface = DependencyManager::get(); - pickScriptingInterface->registerMetaTypes(scriptEngine.data()); + pickScriptingInterface->registerMetaTypes(scriptEngine.get()); // connect this script engines printedMessage signal to the global ScriptEngines these various messages auto scriptEngines = DependencyManager::get().data(); - connect(scriptManager.data(), &ScriptManager::printedMessage, scriptEngines, &ScriptEngines::onPrintedMessage); - connect(scriptManager.data(), &ScriptManager::errorMessage, scriptEngines, &ScriptEngines::onErrorMessage); - connect(scriptManager.data(), &ScriptManager::warningMessage, scriptEngines, &ScriptEngines::onWarningMessage); - connect(scriptManager.data(), &ScriptManager::infoMessage, scriptEngines, &ScriptEngines::onInfoMessage); - connect(scriptManager.data(), &ScriptManager::clearDebugWindow, scriptEngines, &ScriptEngines::onClearDebugWindow); + connect(scriptManager.get(), &ScriptManager::printedMessage, scriptEngines, &ScriptEngines::onPrintedMessage); + connect(scriptManager.get(), &ScriptManager::errorMessage, scriptEngines, &ScriptEngines::onErrorMessage); + connect(scriptManager.get(), &ScriptManager::warningMessage, scriptEngines, &ScriptEngines::onWarningMessage); + connect(scriptManager.get(), &ScriptManager::infoMessage, scriptEngines, &ScriptEngines::onInfoMessage); + connect(scriptManager.get(), &ScriptManager::clearDebugWindow, scriptEngines, &ScriptEngines::onClearDebugWindow); } diff --git a/interface/src/Application.h b/interface/src/Application.h index e26c02a474..15386f2b71 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -15,6 +15,7 @@ #define hifi_Application_h #include +#include #include #include @@ -93,7 +94,7 @@ class AssetUpload; class CompositorHelper; class AudioInjector; class ScriptEngine; -using ScriptEnginePointer = QSharedPointer; +using ScriptEnginePointer = std::shared_ptr; namespace controller { class StateController; diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index b460e133c0..59883cd1df 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -449,8 +449,8 @@ void MyAvatar::registerMetaTypes(ScriptEnginePointer engine) { } engine->globalObject().setProperty("DriveKeys", driveKeys); - scriptRegisterMetaType(engine.data(), audioListenModeToScriptValue, audioListenModeFromScriptValue); - scriptRegisterMetaType(engine.data(), driveKeysToScriptValue, driveKeysFromScriptValue); + scriptRegisterMetaType(engine.get(), audioListenModeToScriptValue, audioListenModeFromScriptValue); + scriptRegisterMetaType(engine.get(), driveKeysToScriptValue, driveKeysFromScriptValue); } void MyAvatar::setOrientationVar(const QVariant& newOrientationVar) { @@ -2673,7 +2673,7 @@ QVariantList MyAvatar::getAvatarEntitiesVariant() { EntityItemProperties entityProperties = entity->getProperties(desiredProperties); { std::lock_guard guard(_scriptEngineLock); - ScriptValue scriptProperties = EntityItemPropertiesToScriptValue(_scriptEngine.data(), entityProperties); + ScriptValue scriptProperties = EntityItemPropertiesToScriptValue(_scriptEngine.get(), entityProperties); avatarEntityData["properties"] = scriptProperties.toVariant(); } avatarEntitiesData.append(QVariant(avatarEntityData)); diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 5ef1733213..d71bd4dc69 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -15,11 +15,11 @@ #define hifi_MyAvatar_h #include +#include #include #include -#include #include #include @@ -43,7 +43,7 @@ class ModelItemID; class MyHead; class DetailedMotionState; class ScriptEngine; -using ScriptEnginePointer = QSharedPointer; +using ScriptEnginePointer = std::shared_ptr; /*@jsdoc *

Locomotion control types.

diff --git a/interface/src/commerce/QmlCommerce.cpp b/interface/src/commerce/QmlCommerce.cpp index 47105e0f3a..78363b077d 100644 --- a/interface/src/commerce/QmlCommerce.cpp +++ b/interface/src/commerce/QmlCommerce.cpp @@ -374,7 +374,7 @@ bool QmlCommerce::installApp(const QString& itemHref, const bool& alsoOpenImmedi // Don't try to re-load (install) a script if it's already running QStringList runningScripts = DependencyManager::get()->getRunningScripts(); if (!runningScripts.contains(scriptUrl)) { - if ((DependencyManager::get()->loadScript(scriptUrl.trimmed())).isNull()) { + if (!(DependencyManager::get()->loadScript(scriptUrl.trimmed()))) { qCDebug(commerce) << "Couldn't load script."; return false; } diff --git a/interface/src/ui/JSConsole.cpp b/interface/src/ui/JSConsole.cpp index 71472d439a..77b8af22e2 100644 --- a/interface/src/ui/JSConsole.cpp +++ b/interface/src/ui/JSConsole.cpp @@ -308,7 +308,7 @@ void JSConsole::highlightedCompletion(const QModelIndex& completion) { JSConsole::~JSConsole() { if (_scriptManager) { - disconnect(_scriptManager.data(), nullptr, this, nullptr); + disconnect(_scriptManager.get(), nullptr, this, nullptr); _scriptManager.reset(); } delete _ui; @@ -319,21 +319,21 @@ void JSConsole::setScriptManager(const ScriptManagerPointer& scriptManager) { return; } if (scriptManager != nullptr) { - disconnect(_scriptManager.data(), nullptr, this, nullptr); + disconnect(_scriptManager.get(), nullptr, this, nullptr); _scriptManager.reset(); } // if scriptEngine is nullptr then create one and keep track of it using _ownScriptEngine - if (scriptManager.isNull()) { + if (!scriptManager) { _scriptManager = DependencyManager::get()->loadScript(_consoleFileName, false); } else { _scriptManager = scriptManager; } - connect(_scriptManager.data(), &ScriptManager::printedMessage, this, &JSConsole::handlePrint); - connect(_scriptManager.data(), &ScriptManager::infoMessage, this, &JSConsole::handleInfo); - connect(_scriptManager.data(), &ScriptManager::warningMessage, this, &JSConsole::handleWarning); - connect(_scriptManager.data(), &ScriptManager::errorMessage, this, &JSConsole::handleError); + connect(_scriptManager.get(), &ScriptManager::printedMessage, this, &JSConsole::handlePrint); + connect(_scriptManager.get(), &ScriptManager::infoMessage, this, &JSConsole::handleInfo); + connect(_scriptManager.get(), &ScriptManager::warningMessage, this, &JSConsole::handleWarning); + connect(_scriptManager.get(), &ScriptManager::errorMessage, this, &JSConsole::handleError); } void JSConsole::executeCommand(const QString& command) { @@ -349,13 +349,13 @@ void JSConsole::executeCommand(const QString& command) { appendMessage(">", "" + command.toHtmlEscaped() + ""); - QWeakPointer weakScriptManager = _scriptManager; + std::weak_ptr weakScriptManager = _scriptManager; auto consoleFileName = _consoleFileName; QFuture future = QtConcurrent::run([weakScriptManager, consoleFileName, command]() -> ScriptValue { ScriptValue result; auto scriptManager = weakScriptManager.lock(); if (scriptManager) { - BLOCKING_INVOKE_METHOD(scriptManager.data(), "evaluate", + BLOCKING_INVOKE_METHOD(scriptManager.get(), "evaluate", Q_RETURN_ARG(ScriptValue, result), Q_ARG(const QString&, command), Q_ARG(const QString&, consoleFileName)); diff --git a/interface/src/ui/JSConsole.h b/interface/src/ui/JSConsole.h index b07f972f9a..4bfa4cb107 100644 --- a/interface/src/ui/JSConsole.h +++ b/interface/src/ui/JSConsole.h @@ -12,6 +12,8 @@ #ifndef hifi_JSConsole_h #define hifi_JSConsole_h +#include + #include #include #include @@ -22,7 +24,7 @@ class QStandardItemModel; class ScriptManager; -using ScriptManagerPointer = QSharedPointer; +using ScriptManagerPointer = std::shared_ptr; const QString CONSOLE_TITLE = "Scripting Console"; const float CONSOLE_WINDOW_OPACITY = 0.95f; diff --git a/interface/src/ui/TestingDialog.cpp b/interface/src/ui/TestingDialog.cpp index c357820cf3..49653c032f 100644 --- a/interface/src/ui/TestingDialog.cpp +++ b/interface/src/ui/TestingDialog.cpp @@ -26,7 +26,7 @@ TestingDialog::TestingDialog(QWidget* parent) : _manager = DependencyManager::get()->loadScript(qApp->applicationDirPath() + testRunnerRelativePath); _console->setScriptManager(_manager); - connect(_manager.data(), &ScriptManager::finished, this, &TestingDialog::onTestingFinished); + connect(_manager.get(), &ScriptManager::finished, this, &TestingDialog::onTestingFinished); } void TestingDialog::onTestingFinished(const QString& scriptPath) { diff --git a/interface/src/ui/TestingDialog.h b/interface/src/ui/TestingDialog.h index 968188fbca..2197737325 100644 --- a/interface/src/ui/TestingDialog.h +++ b/interface/src/ui/TestingDialog.h @@ -12,12 +12,13 @@ #ifndef hifi_TestingDialog_h #define hifi_TestingDialog_h +#include + #include -#include #include "JSConsole.h" class ScriptManager; -using ScriptManagerPointer = QSharedPointer; +using ScriptManagerPointer = std::shared_ptr; const QString windowLabel = "Client Script Tests"; const QString testRunnerRelativePath = "/scripts/developer/tests/unit_tests/testRunner.js"; diff --git a/interface/src/ui/overlays/Overlays.cpp b/interface/src/ui/overlays/Overlays.cpp index ee2bcc75ff..7345e72b37 100644 --- a/interface/src/ui/overlays/Overlays.cpp +++ b/interface/src/ui/overlays/Overlays.cpp @@ -641,7 +641,7 @@ EntityItemProperties Overlays::convertOverlayToEntityProperties(QVariantMap& ove QVariantMap Overlays::convertEntityToOverlayProperties(const EntityItemProperties& properties) { ScriptEnginePointer scriptEngine = newScriptEngine(); - QVariantMap overlayProps = EntityItemPropertiesToScriptValue(scriptEngine.data(), properties).toVariant().toMap(); + QVariantMap overlayProps = EntityItemPropertiesToScriptValue(scriptEngine.get(), properties).toVariant().toMap(); QString type = overlayProps["type"].toString(); overlayProps["type"] = entityToOverlayType(type); diff --git a/libraries/animation/src/AnimationObject.cpp b/libraries/animation/src/AnimationObject.cpp index 09ac8114b9..6782768f5b 100644 --- a/libraries/animation/src/AnimationObject.cpp +++ b/libraries/animation/src/AnimationObject.cpp @@ -19,7 +19,7 @@ #include "AnimationCache.h" STATIC_SCRIPT_INITIALIZER(+[](ScriptManager* manager) { - registerAnimationTypes(manager->engine().data()); + registerAnimationTypes(manager->engine().get()); }); QStringList AnimationObject::getJointNames() const { diff --git a/libraries/audio/src/AudioEffectOptions.cpp b/libraries/audio/src/AudioEffectOptions.cpp index 8edddd9092..2c9c946202 100644 --- a/libraries/audio/src/AudioEffectOptions.cpp +++ b/libraries/audio/src/AudioEffectOptions.cpp @@ -16,7 +16,7 @@ #include STATIC_SCRIPT_INITIALIZER(+[](ScriptManager* manager) { - auto scriptEngine = manager->engine().data(); + auto scriptEngine = manager->engine(); ScriptValue audioEffectOptionsConstructorValue = scriptEngine->newFunction(AudioEffectOptions::constructor); scriptEngine->globalObject().setProperty("AudioEffectOptions", audioEffectOptionsConstructorValue); diff --git a/libraries/audio/src/AudioScriptingInterface.cpp b/libraries/audio/src/AudioScriptingInterface.cpp index f84efada04..ec7a50e5df 100644 --- a/libraries/audio/src/AudioScriptingInterface.cpp +++ b/libraries/audio/src/AudioScriptingInterface.cpp @@ -23,7 +23,7 @@ STATIC_SCRIPT_INITIALIZER(+[](ScriptManager* manager){ - auto scriptEngine = manager->engine().data(); + auto scriptEngine = manager->engine().get(); registerAudioMetaTypes(scriptEngine); scriptEngine->registerGlobalObject("Audio", DependencyManager::get().data()); diff --git a/libraries/audio/src/ScriptAudioInjector.cpp b/libraries/audio/src/ScriptAudioInjector.cpp index d50bf6f163..09f24c7207 100644 --- a/libraries/audio/src/ScriptAudioInjector.cpp +++ b/libraries/audio/src/ScriptAudioInjector.cpp @@ -18,7 +18,7 @@ #include STATIC_SCRIPT_INITIALIZER(+[](ScriptManager* manager) { - auto scriptEngine = manager->engine().data(); + auto scriptEngine = manager->engine().get(); scriptRegisterMetaType(scriptEngine, injectorToScriptValue, injectorFromScriptValue); }); diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 0c2992cebd..348d42b5af 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -69,7 +69,7 @@ static const float DEFAULT_AVATAR_DENSITY = 1000.0f; // density of water #define ASSERT(COND) do { if (!(COND)) { abort(); } } while(0) STATIC_SCRIPT_INITIALIZER(+[](ScriptManager* manager) { - auto scriptEngine = manager->engine().data(); + auto scriptEngine = manager->engine().get(); registerAvatarTypes(scriptEngine); scriptRegisterMetaType(scriptEngine, RayToAvatarIntersectionResultToScriptValue, RayToAvatarIntersectionResultFromScriptValue); diff --git a/libraries/avatars/src/ScriptAvatarData.cpp b/libraries/avatars/src/ScriptAvatarData.cpp index 5b33f53cd5..9f23fee84a 100644 --- a/libraries/avatars/src/ScriptAvatarData.cpp +++ b/libraries/avatars/src/ScriptAvatarData.cpp @@ -25,7 +25,7 @@ void avatarDataFromScriptValue(const ScriptValue& object, ScriptAvatarData*& out } STATIC_SCRIPT_INITIALIZER(+[](ScriptManager* manager) { - auto scriptEngine = manager->engine().data(); + auto scriptEngine = manager->engine().get(); scriptRegisterMetaType(scriptEngine, avatarDataToScriptValue, avatarDataFromScriptValue); }); diff --git a/libraries/baking/src/MaterialBaker.cpp b/libraries/baking/src/MaterialBaker.cpp index f8d846285c..68ca7316c4 100644 --- a/libraries/baking/src/MaterialBaker.cpp +++ b/libraries/baking/src/MaterialBaker.cpp @@ -212,13 +212,15 @@ void MaterialBaker::outputMaterial() { if (_materialResource->parsedMaterials.networkMaterials.size() == 1) { auto networkMaterial = _materialResource->parsedMaterials.networkMaterials.begin(); auto scriptableMaterial = scriptable::ScriptableMaterial(networkMaterial->second); - QVariant materialVariant = scriptable::scriptableMaterialToScriptValue(_scriptEngine.data(), scriptableMaterial).toVariant(); + QVariant materialVariant = + scriptable::scriptableMaterialToScriptValue(_scriptEngine.get(), scriptableMaterial).toVariant(); json.insert("materials", QJsonDocument::fromVariant(materialVariant).object()); } else { QJsonArray materialArray; for (auto networkMaterial : _materialResource->parsedMaterials.networkMaterials) { auto scriptableMaterial = scriptable::ScriptableMaterial(networkMaterial.second); - QVariant materialVariant = scriptable::scriptableMaterialToScriptValue(_scriptEngine.data(), scriptableMaterial).toVariant(); + QVariant materialVariant = + scriptable::scriptableMaterialToScriptValue(_scriptEngine.get(), scriptableMaterial).toVariant(); materialArray.append(QJsonDocument::fromVariant(materialVariant).object()); } json.insert("materials", materialArray); diff --git a/libraries/controllers/src/controllers/ScriptingInterface.cpp b/libraries/controllers/src/controllers/ScriptingInterface.cpp index 9e538b999b..b6e57a0c4e 100644 --- a/libraries/controllers/src/controllers/ScriptingInterface.cpp +++ b/libraries/controllers/src/controllers/ScriptingInterface.cpp @@ -42,7 +42,7 @@ void inputControllerFromScriptValue(const ScriptValue& object, controller::Input } STATIC_SCRIPT_INITIALIZER(+[](ScriptManager* manager) { - auto scriptEngine = manager->engine().data(); + auto scriptEngine = manager->engine().get(); scriptRegisterMetaType(scriptEngine, inputControllerToScriptValue, inputControllerFromScriptValue); }); diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 4662fa2ad0..b9014c5be8 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -161,42 +161,52 @@ int EntityTreeRenderer::_entitiesScriptEngineCount = 0; void EntityTreeRenderer::setupEntityScriptEngineSignals(const ScriptManagerPointer& scriptManager) { auto entityScriptingInterface = DependencyManager::get(); - connect(entityScriptingInterface.data(), &EntityScriptingInterface::mousePressOnEntity, scriptManager.data(), [&](const EntityItemID& entityID, const PointerEvent& event) { + connect(entityScriptingInterface.data(), &EntityScriptingInterface::mousePressOnEntity, scriptManager.get(), + [&](const EntityItemID& entityID, const PointerEvent& event) { scriptManager->callEntityScriptMethod(entityID, "mousePressOnEntity", event); }); - connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseDoublePressOnEntity, scriptManager.data(), [&](const EntityItemID& entityID, const PointerEvent& event) { + connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseDoublePressOnEntity, scriptManager.get(), + [&](const EntityItemID& entityID, const PointerEvent& event) { scriptManager->callEntityScriptMethod(entityID, "mouseDoublePressOnEntity", event); }); - connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseMoveOnEntity, scriptManager.data(), [&](const EntityItemID& entityID, const PointerEvent& event) { + connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseMoveOnEntity, scriptManager.get(), + [&](const EntityItemID& entityID, const PointerEvent& event) { scriptManager->callEntityScriptMethod(entityID, "mouseMoveOnEntity", event); // FIXME: this is a duplicate of mouseMoveOnEntity, but it seems like some scripts might use this naming scriptManager->callEntityScriptMethod(entityID, "mouseMoveEvent", event); }); - connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseReleaseOnEntity, scriptManager.data(), [&](const EntityItemID& entityID, const PointerEvent& event) { + connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseReleaseOnEntity, scriptManager.get(), + [&](const EntityItemID& entityID, const PointerEvent& event) { scriptManager->callEntityScriptMethod(entityID, "mouseReleaseOnEntity", event); }); - connect(entityScriptingInterface.data(), &EntityScriptingInterface::clickDownOnEntity, scriptManager.data(), [&](const EntityItemID& entityID, const PointerEvent& event) { + connect(entityScriptingInterface.data(), &EntityScriptingInterface::clickDownOnEntity, scriptManager.get(), + [&](const EntityItemID& entityID, const PointerEvent& event) { scriptManager->callEntityScriptMethod(entityID, "clickDownOnEntity", event); }); - connect(entityScriptingInterface.data(), &EntityScriptingInterface::holdingClickOnEntity, scriptManager.data(), [&](const EntityItemID& entityID, const PointerEvent& event) { + connect(entityScriptingInterface.data(), &EntityScriptingInterface::holdingClickOnEntity, scriptManager.get(), + [&](const EntityItemID& entityID, const PointerEvent& event) { scriptManager->callEntityScriptMethod(entityID, "holdingClickOnEntity", event); }); - connect(entityScriptingInterface.data(), &EntityScriptingInterface::clickReleaseOnEntity, scriptManager.data(), [&](const EntityItemID& entityID, const PointerEvent& event) { + connect(entityScriptingInterface.data(), &EntityScriptingInterface::clickReleaseOnEntity, scriptManager.get(), + [&](const EntityItemID& entityID, const PointerEvent& event) { scriptManager->callEntityScriptMethod(entityID, "clickReleaseOnEntity", event); }); - connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverEnterEntity, scriptManager.data(), [&](const EntityItemID& entityID, const PointerEvent& event) { + connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverEnterEntity, scriptManager.get(), + [&](const EntityItemID& entityID, const PointerEvent& event) { scriptManager->callEntityScriptMethod(entityID, "hoverEnterEntity", event); }); - connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverOverEntity, scriptManager.data(), [&](const EntityItemID& entityID, const PointerEvent& event) { + connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverOverEntity, scriptManager.get(), + [&](const EntityItemID& entityID, const PointerEvent& event) { scriptManager->callEntityScriptMethod(entityID, "hoverOverEntity", event); }); - connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverLeaveEntity, scriptManager.data(), [&](const EntityItemID& entityID, const PointerEvent& event) { + connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverLeaveEntity, scriptManager.get(), + [&](const EntityItemID& entityID, const PointerEvent& event) { scriptManager->callEntityScriptMethod(entityID, "hoverLeaveEntity", event); }); - connect(scriptManager.data(), &ScriptManager::entityScriptPreloadFinished, [&](const EntityItemID& entityID) { + connect(scriptManager.get(), &ScriptManager::entityScriptPreloadFinished, [&](const EntityItemID& entityID) { EntityItemPointer entity = getTree()->findEntityByID(entityID); if (entity) { entity->setScriptHasFinishedPreload(true); @@ -215,7 +225,7 @@ void EntityTreeRenderer::resetPersistentEntitiesScriptEngine() { QString("about:Entities %1").arg(++_entitiesScriptEngineCount)); DependencyManager::get()->runScriptInitializers(_persistentEntitiesScriptManager); _persistentEntitiesScriptManager->runInThread(); - auto entitiesScriptEngineProvider = qSharedPointerCast(_persistentEntitiesScriptManager); + std::shared_ptr entitiesScriptEngineProvider = _persistentEntitiesScriptManager; auto entityScriptingInterface = DependencyManager::get(); entityScriptingInterface->setPersistentEntitiesScriptEngine(entitiesScriptEngineProvider); @@ -233,7 +243,7 @@ void EntityTreeRenderer::resetNonPersistentEntitiesScriptEngine() { QString("about:Entities %1").arg(++_entitiesScriptEngineCount)); DependencyManager::get()->runScriptInitializers(_nonPersistentEntitiesScriptManager); _nonPersistentEntitiesScriptManager->runInThread(); - auto entitiesScriptEngineProvider = qSharedPointerCast(_nonPersistentEntitiesScriptManager); + std::shared_ptr entitiesScriptEngineProvider = _nonPersistentEntitiesScriptManager; DependencyManager::get()->setNonPersistentEntitiesScriptEngine(entitiesScriptEngineProvider); setupEntityScriptEngineSignals(_nonPersistentEntitiesScriptManager); diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.h b/libraries/entities-renderer/src/EntityTreeRenderer.h index 7d33a12197..e008bc9069 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.h +++ b/libraries/entities-renderer/src/EntityTreeRenderer.h @@ -12,6 +12,8 @@ #ifndef hifi_EntityTreeRenderer_h #define hifi_EntityTreeRenderer_h +#include + #include #include #include @@ -35,8 +37,8 @@ class ZoneEntityItem; class EntityItem; class ScriptEngine; class ScriptManager; -using ScriptEnginePointer = QSharedPointer; -using ScriptManagerPointer = QSharedPointer; +using ScriptEnginePointer = std::shared_ptr; +using ScriptManagerPointer = std::shared_ptr; namespace render { namespace entities { class EntityRenderer; diff --git a/libraries/entities-renderer/src/ModelScriptingInterface.cpp b/libraries/entities-renderer/src/ModelScriptingInterface.cpp index 0c5dd33a69..0b152b56c5 100644 --- a/libraries/entities-renderer/src/ModelScriptingInterface.cpp +++ b/libraries/entities-renderer/src/ModelScriptingInterface.cpp @@ -19,7 +19,7 @@ #include STATIC_SCRIPT_INITIALIZER(+[](ScriptManager* manager) { - auto scriptEngine = manager->engine().data(); + auto scriptEngine = manager->engine(); scriptEngine->registerGlobalObject("Model", new ModelScriptingInterface(manager)); }); diff --git a/libraries/entities-renderer/src/ModelScriptingInterface.h b/libraries/entities-renderer/src/ModelScriptingInterface.h index 1f11703ad6..698d920178 100644 --- a/libraries/entities-renderer/src/ModelScriptingInterface.h +++ b/libraries/entities-renderer/src/ModelScriptingInterface.h @@ -15,14 +15,15 @@ #ifndef hifi_ModelScriptingInterface_h #define hifi_ModelScriptingInterface_h +#include + #include -#include #include #include class ScriptEngine; -using ScriptEnginePointer = QSharedPointer; +using ScriptEnginePointer = std::shared_ptr; /*@jsdoc * The Model API provides the ability to manipulate meshes. You can get the meshes for an entity using @@ -101,7 +102,7 @@ public: Q_INVOKABLE ScriptValue getVertex(MeshProxy* meshProxy, int vertexIndex); private: - ScriptEnginePointer _modelScriptEngine { nullptr }; + ScriptEnginePointer _modelScriptEngine; }; #endif // hifi_ModelScriptingInterface_h diff --git a/libraries/entities/src/EntityEditFilters.cpp b/libraries/entities/src/EntityEditFilters.cpp index 6901b0b164..563f62d380 100644 --- a/libraries/entities/src/EntityEditFilters.cpp +++ b/libraries/entities/src/EntityEditFilters.cpp @@ -264,7 +264,7 @@ void EntityEditFilters::scriptRequestFinished(EntityItemID entityID) { engine->setProperty("fileName", urlString); engine->setProperty("entityID", entityID); engine->globalObject().setProperty("Script", engine->newQObject(manager.get())); - DependencyManager::get()->runScriptInitializers(engine.data()); + DependencyManager::get()->runScriptInitializers(engine.get()); engine->evaluate(scriptContents, urlString); if (!hadUncaughtExceptions(*engine, urlString)) { // put the engine in the engine map (so we don't leak them, etc...) diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index 8d0b5daee3..8ed610dc69 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -49,7 +49,7 @@ const QString GRABBABLE_USER_DATA = "{\"grabbableKey\":{\"grabbable\":true}}"; const QString NOT_GRABBABLE_USER_DATA = "{\"grabbableKey\":{\"grabbable\":false}}"; void staticEntityScriptInitializer(ScriptManager* manager) { - auto scriptEngine = manager->engine().data(); + auto scriptEngine = manager->engine().get(); auto entityScriptingInterface = DependencyManager::get(); entityScriptingInterface->init(); @@ -145,7 +145,8 @@ void EntityScriptingInterface::attachDefaultEventHandlers(ScriptManager* manager using SingleEntityHandler = std::function; auto makeSingleEntityHandler = [manager](QString eventName) -> SingleEntityHandler { return [manager, eventName](const EntityItemID& entityItemID) { - manager->forwardHandlerCall(entityItemID, eventName, { EntityItemIDtoScriptValue(manager->engine().data(), entityItemID) }); + manager->forwardHandlerCall(entityItemID, eventName, + { EntityItemIDtoScriptValue(manager->engine().get(), entityItemID) }); }; }; @@ -159,7 +160,7 @@ void EntityScriptingInterface::attachDefaultEventHandlers(ScriptManager* manager auto makePointerHandler = [manager](QString eventName) -> PointerHandler { return [manager, eventName](const EntityItemID& entityItemID, const PointerEvent& event) { if (!EntityTree::areEntityClicksCaptured()) { - ScriptEngine* engine = manager->engine().data(); + ScriptEngine* engine = manager->engine().get(); manager->forwardHandlerCall(entityItemID, eventName, { EntityItemIDtoScriptValue(engine, entityItemID), event.toScriptValue(engine) }); } @@ -176,7 +177,7 @@ void EntityScriptingInterface::attachDefaultEventHandlers(ScriptManager* manager using CollisionHandler = std::function; auto makeCollisionHandler = [manager](QString eventName) -> CollisionHandler { return [manager, eventName](const EntityItemID& idA, const EntityItemID& idB, const Collision& collision) { - ScriptEngine* engine = manager->engine().data(); + ScriptEngine* engine = manager->engine().get(); manager->forwardHandlerCall(idA, eventName, { EntityItemIDtoScriptValue(engine, idA), EntityItemIDtoScriptValue(engine, idB), @@ -1234,12 +1235,12 @@ QSizeF EntityScriptingInterface::textSize(const QUuid& id, const QString& text) return EntityTree::textSize(id, text); } -void EntityScriptingInterface::setPersistentEntitiesScriptEngine(QSharedPointer manager) { +void EntityScriptingInterface::setPersistentEntitiesScriptEngine(std::shared_ptr manager) { std::lock_guard lock(_entitiesScriptEngineLock); _persistentEntitiesScriptManager = manager; } -void EntityScriptingInterface::setNonPersistentEntitiesScriptEngine(QSharedPointer manager) { +void EntityScriptingInterface::setNonPersistentEntitiesScriptEngine(std::shared_ptr manager) { std::lock_guard lock(_entitiesScriptEngineLock); _nonPersistentEntitiesScriptManager = manager; } @@ -1528,7 +1529,7 @@ bool EntityPropertyMetadataRequest::script(EntityItemID entityID, const ScriptVa request->deleteLater(); }); auto entityScriptingInterface = DependencyManager::get(); - entityScriptingInterface->withEntitiesScriptEngine([&](QSharedPointer entitiesScriptEngine) { + entityScriptingInterface->withEntitiesScriptEngine([&](std::shared_ptr entitiesScriptEngine) { if (entitiesScriptEngine) { request->setFuture(entitiesScriptEngine->getLocalEntityScriptDetails(entityID)); } @@ -2442,7 +2443,7 @@ void EntityScriptingInterface::getMeshes(const QUuid& entityID, const ScriptValu bool success = entity->getMeshes(result); if (success) { - ScriptValue resultAsScriptValue = meshesToScriptValue(engine.data(), result); + ScriptValue resultAsScriptValue = meshesToScriptValue(engine.get(), result); ScriptValueList args{ resultAsScriptValue, engine->newValue(true) }; callback.call(ScriptValue(), args); } else { diff --git a/libraries/entities/src/EntityScriptingInterface.h b/libraries/entities/src/EntityScriptingInterface.h index 7e6864e05f..bbcaa6f8c7 100644 --- a/libraries/entities/src/EntityScriptingInterface.h +++ b/libraries/entities/src/EntityScriptingInterface.h @@ -15,6 +15,8 @@ #ifndef hifi_EntityScriptingInterface_h #define hifi_EntityScriptingInterface_h +#include + #include #include #include @@ -185,8 +187,8 @@ public: void setEntityTree(EntityTreePointer modelTree); EntityTreePointer getEntityTree() { return _entityTree; } - void setPersistentEntitiesScriptEngine(QSharedPointer manager); - void setNonPersistentEntitiesScriptEngine(QSharedPointer manager); + void setPersistentEntitiesScriptEngine(std::shared_ptr manager); + void setNonPersistentEntitiesScriptEngine(std::shared_ptr manager); void resetActivityTracking(); ActivityTracking getActivityTracking() const { return _activityTracking; } @@ -2532,7 +2534,7 @@ signals: void webEventReceived(const EntityItemID& entityItemID, const QVariant& message); protected: - void withEntitiesScriptEngine(std::function)> function, const EntityItemID& id) { + void withEntitiesScriptEngine(std::function)> function, const EntityItemID& id) { auto entity = getEntityTree()->findEntityByEntityItemID(id); if (entity) { std::lock_guard lock(_entitiesScriptEngineLock); @@ -2573,8 +2575,8 @@ private: EntityTreePointer _entityTree; std::recursive_mutex _entitiesScriptEngineLock; - QSharedPointer _persistentEntitiesScriptManager; - QSharedPointer _nonPersistentEntitiesScriptManager; + std::shared_ptr _persistentEntitiesScriptManager; + std::shared_ptr _nonPersistentEntitiesScriptManager; bool _bidOnSimulationOwnership { false }; diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index 5372492036..0bb59095a5 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -2943,7 +2943,7 @@ bool EntityTree::writeToMap(QVariantMap& entityDescription, OctreeElementPointer entityDescription["DataVersion"] = _persistDataVersion; entityDescription["Id"] = _persistID; ScriptEnginePointer engine = newScriptEngine(); - RecurseOctreeToMapOperator theOperator(entityDescription, element, engine.data(), skipDefaultValues, + RecurseOctreeToMapOperator theOperator(entityDescription, element, engine.get(), skipDefaultValues, skipThoseWithBadParents, _myAvatar); withReadLock([&] { recurseTreeWithOperator(&theOperator); @@ -3268,7 +3268,7 @@ bool EntityTree::readFromMap(QVariantMap& map, const bool isImport) { bool EntityTree::writeToJSON(QString& jsonString, const OctreeElementPointer& element) { ScriptEnginePointer engine = newScriptEngine(); - RecurseOctreeToJSONOperator theOperator(element, engine.data(), jsonString); + RecurseOctreeToJSONOperator theOperator(element, engine.get(), jsonString); withReadLock([&] { recurseTreeWithOperator(&theOperator); }); diff --git a/libraries/midi/src/Midi.cpp b/libraries/midi/src/Midi.cpp index c9b7b348a8..d88f31394e 100644 --- a/libraries/midi/src/Midi.cpp +++ b/libraries/midi/src/Midi.cpp @@ -135,7 +135,7 @@ void CALLBACK MidiInProc(HMIDIIN hMidiIn, UINT wMsg, DWORD_PTR dwInstance, DWORD } STATIC_SCRIPT_INITIALIZER(+[](ScriptManager* manager) { - auto scriptEngine = manager->engine().data(); + auto scriptEngine = manager->engine(); scriptEngine->registerGlobalObject("Midi", DependencyManager::get().data()); }); diff --git a/libraries/script-engine/src/AbstractScriptingServicesInterface.h b/libraries/script-engine/src/AbstractScriptingServicesInterface.h index 2e96924ab6..5c99240e90 100644 --- a/libraries/script-engine/src/AbstractScriptingServicesInterface.h +++ b/libraries/script-engine/src/AbstractScriptingServicesInterface.h @@ -15,10 +15,10 @@ #ifndef hifi_AbstractScriptingServicesInterface_h #define hifi_AbstractScriptingServicesInterface_h -#include +#include class ScriptManager; -using ScriptManagerPointer = QSharedPointer; +using ScriptManagerPointer = std::shared_ptr; /// Interface provided by Application to other objects that need access to scripting services of the application class AbstractScriptingServicesInterface { diff --git a/libraries/script-engine/src/ScriptContext.h b/libraries/script-engine/src/ScriptContext.h index 9a38a67c71..e046fe88ca 100644 --- a/libraries/script-engine/src/ScriptContext.h +++ b/libraries/script-engine/src/ScriptContext.h @@ -15,7 +15,8 @@ #ifndef hifi_ScriptContext_h #define hifi_ScriptContext_h -#include +#include + #include #include @@ -24,9 +25,9 @@ class ScriptContext; class ScriptEngine; class ScriptFunctionContext; -using ScriptContextPointer = QSharedPointer; -using ScriptFunctionContextPointer = QSharedPointer; -using ScriptEnginePointer = QSharedPointer; +using ScriptContextPointer = std::shared_ptr; +using ScriptFunctionContextPointer = std::shared_ptr; +using ScriptEnginePointer = std::shared_ptr; /// [ScriptInterface] Provides an engine-independent interface for QScriptContextInfo class ScriptFunctionContext { diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index fa791709d4..4bcac85e45 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -17,7 +17,7 @@ #include "qtscript/ScriptEngineQtScript.h" ScriptEnginePointer newScriptEngine(ScriptManager* manager) { - return QSharedPointer(new ScriptEngineQtScript(manager)); + return std::make_shared(manager); } ScriptValue makeScopedHandlerObject(const ScriptValue& scopeOrCallback, const ScriptValue& methodOrName) { diff --git a/libraries/script-engine/src/ScriptEngine.h b/libraries/script-engine/src/ScriptEngine.h index d7729ce75f..c69a0af8c3 100644 --- a/libraries/script-engine/src/ScriptEngine.h +++ b/libraries/script-engine/src/ScriptEngine.h @@ -16,9 +16,10 @@ #ifndef hifi_ScriptEngine_h #define hifi_ScriptEngine_h +#include + #include #include -#include #include "ScriptValue.h" @@ -31,8 +32,8 @@ class ScriptContext; class ScriptEngine; class ScriptManager; class ScriptProgram; -using ScriptEnginePointer = QSharedPointer; -using ScriptProgramPointer = QSharedPointer; +using ScriptEnginePointer = std::shared_ptr; +using ScriptProgramPointer = std::shared_ptr; Q_DECLARE_METATYPE(ScriptEnginePointer); diff --git a/libraries/script-engine/src/ScriptEngines.cpp b/libraries/script-engine/src/ScriptEngines.cpp index 405ef25990..ee6e6ffc2f 100644 --- a/libraries/script-engine/src/ScriptEngines.cpp +++ b/libraries/script-engine/src/ScriptEngines.cpp @@ -422,7 +422,7 @@ void ScriptEngines::stopAllScripts(bool restart) { _isReloading = true; ScriptManager::Type type = scriptManager->getType(); - connect(scriptManager.data(), &ScriptManager::finished, this, [this, type, isOverrideScript](QString scriptName) { + connect(scriptManager.get(), &ScriptManager::finished, this, [this, type, isOverrideScript](QString scriptName) { reloadScript(scriptName, !isOverrideScript)->setType(type); }); } @@ -458,7 +458,7 @@ bool ScriptEngines::stopScript(const QString& rawScriptURL, bool restart) { scriptCache->deleteScript(scriptURL); if (!scriptManager->isStopping()) { - connect(scriptManager.data(), &ScriptManager::finished, + connect(scriptManager.get(), &ScriptManager::finished, this, [this, isUserLoaded, type](QString scriptName, ScriptManagerPointer manager) { reloadScript(scriptName, isUserLoaded)->setType(type); }); @@ -523,12 +523,12 @@ ScriptManagerPointer ScriptEngines::loadScript(const QUrl& scriptFilename, bool launchScriptEngine(scriptManager); } else { // connect to the appropriate signals of this script engine - connect(scriptManager.data(), &ScriptManager::scriptLoaded, this, &ScriptEngines::onScriptEngineLoaded); - connect(scriptManager.data(), &ScriptManager::errorLoadingScript, this, &ScriptEngines::onScriptEngineError); + connect(scriptManager.get(), &ScriptManager::scriptLoaded, this, &ScriptEngines::onScriptEngineLoaded); + connect(scriptManager.get(), &ScriptManager::errorLoadingScript, this, &ScriptEngines::onScriptEngineError); // Shutdown Interface when script finishes, if requested if (quitWhenFinished) { - connect(scriptManager.data(), &ScriptManager::finished, this, &ScriptEngines::quitWhenFinished); + connect(scriptManager.get(), &ScriptManager::finished, this, &ScriptEngines::quitWhenFinished); } // get the script engine object to load the script at the designated script URL @@ -554,7 +554,7 @@ ScriptManagerPointer ScriptEngines::getScriptEngine(const QUrl& rawScriptURL) { // FIXME - change to new version of ScriptCache loading notification void ScriptEngines::onScriptEngineLoaded(const QString& rawScriptURL) { UserActivityLogger::getInstance().loadedScript(rawScriptURL); - ScriptManagerPointer scriptEngine = qobject_cast(sender())->sharedFromThis(); + ScriptManagerPointer scriptEngine = qobject_cast(sender())->shared_from_this(); launchScriptEngine(scriptEngine); @@ -575,16 +575,18 @@ void ScriptEngines::quitWhenFinished() { } int ScriptEngines::runScriptInitializers(ScriptManagerPointer scriptManager) { - auto nativeCount = DependencyManager::get()->runScriptInitializers(scriptManager->engine().data()); + auto nativeCount = DependencyManager::get()->runScriptInitializers(scriptManager->engine().get()); return nativeCount + ScriptInitializerMixin::runScriptInitializers(scriptManager); } void ScriptEngines::launchScriptEngine(ScriptManagerPointer scriptManager) { - connect(scriptManager.data(), &ScriptManager::finished, this, &ScriptEngines::onScriptFinished, Qt::DirectConnection); - connect(scriptManager.data(), &ScriptManager::loadScript, [this](const QString& scriptName, bool userLoaded) { + connect(scriptManager.get(), &ScriptManager::finished, this, &ScriptEngines::onScriptFinished, Qt::DirectConnection); + connect(scriptManager.get(), &ScriptManager::loadScript, + [this](const QString& scriptName, bool userLoaded) { loadScript(scriptName, userLoaded); }); - connect(scriptManager.data(), &ScriptManager::reloadScript, [this](const QString& scriptName, bool userLoaded) { + connect(scriptManager.get(), &ScriptManager::reloadScript, + [this](const QString& scriptName, bool userLoaded) { loadScript(scriptName, userLoaded, false, false, true); }); diff --git a/libraries/script-engine/src/ScriptEngines.h b/libraries/script-engine/src/ScriptEngines.h index 28fd0238bb..bab550a483 100644 --- a/libraries/script-engine/src/ScriptEngines.h +++ b/libraries/script-engine/src/ScriptEngines.h @@ -19,7 +19,6 @@ #include #include #include -#include #include #include diff --git a/libraries/script-engine/src/ScriptManager.cpp b/libraries/script-engine/src/ScriptManager.cpp index 97ccd4a4fb..b523c7d059 100644 --- a/libraries/script-engine/src/ScriptManager.cpp +++ b/libraries/script-engine/src/ScriptManager.cpp @@ -133,7 +133,7 @@ static ScriptValue debugPrint(ScriptContext* context, ScriptEngine* engine) { ScriptContextPointer parentContext; // using this variable to maintain parent variable lifespan while (userContext && userContext->functionContext()->functionType() == ScriptFunctionContext::NativeFunction) { parentContext = userContext->parentContext(); - userContext = parentContext.data(); + userContext = parentContext.get(); } QString location; if (userContext) { @@ -211,7 +211,8 @@ ScriptManagerPointer scriptManagerFactory(ScriptManager::Context context, ScriptManagerPointer newScriptManager(ScriptManager::Context context, const QString& scriptContents, const QString& fileNameString) { - ScriptManagerPointer manager(new ScriptManager(context, scriptContents, fileNameString), &QObject::deleteLater); + ScriptManagerPointer manager(new ScriptManager(context, scriptContents, fileNameString), + [](ScriptManager* obj) { obj->deleteLater(); }); ScriptEnginePointer engine = newScriptEngine(manager.get()); manager->_engine = engine; return manager; @@ -559,7 +560,7 @@ static ScriptValue createScriptableResourcePrototype(ScriptManagerPointer manage auto prototype = engine->newObject(); // Expose enum State to JS/QML via properties - QObject* state = new QObject(manager.data()); + QObject* state = new QObject(manager.get()); state->setObjectName("ResourceState"); auto metaEnum = QMetaEnum::fromType(); for (int i = 0; i < metaEnum.keyCount(); ++i) { @@ -623,7 +624,7 @@ void ScriptManager::init() { _isInitialized = true; runStaticInitializers(this); - auto scriptEngine = _engine.data(); + auto scriptEngine = _engine.get(); // register various meta-types registerMIDIMetaTypes(scriptEngine); @@ -693,7 +694,7 @@ void ScriptManager::init() { scriptEngine->registerFunction("console", "groupEnd", ConsoleScriptingInterface::groupEnd, 0); // Scriptable cache access - auto resourcePrototype = createScriptableResourcePrototype(qSharedPointerCast(sharedFromThis())); + auto resourcePrototype = createScriptableResourcePrototype(shared_from_this()); scriptEngine->globalObject().setProperty("Resource", resourcePrototype); scriptEngine->setDefaultPrototype(qMetaTypeId(), resourcePrototype); scriptRegisterMetaType(scriptEngine, scriptableResourceToScriptValue, scriptableResourceFromScriptValue); @@ -960,7 +961,7 @@ void ScriptManager::run() { emit releaseEntityPacketSenderMessages(true); - emit finished(_fileNameString, qSharedPointerCast(sharedFromThis())); + emit finished(_fileNameString, shared_from_this()); // Don't leave our local-file-access flag laying around, reset it to false when the scriptengine // thread is finished @@ -1117,7 +1118,7 @@ QUrl ScriptManager::resolvePath(const QString& include) const { auto contextInfo = context->functionContext(); parentURL = QUrl(contextInfo->fileName()); parentContext = context->parentContext(); - context = parentContext.data(); + context = parentContext.get(); } while (parentURL.isRelative() && context); if (parentURL.isRelative()) { @@ -1258,7 +1259,8 @@ ScriptValue ScriptManager::currentModule() { auto cache = jsRequire.property("cache"); ScriptValue candidate; ScriptContextPointer parentContext; // using this variable to maintain parent variable lifespan - for (auto context = _engine->currentContext(); context && !candidate.isObject(); parentContext = context->parentContext(), context = parentContext.data()) { + for (auto context = _engine->currentContext(); context && !candidate.isObject(); + parentContext = context->parentContext(), context = parentContext.get()) { auto contextInfo = context->functionContext(); candidate = cache.property(contextInfo->fileName()); } @@ -1808,10 +1810,10 @@ void ScriptManager::loadEntityScript(const EntityItemID& entityID, const QString auto scriptCache = DependencyManager::get(); // note: see EntityTreeRenderer.cpp for shared pointer lifecycle management - QWeakPointer weakRef(sharedFromThis()); + std::weak_ptr weakRef(shared_from_this()); scriptCache->getScriptContents(entityScript, [this, weakRef, entityScript, entityID](const QString& url, const QString& contents, bool isURL, bool success, const QString& status) { - QSharedPointer strongRef(weakRef); + std::shared_ptr strongRef(weakRef); if (!strongRef) { qCWarning(scriptengine) << "loadEntityScript.contentAvailable -- ScriptManager was deleted during getScriptContents!!"; return; @@ -1929,7 +1931,7 @@ void ScriptManager::entityScriptContentAvailable(const EntityItemID& entityID, c return; } auto program = _engine->newProgram( contents, fileName ); - if (program.isNull()) { + if (!program) { setError("Bad program (isNull)", EntityScriptStatus::ERROR_RUNNING_SCRIPT); emit unhandledException(_engine->makeError(_engine->newValue("program.isNull"))); return; // done processing script @@ -2337,7 +2339,7 @@ void ScriptManager::callEntityScriptMethod(const EntityItemID& entityID, const Q } if (callAllowed && entityScript.property(methodName).isFunction()) { - auto scriptEngine = engine().data(); + auto scriptEngine = engine().get(); ScriptValueList args; args << EntityItemIDtoScriptValue(scriptEngine, entityID); @@ -2380,7 +2382,7 @@ void ScriptManager::callEntityScriptMethod(const EntityItemID& entityID, const Q } ScriptValue entityScript = details.scriptObject; // previously loaded if (entityScript.property(methodName).isFunction()) { - auto scriptEngine = engine().data(); + auto scriptEngine = engine().get(); ScriptValueList args; args << EntityItemIDtoScriptValue(scriptEngine, entityID); @@ -2420,7 +2422,7 @@ void ScriptManager::callEntityScriptMethod(const EntityItemID& entityID, const Q } ScriptValue entityScript = details.scriptObject; // previously loaded if (entityScript.property(methodName).isFunction()) { - auto scriptEngine = engine().data(); + auto scriptEngine = engine().get(); ScriptValueList args; args << EntityItemIDtoScriptValue(scriptEngine, entityID); diff --git a/libraries/script-engine/src/ScriptManager.h b/libraries/script-engine/src/ScriptManager.h index fc3f8f3923..8e94b0ed88 100644 --- a/libraries/script-engine/src/ScriptManager.h +++ b/libraries/script-engine/src/ScriptManager.h @@ -16,10 +16,10 @@ #include #include #include +#include #include #include -#include #include #include #include @@ -54,8 +54,8 @@ static const int DEFAULT_ENTITY_PPS_PER_SCRIPT = 900; class ScriptEngine; class ScriptEngines; class ScriptManager; -using ScriptEnginePointer = QSharedPointer; -using ScriptManagerPointer = QSharedPointer; +using ScriptEnginePointer = std::shared_ptr; +using ScriptManagerPointer = std::shared_ptr; using ScriptValueList = QList; Q_DECLARE_METATYPE(ScriptManagerPointer) @@ -137,7 +137,7 @@ public: * Read-only. * @property {Script.ResourceBuckets} ExternalPaths - External resource buckets. */ -class ScriptManager : public QObject, public EntitiesScriptEngineProvider, public QEnableSharedFromThis { +class ScriptManager : public QObject, public EntitiesScriptEngineProvider, public std::enable_shared_from_this { Q_OBJECT Q_PROPERTY(QString context READ getContext) Q_PROPERTY(QString type READ getTypeAsString) diff --git a/libraries/script-engine/src/ScriptProgram.h b/libraries/script-engine/src/ScriptProgram.h index abfe0d2748..ae26abace6 100644 --- a/libraries/script-engine/src/ScriptProgram.h +++ b/libraries/script-engine/src/ScriptProgram.h @@ -15,12 +15,12 @@ #ifndef hifi_ScriptProgram_h #define hifi_ScriptProgram_h -#include +#include class ScriptProgram; class ScriptSyntaxCheckResult; -using ScriptProgramPointer = QSharedPointer; -using ScriptSyntaxCheckResultPointer = QSharedPointer; +using ScriptProgramPointer = std::shared_ptr; +using ScriptSyntaxCheckResultPointer = std::shared_ptr; /// [ScriptInterface] Provides an engine-independent interface for QScriptProgram class ScriptProgram { diff --git a/libraries/script-engine/src/ScriptValue.h b/libraries/script-engine/src/ScriptValue.h index bafbf349f1..d5a057e0ad 100644 --- a/libraries/script-engine/src/ScriptValue.h +++ b/libraries/script-engine/src/ScriptValue.h @@ -15,10 +15,11 @@ #ifndef hifi_ScriptValue_h #define hifi_ScriptValue_h +#include + #include #include #include -#include #include #include @@ -26,9 +27,9 @@ class ScriptEngine; class ScriptValue; class ScriptValueIterator; class ScriptValueProxy; -using ScriptEnginePointer = QSharedPointer; +using ScriptEnginePointer = std::shared_ptr; using ScriptValueList = QList; -using ScriptValueIteratorPointer = QSharedPointer; +using ScriptValueIteratorPointer = std::shared_ptr; /// [ScriptInterface] Provides an engine-independent interface for QScriptValue class ScriptValue { diff --git a/libraries/script-engine/src/ScriptValueIterator.h b/libraries/script-engine/src/ScriptValueIterator.h index 13ae8be74e..657bef6fbb 100644 --- a/libraries/script-engine/src/ScriptValueIterator.h +++ b/libraries/script-engine/src/ScriptValueIterator.h @@ -15,13 +15,14 @@ #ifndef hifi_ScriptValueIterator_h #define hifi_ScriptValueIterator_h -#include +#include + #include #include "ScriptValue.h" class ScriptValueIterator; -using ScriptValueIteratorPointer = QSharedPointer; +using ScriptValueIteratorPointer = std::shared_ptr; /// [ScriptInterface] Provides an engine-independent interface for QScriptValueIterator class ScriptValueIterator { diff --git a/libraries/script-engine/src/Scriptable.h b/libraries/script-engine/src/Scriptable.h index 39d5974168..45669a111c 100644 --- a/libraries/script-engine/src/Scriptable.h +++ b/libraries/script-engine/src/Scriptable.h @@ -15,13 +15,13 @@ #ifndef hifi_Scriptable_h #define hifi_Scriptable_h -#include +#include #include "ScriptContext.h" #include "ScriptValue.h" class ScriptEngine; -using ScriptEnginePointer = QSharedPointer; +using ScriptEnginePointer = std::shared_ptr; /// [ScriptInterface] Provides an engine-independent interface for QScriptable class Scriptable { diff --git a/libraries/script-engine/src/qtscript/ScriptContextQtAgent.cpp b/libraries/script-engine/src/qtscript/ScriptContextQtAgent.cpp index db888c3e99..e082272a63 100644 --- a/libraries/script-engine/src/qtscript/ScriptContextQtAgent.cpp +++ b/libraries/script-engine/src/qtscript/ScriptContextQtAgent.cpp @@ -21,7 +21,7 @@ void ScriptContextQtAgent::contextPop() { if (_prevAgent) { _prevAgent->contextPop(); } - if (_engine->currentContext() == _currContext) { + if (_engine->currentContext() == _currContext.get()) { _currContext.reset(); if (!_contextActive && !_contextStack.empty()) { _currContext = _contextStack.back(); @@ -50,7 +50,7 @@ void ScriptContextQtAgent::functionEntry(qint64 scriptId) { return; } if (!_currContext) { - _currContext = ScriptContextQtPointer(new ScriptContextQtWrapper(_engine, static_cast(_engine)->currentContext())); + _currContext = std::make_shared(_engine, static_cast(_engine)->currentContext()); } Scriptable::setContext(_currContext.get()); _contextActive = true; diff --git a/libraries/script-engine/src/qtscript/ScriptContextQtAgent.h b/libraries/script-engine/src/qtscript/ScriptContextQtAgent.h index 38e64ffc22..f23d82dc2b 100644 --- a/libraries/script-engine/src/qtscript/ScriptContextQtAgent.h +++ b/libraries/script-engine/src/qtscript/ScriptContextQtAgent.h @@ -12,8 +12,9 @@ #ifndef hifi_ScriptContextQtAgent_h #define hifi_ScriptContextQtAgent_h +#include + #include -#include #include #include "ScriptEngineQtScript.h" @@ -22,7 +23,7 @@ class QScriptContext; class QScriptValue; class ScriptContextQtWrapper; class ScriptEngineQtScript; -using ScriptContextQtPointer = QSharedPointer; +using ScriptContextQtPointer = std::shared_ptr; class ScriptContextQtAgent final : public QScriptEngineAgent { public: // construction diff --git a/libraries/script-engine/src/qtscript/ScriptContextQtWrapper.cpp b/libraries/script-engine/src/qtscript/ScriptContextQtWrapper.cpp index 75172bed12..72f6ea41b1 100644 --- a/libraries/script-engine/src/qtscript/ScriptContextQtWrapper.cpp +++ b/libraries/script-engine/src/qtscript/ScriptContextQtWrapper.cpp @@ -43,16 +43,16 @@ ScriptValue ScriptContextQtWrapper::callee() const { } ScriptEnginePointer ScriptContextQtWrapper::engine() const { - return _engine->sharedFromThis(); + return _engine->shared_from_this(); } ScriptFunctionContextPointer ScriptContextQtWrapper::functionContext() const { - return ScriptFunctionContextPointer(new ScriptFunctionContextQtWrapper(_context)); + return std::make_shared(_context); } ScriptContextPointer ScriptContextQtWrapper::parentContext() const { QScriptContext* result = _context->parentContext(); - return result ? ScriptContextPointer(new ScriptContextQtWrapper(_engine, result)) : ScriptContextPointer(); + return result ? std::make_shared(_engine, result) : ScriptContextPointer(); } ScriptValue ScriptContextQtWrapper::thisObject() const { diff --git a/libraries/script-engine/src/qtscript/ScriptEngineQtScript.cpp b/libraries/script-engine/src/qtscript/ScriptEngineQtScript.cpp index c4a00188f1..ae76b2f627 100644 --- a/libraries/script-engine/src/qtscript/ScriptEngineQtScript.cpp +++ b/libraries/script-engine/src/qtscript/ScriptEngineQtScript.cpp @@ -777,7 +777,7 @@ ScriptValue ScriptEngineQtScript::newObject() { ScriptProgramPointer ScriptEngineQtScript::newProgram(const QString& sourceCode, const QString& fileName) { QScriptProgram result(sourceCode, fileName); - return ScriptProgramPointer(new ScriptProgramQtWrapper(this, result)); + return std::make_shared(this, result); } ScriptValue ScriptEngineQtScript::newQObject(QObject* object, @@ -857,7 +857,7 @@ ScriptContext* ScriptEngineQtScript::currentContext() const { return nullptr; } if (!_currContext || _currContext->toQtValue() != localCtx) { - _currContext = ScriptContextQtPointer(new ScriptContextQtWrapper(const_cast(this), localCtx)); + _currContext = std::make_shared(const_cast(this), localCtx); } return _currContext.get(); } diff --git a/libraries/script-engine/src/qtscript/ScriptEngineQtScript.h b/libraries/script-engine/src/qtscript/ScriptEngineQtScript.h index d073ad9749..3d99f0a39c 100644 --- a/libraries/script-engine/src/qtscript/ScriptEngineQtScript.h +++ b/libraries/script-engine/src/qtscript/ScriptEngineQtScript.h @@ -16,12 +16,12 @@ #ifndef hifi_ScriptEngineQtScript_h #define hifi_ScriptEngineQtScript_h +#include + #include -#include #include #include #include -#include #include #include @@ -35,15 +35,15 @@ class ScriptContextQtWrapper; class ScriptContextQtAgent; class ScriptEngineQtScript; class ScriptManager; -using ScriptEngineQtScriptPointer = QSharedPointer; -using ScriptContextQtPointer = QSharedPointer; +using ScriptEngineQtScriptPointer = std::shared_ptr; +using ScriptContextQtPointer = std::shared_ptr; Q_DECLARE_METATYPE(ScriptEngineQtScriptPointer); /// [QtScript] Implements ScriptEngine for QtScript and translates calls for QScriptEngine class ScriptEngineQtScript final : public QScriptEngine, public ScriptEngine, - public QEnableSharedFromThis { + public std::enable_shared_from_this { Q_OBJECT public: // construction diff --git a/libraries/script-engine/src/qtscript/ScriptProgramQtWrapper.cpp b/libraries/script-engine/src/qtscript/ScriptProgramQtWrapper.cpp index 11dba1417e..3a5b2ae68e 100644 --- a/libraries/script-engine/src/qtscript/ScriptProgramQtWrapper.cpp +++ b/libraries/script-engine/src/qtscript/ScriptProgramQtWrapper.cpp @@ -26,7 +26,7 @@ ScriptProgramQtWrapper* ScriptProgramQtWrapper::unwrap(ScriptProgramPointer val) ScriptSyntaxCheckResultPointer ScriptProgramQtWrapper::checkSyntax() const { QScriptSyntaxCheckResult result = _engine->checkSyntax(_value.sourceCode()); - return ScriptSyntaxCheckResultPointer(new ScriptSyntaxCheckResultQtWrapper(std::move(result))); + return std::make_shared(std::move(result)); } QString ScriptProgramQtWrapper::fileName() const { diff --git a/libraries/script-engine/src/qtscript/ScriptValueQtWrapper.cpp b/libraries/script-engine/src/qtscript/ScriptValueQtWrapper.cpp index 768ec41246..4eb32476ea 100644 --- a/libraries/script-engine/src/qtscript/ScriptValueQtWrapper.cpp +++ b/libraries/script-engine/src/qtscript/ScriptValueQtWrapper.cpp @@ -84,11 +84,11 @@ ScriptEnginePointer ScriptValueQtWrapper::engine() const { if (!_engine) { return ScriptEnginePointer(); } - return _engine->sharedFromThis(); + return _engine->shared_from_this(); } ScriptValueIteratorPointer ScriptValueQtWrapper::newIterator() const { - return ScriptValueIteratorPointer(new ScriptValueIteratorQtWrapper(_engine, _value)); + return std::make_shared(_engine, _value); } ScriptValue ScriptValueQtWrapper::property(const QString& name, const ScriptValue::ResolveFlags& mode) const {