fix duplicate name check for new transport master
authorPaul Davis <paul@linuxaudiosystems.com>
Sun, 7 Oct 2018 16:43:28 +0000 (12:43 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Sun, 7 Oct 2018 16:43:28 +0000 (12:43 -0400)
libs/ardour/transport_master_manager.cc

index 1eed0e5d1fa5be24b45da26c27438c40eab55a1a..063224632c2dc8d3740b239ed04570770a8ca01f 100644 (file)
@@ -315,6 +315,14 @@ TransportMasterManager::add (SyncSource type, std::string const & name, bool rem
 
        {
                Glib::Threads::RWLock::WriterLock lm (lock);
+
+               for (TransportMasters::const_iterator t = _transport_masters.begin(); t != _transport_masters.end(); ++t) {
+                       if ((*t)->name() == name) {
+                               error << string_compose (_("There is already a transport master named \"%1\" - not duplicated"), name) << endmsg;
+                               return -1;
+                       }
+               }
+
                tm = TransportMaster::factory (type, name, removeable);
                ret = add_locked (tm);
        }
@@ -333,12 +341,6 @@ TransportMasterManager::add_locked (boost::shared_ptr<TransportMaster> tm)
                return -1;
        }
 
-       for (TransportMasters::const_iterator t = _transport_masters.begin(); t != _transport_masters.end(); ++t) {
-               if ((*t)->name() == tm->name()) {
-                       error << string_compose (_("There is already a transport master named \"%1\" - not duplicated"), tm->name()) << endmsg;
-                       return -1;
-               }
-       }
 
        if (_session) {
                tm->set_session (_session);