mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-07 07:14:56 +01:00
Set up the ControlProtocolManager singleton in a slightly more robust way.
git-svn-id: svn://localhost/ardour2/branches/3.0@5768 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
25102143b2
commit
c221b09560
3 changed files with 14 additions and 9 deletions
|
|
@ -52,10 +52,9 @@ struct ControlProtocolInfo {
|
||||||
class ControlProtocolManager : public sigc::trackable, public PBD::Stateful
|
class ControlProtocolManager : public sigc::trackable, public PBD::Stateful
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ControlProtocolManager ();
|
|
||||||
~ControlProtocolManager ();
|
~ControlProtocolManager ();
|
||||||
|
|
||||||
static ControlProtocolManager& instance() { return *_instance; }
|
static ControlProtocolManager& instance();
|
||||||
|
|
||||||
void set_session (Session&);
|
void set_session (Session&);
|
||||||
void discover_control_protocols ();
|
void discover_control_protocols ();
|
||||||
|
|
@ -75,6 +74,7 @@ struct ControlProtocolInfo {
|
||||||
XMLNode& get_state (void);
|
XMLNode& get_state (void);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
ControlProtocolManager ();
|
||||||
static ControlProtocolManager* _instance;
|
static ControlProtocolManager* _instance;
|
||||||
|
|
||||||
Session* _session;
|
Session* _session;
|
||||||
|
|
|
||||||
|
|
@ -39,12 +39,9 @@ ControlProtocolManager* ControlProtocolManager::_instance = 0;
|
||||||
const string ControlProtocolManager::state_node_name = X_("ControlProtocols");
|
const string ControlProtocolManager::state_node_name = X_("ControlProtocols");
|
||||||
|
|
||||||
ControlProtocolManager::ControlProtocolManager ()
|
ControlProtocolManager::ControlProtocolManager ()
|
||||||
|
: _session (0)
|
||||||
{
|
{
|
||||||
if (_instance == 0) {
|
|
||||||
_instance = this;
|
|
||||||
}
|
|
||||||
|
|
||||||
_session = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ControlProtocolManager::~ControlProtocolManager()
|
ControlProtocolManager::~ControlProtocolManager()
|
||||||
|
|
@ -388,3 +385,13 @@ ControlProtocolManager::set_protocol_states (const XMLNode& node)
|
||||||
cpi->state = new XMLNode (*child);
|
cpi->state = new XMLNode (*child);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ControlProtocolManager&
|
||||||
|
ControlProtocolManager::instance ()
|
||||||
|
{
|
||||||
|
if (_instance == 0) {
|
||||||
|
_instance = new ControlProtocolManager ();
|
||||||
|
}
|
||||||
|
|
||||||
|
return *_instance;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -356,8 +356,6 @@ ARDOUR::init (bool use_vst, bool try_optimization)
|
||||||
void
|
void
|
||||||
ARDOUR::init_post_engine ()
|
ARDOUR::init_post_engine ()
|
||||||
{
|
{
|
||||||
/* singleton - first object is "it" */
|
|
||||||
new ControlProtocolManager ();
|
|
||||||
ControlProtocolManager::instance().discover_control_protocols ();
|
ControlProtocolManager::instance().discover_control_protocols ();
|
||||||
|
|
||||||
XMLNode* node;
|
XMLNode* node;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue