From 6122fa145db9beadb66581223c80a48cc11901fc Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Fri, 6 Nov 2015 17:02:56 -0800 Subject: [PATCH] More PR feedback --- interface/src/Menu.cpp | 2 +- libraries/shared/src/DependencyManager.cpp | 4 ++-- libraries/shared/src/SharedUtil.h | 11 ++++++----- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 3ed31e609a..24033325f6 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -47,7 +47,7 @@ static const char* const MENU_PROPERTY_NAME = "com.highfidelity.Menu"; Menu* Menu::getInstance() { - static Menu* instance = globalInstace(MENU_PROPERTY_NAME); + static Menu* instance = globalInstance(MENU_PROPERTY_NAME); return instance; } diff --git a/libraries/shared/src/DependencyManager.cpp b/libraries/shared/src/DependencyManager.cpp index 5100d99691..a870feab98 100644 --- a/libraries/shared/src/DependencyManager.cpp +++ b/libraries/shared/src/DependencyManager.cpp @@ -17,10 +17,10 @@ static const char* const DEPENDENCY_PROPERTY_NAME = "com.highfidelity.DependencyMananger"; DependencyManager& DependencyManager::manager() { - static DependencyManager* instance = globalInstace(DEPENDENCY_PROPERTY_NAME); + static DependencyManager* instance = globalInstance(DEPENDENCY_PROPERTY_NAME); return *instance; } QSharedPointer& DependencyManager::safeGet(size_t hashCode) { return _instanceHash[hashCode]; -} \ No newline at end of file +} diff --git a/libraries/shared/src/SharedUtil.h b/libraries/shared/src/SharedUtil.h index 097444a62c..89ccba1479 100644 --- a/libraries/shared/src/SharedUtil.h +++ b/libraries/shared/src/SharedUtil.h @@ -27,10 +27,10 @@ // Provides efficient access to a named global type. By storing the value // in the QApplication by name we can implement the singleton pattern and // have the single instance function across DLL boundaries. -template -T* globalInstace(const char* propertyName, Args&&... args) { - static std::shared_ptr instancePtr; - static T *resultInstance { nullptr }; +template +T* globalInstance(const char* propertyName, Args&&... args) { + static std::unique_ptr instancePtr; + static T* resultInstance { nullptr }; static std::mutex mutex; if (!resultInstance) { std::unique_lock lock(mutex); @@ -39,7 +39,8 @@ T* globalInstace(const char* propertyName, Args&&... args) { if (variant.isNull()) { // Since we're building the object, store it in a shared_ptr so it's // destroyed by the destructor of the static instancePtr - instancePtr = std::make_shared(args...); + instancePtr = std::unique_ptr(new T(std::forward(args)...)); + void* voidInstance = &(*instancePtr); variant = QVariant::fromValue(voidInstance); qApp->setProperty(propertyName, variant);