summaryrefslogtreecommitdiff
path: root/gtk2_ardour/io_selector.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2009-12-05 03:04:54 +0000
committerCarl Hetherington <carl@carlh.net>2009-12-05 03:04:54 +0000
commitabd80d0f64a4b32c3a8cce01c9aa1d6bc7ee64bb (patch)
treec46721af34d296670a6da0ce87eaaac1c5208f6f /gtk2_ardour/io_selector.cc
parentbdf5dead24c16e23977d4b3d2561dbb0f8a7ae4e (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.cc16
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")),