X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fsend_ui.cc;h=1014f5a07a9e977da1d060606016d3b91773eff4;hb=0d36301907afd612f93a7bfa53724cc9a17724de;hp=9925ff51d4331caf405f79a8ab3cf2d751d445dd;hpb=8277d134b9733aee344782891c99f07114384d9e;p=ardour.git diff --git a/gtk2_ardour/send_ui.cc b/gtk2_ardour/send_ui.cc index 9925ff51d4..1014f5a07a 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 "ardour/io.h" +#include "ardour/send.h" + #include "utils.h" #include "send_ui.h" #include "io_selector.h" @@ -31,11 +32,14 @@ using namespace ARDOUR; using namespace PBD; SendUI::SendUI (boost::shared_ptr s, Session& se) - : _send (s), - _session (se), - gpm (s, se), - panners (s, 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 (boost::shared_ptr 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); @@ -55,8 +59,8 @@ SendUI::SendUI (boost::shared_ptr s, Session& se) _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 (); @@ -71,7 +75,7 @@ SendUI::SendUI (boost::shared_ptr s, Session& se) SendUI::~SendUI () { _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 (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 (); }