Set up the ControlProtocolManager singleton in a slightly more robust way.
authorCarl Hetherington <carl@carlh.net>
Mon, 12 Oct 2009 17:46:17 +0000 (17:46 +0000)
committerCarl Hetherington <carl@carlh.net>
Mon, 12 Oct 2009 17:46:17 +0000 (17:46 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@5768 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/ardour/control_protocol_manager.h
libs/ardour/control_protocol_manager.cc
libs/ardour/globals.cc

index 359e1e8540c9a518de9df362e63132353611ac6b..f315744e508256a545f5b5d4cbdb885f13b0c34e 100644 (file)
@@ -52,10 +52,9 @@ struct ControlProtocolInfo {
  class ControlProtocolManager : public sigc::trackable, public PBD::Stateful
 {
   public:
-       ControlProtocolManager ();
        ~ControlProtocolManager ();
 
-       static ControlProtocolManager& instance() { return *_instance; }
+       static ControlProtocolManager& instance();
 
        void set_session (Session&);
        void discover_control_protocols ();
@@ -75,6 +74,7 @@ struct ControlProtocolInfo {
        XMLNode& get_state (void);
 
   private:
+       ControlProtocolManager ();
        static ControlProtocolManager* _instance;
 
        Session* _session;
index be173e71024264b690377ebd93d17e627c4f1a41..f0bdfae874d0f2fa98c7beb37a7d5d58adf8138a 100644 (file)
@@ -39,12 +39,9 @@ ControlProtocolManager* ControlProtocolManager::_instance = 0;
 const string ControlProtocolManager::state_node_name = X_("ControlProtocols");
 
 ControlProtocolManager::ControlProtocolManager ()
+       : _session (0)
 {
-       if (_instance == 0) {
-               _instance = this;
-       }
-
-       _session = 0;
+       
 }
 
 ControlProtocolManager::~ControlProtocolManager()
@@ -388,3 +385,13 @@ ControlProtocolManager::set_protocol_states (const XMLNode& node)
                cpi->state = new XMLNode (*child);
        }
 }
+
+ControlProtocolManager&
+ControlProtocolManager::instance ()
+{
+       if (_instance == 0) {
+               _instance = new ControlProtocolManager ();
+       }
+
+       return *_instance;
+}
index ca9334547125f5481f819351b39057c48c068a6d..4d6498654f22b13debe326f89970e677dbf3fc8e 100644 (file)
@@ -356,8 +356,6 @@ ARDOUR::init (bool use_vst, bool try_optimization)
 void
 ARDOUR::init_post_engine ()
 {
-       /* singleton - first object is "it" */
-       new ControlProtocolManager ();
        ControlProtocolManager::instance().discover_control_protocols ();
 
        XMLNode* node;