#include <boost/scoped_array.hpp>
-#include "pbd/boost_debug.h"
#include "pbd/enumwriter.h"
#include "pbd/error.h"
#include "ardour/audio_diskstream.h"
#include "ardour/audio_track.h"
#include "ardour/audioplaylist.h"
+#include "ardour/boost_debug.h"
#include "ardour/buffer_set.h"
#include "ardour/delivery.h"
#include "ardour/meter.h"
+#include "ardour/monitor_control.h"
#include "ardour/playlist_factory.h"
#include "ardour/processor.h"
#include "ardour/profile.h"
using namespace ARDOUR;
using namespace PBD;
-AudioTrack::AudioTrack (Session& sess, string name, Route::Flag flag, TrackMode mode)
- : Track (sess, name, flag, mode)
+AudioTrack::AudioTrack (Session& sess, string name, TrackMode mode)
+ : Track (sess, name, PresentationInfo::AudioTrack, mode)
{
}
AudioTrack::~AudioTrack ()
{
- if (_freeze_record.playlist) {
+ if (_freeze_record.playlist && !_session.deletion_in_progress()) {
_freeze_record.playlist->release();
}
}
return 0;
}
- const XMLProperty* prop;
+ XMLProperty const * prop;
XMLNode& node (*diskstream->deprecated_io_node);
/* don't do this more than once. */
diskstream->deprecated_io_node = 0;
if ((prop = node.property ("gain")) != 0) {
- _amp->set_gain (atof (prop->value().c_str()), this);
+ _amp->gain_control()->set_value (atof (prop->value().c_str()), PBD::Controllable::NoGroup);
}
if ((prop = node.property ("input-connection")) != 0) {
int
AudioTrack::set_state (const XMLNode& node, int version)
{
- const XMLProperty *prop;
+ XMLProperty const * prop;
if ((prop = node.property (X_("mode"))) != 0) {
_mode = TrackMode (string_2_enum (prop->value(), _mode));
AudioTrack::set_state_part_two ()
{
XMLNode* fnode;
- XMLProperty* prop;
- LocaleGuard lg (X_("C"));
+ XMLProperty const * prop;
+ LocaleGuard lg;
/* This is called after all session state has been restored but before
have been made ports and connections are established.
if (!_active) {
silence (nframes);
- if (_meter_point == MeterInput && (_monitoring & MonitorInput || _diskstream->record_enabled())) {
+ if (_meter_point == MeterInput && ((_monitoring_control->monitoring_choice() & MonitorInput) || _diskstream->record_enabled())) {
_meter->reset();
}
return 0;
fill_buffers_with_input (bufs, _input, nframes);
- if (_meter_point == MeterInput && (_monitoring & MonitorInput || _diskstream->record_enabled())) {
+ if (_meter_point == MeterInput && ((_monitoring_control->monitoring_choice() & MonitorInput) || _diskstream->record_enabled())) {
_meter->run (bufs, start_frame, end_frame, nframes, true);
}
/* reset stuff that has already been accounted for in the freeze process */
- set_gain (GAIN_COEFF_UNITY, this);
- _amp->gain_control()->set_automation_state (Off);
+ gain_control()->set_value (GAIN_COEFF_UNITY, Controllable::NoGroup);
+ gain_control()->set_automation_state (Off);
+
/* XXX need to use _main_outs _panner->set_automation_state (Off); */
_freeze_record.state = Frozen;
AudioTrack::unfreeze ()
{
if (_freeze_record.playlist) {
+ _freeze_record.playlist->release();
audio_diskstream()->use_playlist (_freeze_record.playlist);
{