X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fsend_ui.cc;h=90ff3de717637378aa6e3260020c05a7158aa2e1;hb=e11b3f90c2d02735a071d526d67cfd0de90cbac3;hp=8ce3838176b25e960a61d18ff7c58057a25930d8;hpb=a157537898eccf08009281633b19970515366a78;p=ardour.git diff --git a/gtk2_ardour/send_ui.cc b/gtk2_ardour/send_ui.cc index 8ce3838176..90ff3de717 100644 --- a/gtk2_ardour/send_ui.cc +++ b/gtk2_ardour/send_ui.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -28,12 +27,13 @@ #include "gui_thread.h" using namespace ARDOUR; +using namespace PBD; -SendUI::SendUI (Send& s, Session& se) +SendUI::SendUI (boost::shared_ptr s, Session& se) : _send (s), _session (se), - gpm (s, se), - panners (s, se) + gpm (s->io(), se), + panners (s->io(), se) { hbox.pack_start (gpm, true, true); set_name ("SendUIFrame"); @@ -44,7 +44,7 @@ SendUI::SendUI (Send& s, Session& se) vbox.pack_start (hbox, false, false, false); vbox.pack_start (panners, false,false); - io = new IOSelector (se, s, false); + io = manage (new IOSelector (se, s->io(), false)); pack_start (vbox, false, false); @@ -52,10 +52,10 @@ SendUI::SendUI (Send& s, Session& se) show_all (); - _send.set_metering (true); + _send->set_metering (true); - _send.output_changed.connect (mem_fun (*this, &SendUI::ins_changed)); - _send.output_changed.connect (mem_fun (*this, &SendUI::outs_changed)); + _send->io()->input_changed.connect (mem_fun (*this, &SendUI::ins_changed)); + _send->io()->output_changed.connect (mem_fun (*this, &SendUI::outs_changed)); panners.set_width (Wide); panners.setup_pan (); @@ -69,8 +69,8 @@ SendUI::SendUI (Send& s, Session& se) SendUI::~SendUI () { - _send.set_metering (false); - + _send->set_metering (false); + /* XXX not clear that we need to do this */ screen_update_connection.disconnect(); @@ -96,14 +96,6 @@ SendUI::outs_changed (IOChange change, void* ignored) } } -void -SendUI::send_going_away (Redirect *ignored) -{ - ENSURE_GUI_THREAD (bind (mem_fun (*this, &SendUI::send_going_away), ignored)); - - delete this; -} - void SendUI::update () { @@ -112,12 +104,12 @@ SendUI::update () void SendUI::fast_update () { - if (_session.meter_falloff() > 0.0f) { + if (Config->get_meter_falloff() > 0.0f) { gpm.update_meters (); } } -SendUIWindow::SendUIWindow (Send& s, Session& ss) +SendUIWindow::SendUIWindow (boost::shared_ptr s, Session& ss) { ui = new SendUI (s, ss); @@ -129,8 +121,8 @@ SendUIWindow::SendUIWindow (Send& s, Session& ss) add (vpacker); set_name ("SendUIWindow"); - - s.GoingAway.connect (mem_fun (*this, &SendUIWindow::send_going_away)); + + going_away_connection = s->GoingAway.connect (mem_fun (*this, &SendUIWindow::send_going_away)); signal_delete_event().connect (bind (ptr_fun (just_hide_it), reinterpret_cast (this))); @@ -142,10 +134,10 @@ SendUIWindow::~SendUIWindow () } void -SendUIWindow::send_going_away (Redirect *ignored) +SendUIWindow::send_going_away () { - ENSURE_GUI_THREAD(bind (mem_fun (*this, &SendUIWindow::send_going_away), ignored)); - - delete this; + ENSURE_GUI_THREAD (mem_fun (*this, &SendUIWindow::send_going_away)); + delete_when_idle (this); + going_away_connection.disconnect (); }