From 37efeb7f2952e8001bad3b7b4e04562e345ce56b Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Tue, 5 Apr 2016 14:04:26 -0700 Subject: [PATCH] Avoid warning for expected unset PresentThread --- .../src/display-plugins/OpenGLDisplayPlugin.cpp | 6 ++++-- libraries/shared/src/DependencyManager.h | 11 +++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp index e5d98d18f7..3d997b0109 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp @@ -245,8 +245,10 @@ bool OpenGLDisplayPlugin::activate() { #if THREADED_PRESENT // Start the present thread if necessary - auto presentThread = DependencyManager::get(); - if (!presentThread) { + QSharedPointer presentThread; + if (DependencyManager::isSet()) { + presentThread = DependencyManager::get(); + } else { auto widget = _container->getPrimaryWidget(); DependencyManager::set(); presentThread = DependencyManager::get(); diff --git a/libraries/shared/src/DependencyManager.h b/libraries/shared/src/DependencyManager.h index c0568bc752..719763f706 100644 --- a/libraries/shared/src/DependencyManager.h +++ b/libraries/shared/src/DependencyManager.h @@ -49,6 +49,9 @@ public: template static QSharedPointer get(); + template + static bool isSet(); + template static QSharedPointer set(Args&&... args); @@ -89,6 +92,14 @@ QSharedPointer DependencyManager::get() { return instance.toStrongRef(); } +template +bool DependencyManager::isSet() { + static size_t hashCode = manager().getHashCode(); + + QSharedPointer& instance = manager().safeGet(hashCode); + return !instance.isNull(); +} + template QSharedPointer DependencyManager::set(Args&&... args) { static size_t hashCode = manager().getHashCode();