summaryrefslogtreecommitdiff
path: root/libs/ardour/session_state.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/session_state.cc')
-rw-r--r--libs/ardour/session_state.cc29
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;
}