colinf's 2011-12-08 patch for freesound mootcher (add stop, remove URI, clear barberp...
[ardour.git] / libs / midi++2 / manager.cc
index b411a1ddad9b67c3c64c5b88f5bdbf3feb2d4c6a..61d4c4c363ba31ac25c5f9fa8198af6058eb9ad4 100644 (file)
@@ -67,9 +67,11 @@ Manager::~Manager ()
 Port *
 Manager::add_port (Port* p)
 {
-       RCUWriter<PortList> writer (_ports);
-       boost::shared_ptr<PortList> pw = writer.get_copy ();
-       pw->push_back (p);
+       {
+               RCUWriter<PortList> writer (_ports);
+               boost::shared_ptr<PortList> pw = writer.get_copy ();
+               pw->push_back (p);
+       }
 
        PortsChanged (); /* EMIT SIGNAL */
 
@@ -79,9 +81,11 @@ Manager::add_port (Port* p)
 void
 Manager::remove_port (Port* p)
 {
-       RCUWriter<PortList> writer (_ports);
-       boost::shared_ptr<PortList> pw = writer.get_copy ();
-       pw->remove (p);
+       {
+               RCUWriter<PortList> writer (_ports);
+               boost::shared_ptr<PortList> pw = writer.get_copy ();
+               pw->remove (p);
+       }
 
        PortsChanged (); /* EMIT SIGNAL */
 }
@@ -163,3 +167,10 @@ Manager::set_port_states (list<XMLNode*> s)
                }
        }
 }
+
+void
+Manager::destroy ()
+{
+       delete theManager;
+       theManager = 0;
+}