fix crash when opening MIDI controller automation tracks, caused by addition of "owner" field to an AutomationController, used to print values. Renamed "owner" to "printer" and required it to be non-null

git-svn-id: svn://localhost/ardour2/branches/3.0@8874 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2011-02-16 19:34:11 +00:00
parent fbbddf78c9
commit 5f93192aa3
4 changed files with 14 additions and 5 deletions

View file

@ -41,13 +41,15 @@
using namespace ARDOUR; using namespace ARDOUR;
using namespace Gtk; using namespace Gtk;
AutomationController::AutomationController(boost::shared_ptr<Automatable> owner, boost::shared_ptr<AutomationControl> ac, Adjustment* adj) AutomationController::AutomationController(boost::shared_ptr<Automatable> printer, boost::shared_ptr<AutomationControl> ac, Adjustment* adj)
: BarController (*adj, ac) : BarController (*adj, ac)
, _ignore_change(false) , _ignore_change(false)
, _owner (owner) , _printer (printer)
, _controllable(ac) , _controllable(ac)
, _adjustment(adj) , _adjustment(adj)
{ {
assert (_printer);
set_name (X_("PluginSlider")); // FIXME: get yer own name! set_name (X_("PluginSlider")); // FIXME: get yer own name!
set_style (BarController::LeftToRight); set_style (BarController::LeftToRight);
set_use_parent (true); set_use_parent (true);
@ -88,7 +90,7 @@ std::string
AutomationController::get_label (double& xpos) AutomationController::get_label (double& xpos)
{ {
xpos = 0.5; xpos = 0.5;
return _owner->value_as_string (_controllable); return _printer->value_as_string (_controllable);
} }
void void

View file

@ -64,7 +64,7 @@ private:
void automation_state_changed(); void automation_state_changed();
bool _ignore_change; bool _ignore_change;
boost::shared_ptr<ARDOUR::Automatable> _owner; boost::shared_ptr<ARDOUR::Automatable> _printer;
boost::shared_ptr<ARDOUR::AutomationControl> _controllable; boost::shared_ptr<ARDOUR::AutomationControl> _controllable;
Gtk::Adjustment* _adjustment; Gtk::Adjustment* _adjustment;
sigc::connection _screen_update_connection; sigc::connection _screen_update_connection;

View file

@ -846,7 +846,9 @@ MidiTimeAxisView::create_automation_child (const Evoral::Parameter& param, bool
assert (c); assert (c);
boost::shared_ptr<AutomationTimeAxisView> track(new AutomationTimeAxisView (_session, boost::shared_ptr<AutomationTimeAxisView> track(new AutomationTimeAxisView (_session,
_route, boost::shared_ptr<ARDOUR::Automatable>(), c, _route,
_route,
c,
_editor, _editor,
*this, *this,
true, true,

View file

@ -223,9 +223,14 @@ PannerUI::setup_pan ()
if (!_panner) { if (!_panner) {
return; return;
} }
uint32_t const nouts = _panner->out().n_audio(); uint32_t const nouts = _panner->out().n_audio();
uint32_t const nins = _panner->in().n_audio(); uint32_t const nins = _panner->in().n_audio();
cerr << "GUI Panner for " << _panner << " setup with " << nins << " feeding " << nouts
<< " current = " << _current_nins << " feeding " << _current_nouts
<< endl;
if (int32_t (nouts) == _current_nouts && int32_t (nins) == _current_nins) { if (int32_t (nouts) == _current_nouts && int32_t (nins) == _current_nins) {
return; return;
} }