Prepare generic spill ([mix]busses)

This commit is contained in:
Robin Gareus 2017-01-16 22:30:26 +01:00
parent 17d54a0d1c
commit a9f0e218f5
4 changed files with 31 additions and 29 deletions

View File

@ -1354,11 +1354,13 @@ Mixer_UI::redisplay_track_list ()
return;
}
boost::shared_ptr<VCA> sv = spilled_vca.lock ();
if (sv) {
spill_redisplay (sv);
return;
boost::shared_ptr<Stripable> ss = spilled_strip.lock ();
if (ss) {
boost::shared_ptr<VCA> sv = boost::dynamic_pointer_cast<VCA> (ss);
if (sv) {
spill_redisplay (sv);
return;
}
}
TreeModel::Children rows = track_model->children();
@ -2830,13 +2832,13 @@ Mixer_UI::do_vca_unassign (boost::shared_ptr<VCA> vca)
}
void
Mixer_UI::show_vca_slaves (boost::shared_ptr<VCA> vca)
Mixer_UI::show_spill (boost::shared_ptr<Stripable> s)
{
boost::shared_ptr<VCA> v = spilled_vca.lock();
if (v != vca) {
spilled_vca = vca;
show_vca_change (vca); /* EMIT SIGNAL */
if (vca) {
boost::shared_ptr<Stripable> ss = spilled_strip.lock();
if (ss != s) {
spilled_strip = s;
show_spill_change (s); /* EMIT SIGNAL */
if (s) {
_group_tabs->hide ();
} else {
_group_tabs->show ();
@ -2846,9 +2848,9 @@ Mixer_UI::show_vca_slaves (boost::shared_ptr<VCA> vca)
}
bool
Mixer_UI::showing_vca_slaves_for (boost::shared_ptr<VCA> vca) const
Mixer_UI::showing_spill_for (boost::shared_ptr<Stripable> s) const
{
return vca == spilled_vca.lock();
return s == spilled_strip.lock();
}
void

View File

@ -116,10 +116,10 @@ class Mixer_UI : public Gtkmm2ext::Tabbable, public PBD::ScopedConnectionList, p
void do_vca_assign (boost::shared_ptr<ARDOUR::VCA>);
void do_vca_unassign (boost::shared_ptr<ARDOUR::VCA>);
void show_vca_slaves (boost::shared_ptr<ARDOUR::VCA>);
bool showing_vca_slaves_for (boost::shared_ptr<ARDOUR::VCA>) const;
void show_spill (boost::shared_ptr<ARDOUR::Stripable>);
bool showing_spill_for (boost::shared_ptr<ARDOUR::Stripable>) const;
sigc::signal1<void,boost::shared_ptr<ARDOUR::VCA> > show_vca_change;
sigc::signal1<void,boost::shared_ptr<ARDOUR::Stripable> > show_spill_change;
RouteProcessorSelection& selection() { return _selection; }
void register_actions ();
@ -382,7 +382,7 @@ class Mixer_UI : public Gtkmm2ext::Tabbable, public PBD::ScopedConnectionList, p
// true if mixer list is visible
bool _show_mixer_list;
mutable boost::weak_ptr<ARDOUR::VCA> spilled_vca;
mutable boost::weak_ptr<ARDOUR::Stripable> spilled_strip;
void escape ();

View File

@ -148,7 +148,7 @@ VCAMasterStrip::VCAMasterStrip (Session* s, boost::shared_ptr<VCA> v)
mute_changed ();
spill_change (boost::shared_ptr<VCA>());
Mixer_UI::instance()->show_vca_change.connect (sigc::mem_fun (*this, &VCAMasterStrip::spill_change));
Mixer_UI::instance()->show_spill_change.connect (sigc::mem_fun (*this, &VCAMasterStrip::spill_change));
_vca->PropertyChanged.connect (vca_connections, invalidator (*this), boost::bind (&VCAMasterStrip::vca_property_changed, this, _1), gui_context());
_vca->presentation_info().PropertyChanged.connect (vca_connections, invalidator (*this), boost::bind (&VCAMasterStrip::vca_property_changed, this, _1), gui_context());
@ -165,9 +165,9 @@ VCAMasterStrip::VCAMasterStrip (Session* s, boost::shared_ptr<VCA> v)
VCAMasterStrip::~VCAMasterStrip ()
{
if ((_session && !_session->deletion_in_progress()) && Mixer_UI::instance()->showing_vca_slaves_for (_vca)) {
if ((_session && !_session->deletion_in_progress()) && Mixer_UI::instance()->showing_spill_for (_vca)) {
/* cancel spill for this VCA */
Mixer_UI::instance()->show_vca_slaves (boost::shared_ptr<VCA>());
Mixer_UI::instance()->show_spill (boost::shared_ptr<Stripable>());
}
delete delete_dialog;
@ -179,9 +179,9 @@ VCAMasterStrip::~VCAMasterStrip ()
void
VCAMasterStrip::self_delete ()
{
if ((_session && !_session->deletion_in_progress()) && Mixer_UI::instance()->showing_vca_slaves_for (_vca)) {
if ((_session && !_session->deletion_in_progress()) && Mixer_UI::instance()->showing_spill_for (_vca)) {
/* cancel spill for this VCA */
Mixer_UI::instance()->show_vca_slaves (boost::shared_ptr<VCA>());
Mixer_UI::instance()->show_spill (boost::shared_ptr<Stripable>());
}
/* Drop reference immediately, delete self when idle */
_vca.reset ();
@ -457,15 +457,15 @@ VCAMasterStrip::build_context_menu ()
void
VCAMasterStrip::spill ()
{
if (Mixer_UI::instance()->showing_vca_slaves_for (_vca)) {
Mixer_UI::instance()->show_vca_slaves (boost::shared_ptr<VCA>());
if (Mixer_UI::instance()->showing_spill_for (_vca)) {
Mixer_UI::instance()->show_spill (boost::shared_ptr<Stripable>());
} else {
Mixer_UI::instance()->show_vca_slaves (_vca);
Mixer_UI::instance()->show_spill (_vca);
}
}
void
VCAMasterStrip::spill_change (boost::shared_ptr<VCA> vca)
VCAMasterStrip::spill_change (boost::shared_ptr<Stripable> vca)
{
if (vca != _vca) {
vertical_button.set_active_state (Gtkmm2ext::Off);
@ -491,8 +491,8 @@ VCAMasterStrip::drop_all_slaves ()
{
_vca->Drop (); /* EMIT SIGNAL */
if (Mixer_UI::instance()->showing_vca_slaves_for (_vca)) {
Mixer_UI::instance()->show_vca_slaves (boost::shared_ptr<VCA>());
if (Mixer_UI::instance()->showing_spill_for (_vca)) {
Mixer_UI::instance()->show_spill (boost::shared_ptr<Stripable>());
}
}

View File

@ -77,7 +77,7 @@ class VCAMasterStrip : public AxisView, public Gtk::EventBox
PBD::ScopedConnectionList vca_connections;
void spill ();
void spill_change (boost::shared_ptr<ARDOUR::VCA>);
void spill_change (boost::shared_ptr<ARDOUR::Stripable>);
void hide_clicked();
bool width_button_pressed (GdkEventButton *);
void set_selected (bool);