X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fsend_ui.cc;h=3fb6e8af47571a102f17c897a08cd2fce282c4ff;hb=2e1332f74f803a1be4c8bb4911266aef4b63f145;hp=be95f753e74b134edaf1c5a3167d3e460fd3387c;hpb=7ff370e79895d7eb293e7214689b791bd98415fb;p=ardour.git diff --git a/gtk2_ardour/send_ui.cc b/gtk2_ardour/send_ui.cc index be95f753e7..3fb6e8af47 100644 --- a/gtk2_ardour/send_ui.cc +++ b/gtk2_ardour/send_ui.cc @@ -15,12 +15,13 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ -#include #include +#include +#include + #include "utils.h" #include "send_ui.h" #include "io_selector.h" @@ -30,12 +31,15 @@ using namespace ARDOUR; using namespace PBD; -SendUI::SendUI (Send& s, Session& se) - : _send (s), - _session (se), - gpm (s, se), - panners (s, se) +SendUI::SendUI (boost::shared_ptr s, Session& se) + : _send (s) + , _session (se) + , gpm (se) + , panners (se) { + panners.set_io (s->io()); + gpm.set_io (s->io()); + hbox.pack_start (gpm, true, true); set_name ("SendUIFrame"); @@ -45,7 +49,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(), true)); pack_start (vbox, false, false); @@ -53,10 +57,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 (); @@ -70,8 +74,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(); @@ -97,14 +101,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 () { @@ -113,28 +109,26 @@ 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) + : ArdourDialog (string("Ardour: send ") + s->name()) { ui = new SendUI (s, ss); - vpacker.set_border_width (5); - hpacker.pack_start (*ui, true, true); - vpacker.pack_start (hpacker); + get_vbox()->set_border_width (5); + get_vbox()->pack_start (hpacker); - 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))); - } SendUIWindow::~SendUIWindow () @@ -143,10 +137,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 (); }