From 81bff606456ccd972c21fc8ef37268381fe694c7 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Tue, 25 Feb 2014 14:53:57 -0800 Subject: [PATCH] change singleton approach to not require delete --- interface/src/Application.cpp | 1 - interface/src/MenuScriptingInterface.cpp | 21 ++------------------- interface/src/MenuScriptingInterface.h | 6 +----- 3 files changed, 3 insertions(+), 25 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 1d4599e90a..79b1fc0361 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -360,7 +360,6 @@ Application::~Application() { VoxelTreeElement::removeDeleteHook(&_voxels); // we don't need to do this processing on shutdown Menu::getInstance()->deleteLater(); - MenuScriptingInterface::deleteLaterIfExists(); _myAvatar = NULL; diff --git a/interface/src/MenuScriptingInterface.cpp b/interface/src/MenuScriptingInterface.cpp index 090c306bea..f1a44422b3 100644 --- a/interface/src/MenuScriptingInterface.cpp +++ b/interface/src/MenuScriptingInterface.cpp @@ -11,26 +11,9 @@ #include "MenuScriptingInterface.h" -MenuScriptingInterface* MenuScriptingInterface::_instance = NULL; -QMutex MenuScriptingInterface::_instanceMutex; - MenuScriptingInterface* MenuScriptingInterface::getInstance() { - // lock the menu instance mutex to make sure we don't race and create two menus and crash - _instanceMutex.lock(); - if (!_instance) { - _instance = new MenuScriptingInterface(); - } - _instanceMutex.unlock(); - return _instance; -} - -void MenuScriptingInterface::deleteLaterIfExists() { - _instanceMutex.lock(); - if (_instance) { - _instance->deleteLater(); - _instance = NULL; - } - _instanceMutex.unlock(); + static MenuScriptingInterface sharedInstance; + return &sharedInstance; } void MenuScriptingInterface::menuItemTriggered() { diff --git a/interface/src/MenuScriptingInterface.h b/interface/src/MenuScriptingInterface.h index 7359a35380..837d7e3cf7 100644 --- a/interface/src/MenuScriptingInterface.h +++ b/interface/src/MenuScriptingInterface.h @@ -9,6 +9,7 @@ #ifndef __hifi__MenuScriptingInterface__ #define __hifi__MenuScriptingInterface__ +#include #include #include #include @@ -21,7 +22,6 @@ class MenuScriptingInterface : public QObject { MenuScriptingInterface() { }; public: static MenuScriptingInterface* getInstance(); - static void deleteLaterIfExists(); private slots: friend class Menu; @@ -44,10 +44,6 @@ public slots: signals: void menuItemEvent(const QString& menuItem); - -private: - static QMutex _instanceMutex; - static MenuScriptingInterface* _instance; }; #endif /* defined(__hifi__MenuScriptingInterface__) */