diff options
Diffstat (limited to 'libs/ardour/session_state.cc')
-rw-r--r-- | libs/ardour/session_state.cc | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 4f11291637..54c36a3459 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -92,7 +92,7 @@ #include "ardour/midi_source.h" #include "ardour/midi_track.h" #include "ardour/named_selection.h" -#include "ardour/panner.h" +#include "ardour/pannable.h" #include "ardour/processor.h" #include "ardour/port.h" #include "ardour/region_factory.h" @@ -220,7 +220,7 @@ Session::first_stage_init (string fullpath, string snapshot_name) midi_control_ui = 0; _step_editors = 0; no_questions_about_missing_files = false; - _speakers = 0; + _speakers = new Speakers; AudioDiskstream::allocate_working_buffers(); @@ -1174,6 +1174,8 @@ Session::state(bool full_state) } } + node->add_child_nocopy (_speakers->get_state()); + node->add_child_nocopy (_tempo_map->get_state()); node->add_child_nocopy (get_control_protocol_state()); @@ -1294,6 +1296,13 @@ Session::set_state (const XMLNode& node, int version) goto out; } + if ((child = find_named_node (node, X_("Speakers"))) == 0) { + warning << _("Session: XML state has no speakers section - assuming simple stereo") << endmsg; + _speakers->setup_default_speakers (2); + } else { + _speakers->set_state (*child, version); + } + Location* location; if ((location = _locations->auto_loop_location()) != 0) { @@ -2990,19 +2999,19 @@ Session::controllable_by_descriptor (const ControllableDescriptor& desc) case ControllableDescriptor::PanDirection: { - boost::shared_ptr<Panner> p = r->panner(); - if (p) { - c = p->direction_control(); - } + c = r->pannable()->pan_azimuth_control; break; } case ControllableDescriptor::PanWidth: { - boost::shared_ptr<Panner> p = r->panner(); - if (p) { - c = p->width_control(); - } + c = r->pannable()->pan_width_control; + break; + } + + case ControllableDescriptor::PanElevation: + { + c = r->pannable()->pan_elevation_control; break; } |