prevent crash during track-deletion (un-selecting deleted tracks)
This commit is contained in:
parent
33942e6d52
commit
9990da35d8
@ -82,6 +82,7 @@
|
|||||||
#include "item_counts.h"
|
#include "item_counts.h"
|
||||||
#include "keyboard.h"
|
#include "keyboard.h"
|
||||||
#include "midi_region_view.h"
|
#include "midi_region_view.h"
|
||||||
|
#include "mixer_ui.h"
|
||||||
#include "mixer_strip.h"
|
#include "mixer_strip.h"
|
||||||
#include "mouse_cursors.h"
|
#include "mouse_cursors.h"
|
||||||
#include "normalize_dialog.h"
|
#include "normalize_dialog.h"
|
||||||
@ -7360,6 +7361,9 @@ edit your ardour.rc file to set the\n\
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Mixer_UI::instance()->selection().block_routes_changed (true);
|
||||||
|
selection->block_tracks_changed (true);
|
||||||
{
|
{
|
||||||
DisplaySuspender ds;
|
DisplaySuspender ds;
|
||||||
boost::shared_ptr<RouteList> rl (new RouteList);
|
boost::shared_ptr<RouteList> rl (new RouteList);
|
||||||
@ -7372,6 +7376,9 @@ edit your ardour.rc file to set the\n\
|
|||||||
* destructors are called,
|
* destructors are called,
|
||||||
* diskstream drops references, save_state is called (again for every track)
|
* diskstream drops references, save_state is called (again for every track)
|
||||||
*/
|
*/
|
||||||
|
selection->block_tracks_changed (false);
|
||||||
|
Mixer_UI::instance()->selection().block_routes_changed (false);
|
||||||
|
selection->TracksChanged (); /* EMIT SIGNAL */
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -32,8 +32,8 @@ using namespace std;
|
|||||||
using namespace ARDOUR;
|
using namespace ARDOUR;
|
||||||
using namespace PBD;
|
using namespace PBD;
|
||||||
|
|
||||||
|
unsigned int RouteProcessorSelection::_no_route_change_signal = 0;
|
||||||
RouteProcessorSelection::RouteProcessorSelection()
|
RouteProcessorSelection::RouteProcessorSelection()
|
||||||
: _no_route_change_signal (false)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ RouteProcessorSelection::clear_routes ()
|
|||||||
}
|
}
|
||||||
axes.clear ();
|
axes.clear ();
|
||||||
drop_connections ();
|
drop_connections ();
|
||||||
if (!_no_route_change_signal) {
|
if (0 == _no_route_change_signal) {
|
||||||
RoutesChanged ();
|
RoutesChanged ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -110,7 +110,7 @@ RouteProcessorSelection::add (AxisView* r)
|
|||||||
ms->CatchDeletion.connect (*this, invalidator (*this), boost::bind (&RouteProcessorSelection::remove, this, _1), gui_context());
|
ms->CatchDeletion.connect (*this, invalidator (*this), boost::bind (&RouteProcessorSelection::remove, this, _1), gui_context());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_no_route_change_signal) {
|
if (0 == _no_route_change_signal) {
|
||||||
RoutesChanged();
|
RoutesChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -125,7 +125,7 @@ RouteProcessorSelection::remove (AxisView* r)
|
|||||||
if ((i = find (axes.begin(), axes.end(), r)) != axes.end()) {
|
if ((i = find (axes.begin(), axes.end(), r)) != axes.end()) {
|
||||||
(*i)->set_selected (false);
|
(*i)->set_selected (false);
|
||||||
axes.erase (i);
|
axes.erase (i);
|
||||||
if (!_no_route_change_signal) {
|
if (0 == _no_route_change_signal) {
|
||||||
RoutesChanged ();
|
RoutesChanged ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -153,5 +153,10 @@ RouteProcessorSelection::empty ()
|
|||||||
void
|
void
|
||||||
RouteProcessorSelection::block_routes_changed (bool yn)
|
RouteProcessorSelection::block_routes_changed (bool yn)
|
||||||
{
|
{
|
||||||
_no_route_change_signal = yn;
|
if (yn) {
|
||||||
|
++_no_route_change_signal;
|
||||||
|
} else {
|
||||||
|
assert (_no_route_change_signal > 0);
|
||||||
|
--_no_route_change_signal;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ class RouteProcessorSelection : public PBD::ScopedConnectionList, public sigc::t
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void removed (AxisView*);
|
void removed (AxisView*);
|
||||||
bool _no_route_change_signal;
|
static unsigned int _no_route_change_signal;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user