diff options
author | Carl Hetherington <carl@carlh.net> | 2009-12-05 03:04:54 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2009-12-05 03:04:54 +0000 |
commit | abd80d0f64a4b32c3a8cce01c9aa1d6bc7ee64bb (patch) | |
tree | c46721af34d296670a6da0ce87eaaac1c5208f6f /gtk2_ardour/io_selector.cc | |
parent | bdf5dead24c16e23977d4b3d2561dbb0f8a7ae4e (diff) |
Clean up and comment PortMatrix event handling a bit.
Fix problems with attempts to access Session after it has been
destroyed.
git-svn-id: svn://localhost/ardour2/branches/3.0@6290 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/io_selector.cc')
-rw-r--r-- | gtk2_ardour/io_selector.cc | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/gtk2_ardour/io_selector.cc b/gtk2_ardour/io_selector.cc index 273a03ac87..43052efd11 100644 --- a/gtk2_ardour/io_selector.cc +++ b/gtk2_ardour/io_selector.cc @@ -41,7 +41,7 @@ using namespace ARDOUR; using namespace Gtk; -IOSelector::IOSelector (Gtk::Window* p, ARDOUR::Session& session, boost::shared_ptr<ARDOUR::IO> io) +IOSelector::IOSelector (Gtk::Window* p, ARDOUR::Session* session, boost::shared_ptr<ARDOUR::IO> io) : PortMatrix (p, session, io->default_type()) , _io (io) { @@ -67,6 +67,10 @@ IOSelector::IOSelector (Gtk::Window* p, ARDOUR::Session& session, boost::shared_ void IOSelector::setup_ports (int dim) { + if (!_session) { + return; + } + _ports[dim].suspend_signals (); if (dim == _other) { @@ -91,7 +95,7 @@ IOSelector::set_state (ARDOUR::BundleChannel c[2], bool s) for (ARDOUR::Bundle::PortList::const_iterator i = our_ports.begin(); i != our_ports.end(); ++i) { for (ARDOUR::Bundle::PortList::const_iterator j = other_ports.begin(); j != other_ports.end(); ++j) { - Port* f = _session.engine().get_port_by_name (*i); + Port* f = _session->engine().get_port_by_name (*i); if (!f) { return; } @@ -120,7 +124,7 @@ IOSelector::get_state (ARDOUR::BundleChannel c[2]) const for (ARDOUR::Bundle::PortList::const_iterator i = our_ports.begin(); i != our_ports.end(); ++i) { for (ARDOUR::Bundle::PortList::const_iterator j = other_ports.begin(); j != other_ports.end(); ++j) { - Port* f = _session.engine().get_port_by_name (*i); + Port* f = _session->engine().get_port_by_name (*i); /* since we are talking about an IO, our ports should all have an associated Port *, so the above call should never fail */ @@ -152,7 +156,7 @@ IOSelector::list_is_global (int dim) const return (dim == _other); } -IOSelectorWindow::IOSelectorWindow (ARDOUR::Session& session, boost::shared_ptr<ARDOUR::IO> io, bool /*can_cancel*/) +IOSelectorWindow::IOSelectorWindow (ARDOUR::Session* session, boost::shared_ptr<ARDOUR::IO> io, bool /*can_cancel*/) : _selector (this, session, io) { set_name ("IOSelectorWindow2"); @@ -209,7 +213,7 @@ IOSelectorWindow::io_name_changed (void* src) set_title (title); } -PortInsertUI::PortInsertUI (Gtk::Window* parent, ARDOUR::Session& sess, boost::shared_ptr<ARDOUR::PortInsert> pi) +PortInsertUI::PortInsertUI (Gtk::Window* parent, ARDOUR::Session* sess, boost::shared_ptr<ARDOUR::PortInsert> pi) : input_selector (parent, sess, pi->input()) , output_selector (parent, sess, pi->output()) { @@ -235,7 +239,7 @@ PortInsertUI::finished (IOSelector::Result r) } -PortInsertWindow::PortInsertWindow (ARDOUR::Session& sess, boost::shared_ptr<ARDOUR::PortInsert> pi, bool can_cancel) +PortInsertWindow::PortInsertWindow (ARDOUR::Session* sess, boost::shared_ptr<ARDOUR::PortInsert> pi, bool can_cancel) : ArdourDialog ("port insert dialog"), _portinsertui (this, sess, pi), ok_button (can_cancel ? _("OK"): _("Close")), |