amend 7c7bf6c88b
, do not notify UI during cleanup
This fixes a rare crash where the signal causes a cxa_pure_virtual in PBD::Signal1 during destruction.
This commit is contained in:
parent
ad49de022a
commit
55afdc2aa4
@ -52,7 +52,7 @@ class LIBARDOUR_API TransportMasterManager : public boost::noncopyable
|
||||
|
||||
int add (SyncSource type, std::string const & name, bool removeable = true);
|
||||
int remove (std::string const & name);
|
||||
void clear ();
|
||||
void clear (bool emit = true);
|
||||
|
||||
PBD::Signal1<void,std::shared_ptr<TransportMaster> > Added;
|
||||
PBD::Signal1<void,std::shared_ptr<TransportMaster> > Removed; // null argument means "clear"
|
||||
|
@ -754,7 +754,7 @@ ARDOUR::cleanup ()
|
||||
engine_startup_connection.disconnect ();
|
||||
|
||||
delete &ControlProtocolManager::instance ();
|
||||
ARDOUR::TransportMasterManager::instance ().clear ();
|
||||
ARDOUR::TransportMasterManager::instance ().clear (false);
|
||||
ARDOUR::AudioEngine::destroy ();
|
||||
ARDOUR::TransportMasterManager::destroy ();
|
||||
|
||||
|
@ -582,7 +582,7 @@ TransportMasterManager::set_current (std::string const & str)
|
||||
|
||||
|
||||
void
|
||||
TransportMasterManager::clear ()
|
||||
TransportMasterManager::clear (bool emit)
|
||||
{
|
||||
{
|
||||
Glib::Threads::RWLock::WriterLock lm (lock);
|
||||
@ -590,7 +590,9 @@ TransportMasterManager::clear ()
|
||||
_transport_masters.clear ();
|
||||
}
|
||||
|
||||
Removed (std::shared_ptr<TransportMaster>());
|
||||
if (emit) {
|
||||
Removed (std::shared_ptr<TransportMaster>());
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
|
Loading…
Reference in New Issue
Block a user