diff options
author | Rodrigo Severo <rodrigo@fabricadeideias.com> | 2012-06-13 03:07:50 +0000 |
---|---|---|
committer | Rodrigo Severo <rodrigo@fabricadeideias.com> | 2012-06-13 03:07:50 +0000 |
commit | 335bf3d21e05a4ba9afc3be803d1cc71b39cc11c (patch) | |
tree | 9560952107d57a4ad89e7eaf73d2ddd1ee1c6043 /libs/surfaces | |
parent | 5573b6a049646fd0fe10d4d79f98cf272ee1f107 (diff) |
Prevents a master fader being created without a control at Surface::setup_master_fader;
Several DEBUG_TRACE changes to help identify race conditions;
git-svn-id: svn://localhost/ardour2/branches/3.0@12693 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/surfaces')
-rw-r--r-- | libs/surfaces/mackie/mackie_control_protocol.cc | 22 | ||||
-rw-r--r-- | libs/surfaces/mackie/surface.cc | 14 |
2 files changed, 25 insertions, 11 deletions
diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc index ed894c2e8a..73d0f2c7fe 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.cc +++ b/libs/surfaces/mackie/mackie_control_protocol.cc @@ -124,18 +124,22 @@ MackieControlProtocol::MackieControlProtocol (Session& session) MackieControlProtocol::~MackieControlProtocol() { - DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::~MackieControlProtocol\n"); + DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::~MackieControlProtocol init\n"); + DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::~MackieControlProtocol drop_connections ()\n"); drop_connections (); + + DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::~MackieControlProtocol tear_down_gui ()\n"); tear_down_gui (); _active = false; /* stop event loop */ - + DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::~MackieControlProtocol BaseUI::quit ()\n"); BaseUI::quit (); try { + DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::~MackieControlProtocol close()\n"); close(); } catch (exception & e) { @@ -145,9 +149,9 @@ MackieControlProtocol::~MackieControlProtocol() cout << "~MackieControlProtocol caught unknown" << endl; } - DEBUG_TRACE (DEBUG::MackieControl, "finished ~MackieControlProtocol::MackieControlProtocol\n"); - _instance = 0; + + DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::~MackieControlProtocol done\n"); } void @@ -371,6 +375,8 @@ MackieControlProtocol::switch_banks (uint32_t initial, bool force) int MackieControlProtocol::set_active (bool yn) { + DEBUG_TRACE (DEBUG::MackieControl, string_compose("MackieControlProtocol::set_active init with yn: '%1'\n", yn)); + if (yn == _active) { return 0; } @@ -401,6 +407,8 @@ MackieControlProtocol::set_active (bool yn) } + DEBUG_TRACE (DEBUG::MackieControl, string_compose("MackieControlProtocol::set_active done with yn: '%1'\n", yn)); + return 0; } @@ -679,7 +687,7 @@ MackieControlProtocol::close() XMLNode& MackieControlProtocol::get_state() { - DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::get_state\n"); + DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::get_state init\n"); char buf[16]; // add name of protocol @@ -697,6 +705,8 @@ MackieControlProtocol::get_state() node->add_property (X_("device-profile"), _device_profile.name()); node->add_property (X_("device-name"), _device_info.name()); + DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::get_state done\n"); + return *node; } @@ -737,6 +747,8 @@ MackieControlProtocol::set_state (const XMLNode & node, int /*version*/) switch_banks (bank, true); } + DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::set_state done\n"); + return retval; } diff --git a/libs/surfaces/mackie/surface.cc b/libs/surfaces/mackie/surface.cc index e55dad18e3..0344d7e135 100644 --- a/libs/surfaces/mackie/surface.cc +++ b/libs/surfaces/mackie/surface.cc @@ -65,7 +65,7 @@ Surface::Surface (MackieControlProtocol& mcp, const std::string& device_name, ui , _jog_wheel (0) , _last_master_gain_written (-0.0f) { - DEBUG_TRACE (DEBUG::MackieControl, "Surface::init\n"); + DEBUG_TRACE (DEBUG::MackieControl, "Surface::Surface init\n"); _port = new SurfacePort (*this); @@ -93,12 +93,12 @@ Surface::Surface (MackieControlProtocol& mcp, const std::string& device_name, ui connect_to_signals (); - DEBUG_TRACE (DEBUG::MackieControl, "Surface::init finish\n"); + DEBUG_TRACE (DEBUG::MackieControl, "Surface::Surface done\n"); } Surface::~Surface () { - DEBUG_TRACE (DEBUG::MackieControl, "Surface: destructor\n"); + DEBUG_TRACE (DEBUG::MackieControl, "Surface::~Surface init\n"); zero_all (); @@ -114,6 +114,8 @@ Surface::~Surface () delete _jog_wheel; delete _port; + + DEBUG_TRACE (DEBUG::MackieControl, "Surface::~Surface done\n"); } const MidiByteArray& @@ -200,8 +202,6 @@ Surface::init_strips (uint32_t n) void Surface::setup_master () { - _master_fader = dynamic_cast<Fader*> (Fader::factory (*this, _mcp.device_info().strip_cnt(), "master", *groups["master"])); - boost::shared_ptr<Route> m; if ((m = _mcp.get_session().monitor_out()) == 0) { @@ -211,6 +211,8 @@ Surface::setup_master () if (!m) { return; } + + _master_fader = dynamic_cast<Fader*> (Fader::factory (*this, _mcp.device_info().strip_cnt(), "master", *groups["master"])); _master_fader->set_control (m->gain_control()); m->gain_control()->Changed.connect (*this, MISSING_INVALIDATOR, boost::bind (&Surface::master_gain_changed, this), ui_context()); @@ -626,7 +628,7 @@ Surface::zero_all () show_two_char_display (string (2, '0'), string (2, ' ')); } - if (_mcp.device_info().has_master_fader ()) { + if (_mcp.device_info().has_master_fader () && _master_fader) { _port->write (_master_fader->zero ()); } |