mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-31 19:07:43 +01:00
...towards unique track numbers.
This commit is contained in:
parent
4d49961c93
commit
24f2961cce
5 changed files with 23 additions and 0 deletions
|
|
@ -184,6 +184,9 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
|
|||
void set_meter_type (MeterType t) { _meter_type = t; }
|
||||
MeterType meter_type() const { return _meter_type; }
|
||||
|
||||
void set_unique_id (uint32_t id) { _unique_id = id; }
|
||||
uint32_t unique_id() const { return _unique_id; }
|
||||
|
||||
/* Processors */
|
||||
|
||||
boost::shared_ptr<Amp> amp() const { return _amp; }
|
||||
|
|
@ -495,6 +498,7 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
|
|||
uint32_t _soloed_by_others_upstream;
|
||||
uint32_t _soloed_by_others_downstream;
|
||||
uint32_t _solo_isolated;
|
||||
uint32_t _unique_id;
|
||||
|
||||
bool _denormal_protection;
|
||||
|
||||
|
|
|
|||
|
|
@ -929,6 +929,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi
|
|||
bool _writable;
|
||||
bool _was_seamless;
|
||||
bool _under_nsm_control;
|
||||
uint32_t _unique_track_number;
|
||||
|
||||
void initialize_latencies ();
|
||||
void set_worst_io_latencies ();
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@ Route::Route (Session& sess, string name, Flag flg, DataType default_type)
|
|||
, _soloed_by_others_upstream (0)
|
||||
, _soloed_by_others_downstream (0)
|
||||
, _solo_isolated (0)
|
||||
, _unique_id (0)
|
||||
, _denormal_protection (false)
|
||||
, _recordable (true)
|
||||
, _silent (false)
|
||||
|
|
@ -1881,6 +1882,9 @@ Route::state(bool full_state)
|
|||
|
||||
node->add_property("meter-type", enum_2_string (_meter_type));
|
||||
|
||||
snprintf (buf, sizeof (buf), "%d", _unique_id);
|
||||
node->add_property("unique-id", buf);
|
||||
|
||||
if (_route_group) {
|
||||
node->add_property("route-group", _route_group->name());
|
||||
}
|
||||
|
|
@ -2059,6 +2063,10 @@ Route::set_state (const XMLNode& node, int version)
|
|||
_meter_type = MeterType (string_2_enum (prop->value (), _meter_type));
|
||||
}
|
||||
|
||||
if ((prop = node.property (X_("unique-id"))) != 0) {
|
||||
_unique_id = atoi(prop->value());
|
||||
}
|
||||
|
||||
set_processor_state (processor_state);
|
||||
|
||||
// this looks up the internal instrument in processors
|
||||
|
|
|
|||
|
|
@ -134,6 +134,7 @@ Session::Session (AudioEngine &eng,
|
|||
, _target_transport_speed (0.0)
|
||||
, _requested_return_frame (-1)
|
||||
, _under_nsm_control (false)
|
||||
, _unique_track_number (0)
|
||||
, _session_dir (new SessionDirectory(fullpath))
|
||||
, state_tree (0)
|
||||
, _state_of_the_state (Clean)
|
||||
|
|
@ -1649,6 +1650,7 @@ Session::new_midi_track (const ChanCount& input, const ChanCount& output, boost:
|
|||
|
||||
try {
|
||||
track.reset (new MidiTrack (*this, track_name, Route::Flag (0), mode));
|
||||
track->set_unique_id(++_unique_track_number);
|
||||
|
||||
if (track->init ()) {
|
||||
goto failed;
|
||||
|
|
@ -1884,6 +1886,7 @@ Session::new_audio_track (int input_channels, int output_channels, TrackMode mod
|
|||
|
||||
try {
|
||||
track.reset (new AudioTrack (*this, track_name, Route::Flag (0), mode));
|
||||
track->set_unique_id(++_unique_track_number);
|
||||
|
||||
if (track->init ()) {
|
||||
goto failed;
|
||||
|
|
|
|||
|
|
@ -1033,6 +1033,9 @@ Session::state (bool full_state)
|
|||
snprintf (buf, sizeof (buf), "%" PRIu64, ID::counter());
|
||||
node->add_property ("id-counter", buf);
|
||||
|
||||
snprintf (buf, sizeof (buf), "%d", _unique_track_number);
|
||||
node->add_property ("trackid-counter", buf);
|
||||
|
||||
/* save the event ID counter */
|
||||
|
||||
snprintf (buf, sizeof (buf), "%d", Evoral::event_id_counter());
|
||||
|
|
@ -1241,6 +1244,10 @@ Session::set_state (const XMLNode& node, int version)
|
|||
ID::init_counter (now);
|
||||
}
|
||||
|
||||
if ((prop = node.property (X_("trackid-counter"))) != 0) {
|
||||
_unique_track_number = atoi (prop->value());
|
||||
}
|
||||
|
||||
if ((prop = node.property (X_("event-counter"))) != 0) {
|
||||
Evoral::init_event_id_counter (atoi (prop->value()));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue