summaryrefslogtreecommitdiff
path: root/libs/ardour/session_state.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-10-14 16:10:01 +0000
committerDavid Robillard <d@drobilla.net>2009-10-14 16:10:01 +0000
commitbb9cc45cd22af67ac275a5e73accbe14fee664d8 (patch)
treee52977d3eae6ff07b856088041a080a2fa3e5b79 /libs/ardour/session_state.cc
parent8c4ce1e2ce35571aed5a686671431fdfffae7f8c (diff)
Strip trailing whitespace and fix other whitespace errors (e.g. space/tab mixing). Whitespace changes only.
Vimmers, try let c_space_errors = 1 in your .vimrc to highlight this kind of stuff in red. I don't know the emacs equivalent... git-svn-id: svn://localhost/ardour2/branches/3.0@5773 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/session_state.cc')
-rw-r--r--libs/ardour/session_state.cc488
1 files changed, 244 insertions, 244 deletions
diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc
index 771e3b2bc6..b85f2ac078 100644
--- a/libs/ardour/session_state.cc
+++ b/libs/ardour/session_state.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 1999-2002 Paul Davis
+ Copyright (C) 1999-2002 Paul Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -14,7 +14,7 @@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
+
*/
@@ -145,7 +145,7 @@ Session::first_stage_init (string fullpath, string snapshot_name)
_writable = false;
} else {
cerr << "Session writable based on " << _path << endl;
- _writable = true;
+ _writable = true;
}
/* these two are just provisional settings. set_state()
@@ -234,7 +234,7 @@ Session::first_stage_init (string fullpath, string snapshot_name)
/* click sounds are unset by default, which causes us to internal
waveforms for clicks.
*/
-
+
click_length = 0;
click_emphasis_length = 0;
_clicking = false;
@@ -346,7 +346,7 @@ Session::second_stage_init (bool new_session)
}
/* handle this one in a different way than all others, so that its clear what happened */
-
+
catch (AudioEngine::PortRegistrationFailure& err) {
error << err.what() << endmsg;
return -1;
@@ -362,7 +362,7 @@ Session::second_stage_init (bool new_session)
_engine.transport_locate (0);
deliver_mmc (MIDI::MachineControl::cmdMmcReset, 0);
deliver_mmc (MIDI::MachineControl::cmdLocate, 0);
-
+
MidiClockTicker::instance().set_session(*this);
MIDI::Name::MidiPatchManager::instance().set_session(*this);
@@ -375,7 +375,7 @@ Session::second_stage_init (bool new_session)
config.set_end_marker_is_free (new_session);
_state_of_the_state = Clean;
-
+
DirtyChanged (); /* EMIT SIGNAL */
if (state_was_pending) {
@@ -383,7 +383,7 @@ Session::second_stage_init (bool new_session)
remove_pending_capture_state ();
state_was_pending = false;
}
-
+
BootMessage (_("Session loading complete"));
return 0;
@@ -397,7 +397,7 @@ Session::raid_path () const
for (vector<space_and_path>::const_iterator i = session_dirs.begin(); i != session_dirs.end(); ++i) {
raid_search_path += sys::path((*i).path);
}
-
+
return raid_search_path.to_string ();
}
@@ -407,7 +407,7 @@ Session::setup_raid_path (string path)
if (path.empty()) {
return;
}
-
+
space_and_path sp;
string fspath;
@@ -454,7 +454,7 @@ Session::ensure_subdirs ()
error << string_compose(_("Session: cannot create session sounds dir \"%1\" (%2)"), dir, strerror (errno)) << endmsg;
return -1;
}
-
+
dir = session_directory().midi_path().to_string();
if (g_mkdir_with_parents (dir.c_str(), 0755) < 0) {
@@ -523,21 +523,21 @@ Session::create (bool& new_session, const string& mix_template, nframes_t initia
return 0;
} else {
- error << string_compose (_("Could not open %1 for writing mix template"), out_path)
+ error << string_compose (_("Could not open %1 for writing mix template"), out_path)
<< endmsg;
return -1;
}
} else {
- error << string_compose (_("Could not open mix template %1 for reading"), in_path)
+ error << string_compose (_("Could not open mix template %1 for reading"), in_path)
<< endmsg;
return -1;
}
}
-
+
/* Instantiate metadata */
-
+
_metadata = new SessionMetadata ();
/* set initial start + end point */
@@ -561,7 +561,7 @@ Session::load_diskstreams (const XMLNode& node)
{
XMLNodeList clist;
XMLNodeConstIterator citer;
-
+
clist = node.children();
for (citer = clist.begin(); citer != clist.end(); ++citer) {
@@ -577,8 +577,8 @@ Session::load_diskstreams (const XMLNode& node)
} else {
error << _("Session: unknown diskstream type in XML") << endmsg;
}
- }
-
+ }
+
catch (failed_constructor& err) {
error << _("Session: could not load diskstream via XML state") << endmsg;
return -1;
@@ -600,7 +600,7 @@ void
Session::remove_pending_capture_state ()
{
sys::path pending_state_file_path(_session_dir->root_path());
-
+
pending_state_file_path /= legalize_for_path (_current_snapshot_name) + pending_suffix;
try
@@ -697,7 +697,7 @@ Session::save_state (string snapshot_name, bool pending)
if (!pending) {
/* proper save: use statefile_suffix (.ardour in English) */
-
+
xml_path /= legalize_for_path (snapshot_name) + statefile_suffix;
/* make a backup copy of the old file */
@@ -741,7 +741,7 @@ Session::save_state (string snapshot_name, bool pending)
bool was_dirty = dirty();
_state_of_the_state = StateOfTheState (_state_of_the_state & ~Dirty);
-
+
if (was_dirty) {
DirtyChanged (); /* EMIT SIGNAL */
}
@@ -758,7 +758,7 @@ Session::restore_state (string snapshot_name)
if (load_state (snapshot_name) == 0) {
set_state (*state_tree->root());
}
-
+
return 0;
}
@@ -781,14 +781,14 @@ Session::load_state (string snapshot_name)
if (AskAboutPendingState()) {
state_was_pending = true;
- }
- }
+ }
+ }
if (!state_was_pending) {
xmlpath = _session_dir->root_path();
xmlpath /= legalize_for_path (snapshot_name) + statefile_suffix;
}
-
+
if (!sys::exists (xmlpath)) {
error << string_compose(_("%1: session state information file \"%2\" doesn't exist!"), _name, xmlpath.to_string()) << endmsg;
return 1;
@@ -815,7 +815,7 @@ Session::load_state (string snapshot_name)
}
XMLNode& root (*state_tree->root());
-
+
if (root.name() != X_("Session")) {
error << string_compose (_("Session file %1 is not an Ardour session"), xmlpath.to_string()) << endmsg;
delete state_tree;
@@ -849,7 +849,7 @@ Session::load_state (string snapshot_name)
}
info << string_compose (_("Copying old session file %1 to %2\nUse %2 with Ardour versions before 2.0 from now on"),
- xmlpath.to_string(), backup_path.to_string())
+ xmlpath.to_string(), backup_path.to_string())
<< endmsg;
try
@@ -875,7 +875,7 @@ Session::load_options (const XMLNode& node)
config.set_variables (node);
- /* now reset MIDI ports because the session can have its own
+ /* now reset MIDI ports because the session can have its own
MIDI configuration.
*/
@@ -895,9 +895,9 @@ Session::get_template()
{
/* if we don't disable rec-enable, diskstreams
will believe they need to store their capture
- sources in their state node.
+ sources in their state node.
*/
-
+
disable_record (false);
return state(false);
@@ -913,11 +913,11 @@ Session::state(bool full_state)
char buf[16];
snprintf(buf, sizeof(buf), "%d.%d.%d", libardour3_major_version, libardour3_minor_version, libardour3_micro_version);
node->add_property("version", string(buf));
-
+
/* store configuration settings */
if (full_state) {
-
+
node->add_property ("name", _name);
snprintf (buf, sizeof (buf), "%" PRId32, _nominal_frame_rate);
node->add_property ("sample-rate", buf);
@@ -946,14 +946,14 @@ Session::state(bool full_state)
++next;
++i;
}
-
+
child = node->add_child ("Path");
child->add_content (p);
}
}
/* save the ID counter */
-
+
snprintf (buf, sizeof (buf), "%" PRIu64, ID::counter());
node->add_property ("id-counter", buf);
@@ -969,10 +969,10 @@ Session::state(bool full_state)
Glib::Mutex::Lock sl (source_lock);
for (SourceMap::iterator siter = sources.begin(); siter != sources.end(); ++siter) {
-
+
/* Don't save information about non-destructive file sources that are empty */
/* FIXME: MIDI breaks if this is made FileSource like it should be... */
-
+
boost::shared_ptr<AudioFileSource> fs;
if ((fs = boost::dynamic_pointer_cast<AudioFileSource> (siter->second)) != 0) {
if (!fs->destructive()) {
@@ -981,18 +981,18 @@ Session::state(bool full_state)
}
}
}
-
+
child->add_child_nocopy (siter->second->get_state());
}
}
child = node->add_child ("Regions");
- if (full_state) {
+ if (full_state) {
Glib::Mutex::Lock rl (region_lock);
for (RegionList::const_iterator i = regions.begin(); i != regions.end(); ++i) {
-
+
/* only store regions not attached to playlists */
if (i->second->playlist() == 0) {
@@ -1003,7 +1003,7 @@ Session::state(bool full_state)
child = node->add_child ("DiskStreams");
- {
+ {
boost::shared_ptr<DiskstreamList> dsl = diskstreams.reader();
for (DiskstreamList::iterator i = dsl->begin(); i != dsl->end(); ++i) {
if (!(*i)->hidden()) {
@@ -1026,7 +1026,7 @@ Session::state(bool full_state)
loc.add (end);
node->add_child_nocopy (loc.get_state());
}
-
+
child = node->add_child ("Bundles");
{
boost::shared_ptr<BundleList> bundles = _bundles.reader ();
@@ -1041,11 +1041,11 @@ Session::state(bool full_state)
child = node->add_child ("Routes");
{
boost::shared_ptr<RouteList> r = routes.reader ();
-
+
RoutePublicOrderSorter cmp;
RouteList public_order (*r);
public_order.sort (cmp);
-
+
for (RouteList::iterator i = public_order.begin(); i != public_order.end(); ++i) {
if (!(*i)->is_hidden()) {
if (full_state) {
@@ -1057,7 +1057,7 @@ Session::state(bool full_state)
}
}
-
+
child = node->add_child ("RouteGroups");
for (list<RouteGroup *>::iterator i = _route_groups.begin(); i != _route_groups.end(); ++i) {
child->add_child_nocopy ((*i)->get_state());
@@ -1088,8 +1088,8 @@ Session::state(bool full_state)
}
}
}
-
-
+
+
if (_click_io) {
child = node->add_child ("Click");
child->add_child_nocopy (_click_io->state (full_state));
@@ -1100,7 +1100,7 @@ Session::state(bool full_state)
for (NamedSelectionList::iterator i = named_selections.begin(); i != named_selections.end(); ++i) {
if (full_state) {
child->add_child_nocopy ((*i)->get_state());
- }
+ }
}
}
@@ -1131,7 +1131,7 @@ Session::set_state (const XMLNode& node)
int ret = -1;
_state_of_the_state = StateOfTheState (_state_of_the_state|CannotSave);
-
+
if (node.name() != X_("Session")){
fatal << _("programming error: Session: incorrect XML node sent to set_state()") << endmsg;
return -1;
@@ -1168,7 +1168,7 @@ Session::set_state (const XMLNode& node)
ID::init_counter (now);
}
-
+
IO::disable_connecting ();
/* Object loading order:
@@ -1270,7 +1270,7 @@ Session::set_state (const XMLNode& node)
} else if (load_unused_playlists (*child)) {
goto out;
}
-
+
if ((child = find_named_node (node, "NamedSelections")) != 0) {
if (load_named_selections (*child)) {
goto out;
@@ -1293,7 +1293,7 @@ Session::set_state (const XMLNode& node)
later */
_bundle_xml_node = new XMLNode (*child);
}
-
+
if ((child = find_named_node (node, "RouteGroups")) == 0) {
error << _("Session: XML state has no route groups section") << endmsg;
goto out;
@@ -1373,14 +1373,14 @@ Session::XMLRouteFactory (const XMLNode& node)
}
bool has_diskstream = (node.property ("diskstream") != 0 || node.property ("diskstream-id") != 0);
-
+
DataType type = DataType::AUDIO;
const XMLProperty* prop = node.property("default-type");
if (prop) {
type = DataType(prop->value());
- }
-
+ }
+
assert(type != DataType::NIL);
if (has_diskstream) {
@@ -1430,17 +1430,17 @@ Session::XMLRegionFactory (const XMLNode& node, bool full)
const XMLProperty* type = node.property("type");
try {
-
+
if ( !type || type->value() == "audio" ) {
return boost::shared_ptr<Region>(XMLAudioRegionFactory (node, full));
-
+
} else if (type->value() == "midi") {
-
+
return boost::shared_ptr<Region>(XMLMidiRegionFactory (node, full));
}
-
+
} catch (failed_constructor& err) {
return boost::shared_ptr<Region> ();
}
@@ -1458,7 +1458,7 @@ Session::XMLAudioRegionFactory (const XMLNode& node, bool /*full*/)
SourceList master_sources;
uint32_t nchans = 1;
char buf[128];
-
+
if (node.name() != X_("Region")) {
return boost::shared_ptr<AudioRegion>();
}
@@ -1471,7 +1471,7 @@ Session::XMLAudioRegionFactory (const XMLNode& node, bool /*full*/)
cerr << "no name for this region\n";
abort ();
}
-
+
if ((prop = node.property (X_("source-0"))) == 0) {
if ((prop = node.property ("source")) == 0) {
error << _("Session: XMLNode describing a AudioRegion is incomplete (no source)") << endmsg;
@@ -1485,7 +1485,7 @@ Session::XMLAudioRegionFactory (const XMLNode& node, bool /*full*/)
error << string_compose(_("Session: XMLNode describing a AudioRegion references an unknown source id =%1"), s_id) << endmsg;
return boost::shared_ptr<AudioRegion>();
}
-
+
as = boost::dynamic_pointer_cast<AudioSource>(source);
if (!as) {
error << string_compose(_("Session: XMLNode describing a AudioRegion references a non-audio source id =%1"), s_id) << endmsg;
@@ -1499,14 +1499,14 @@ Session::XMLAudioRegionFactory (const XMLNode& node, bool /*full*/)
for (uint32_t n=1; n < nchans; ++n) {
snprintf (buf, sizeof(buf), X_("source-%d"), n);
if ((prop = node.property (buf)) != 0) {
-
+
PBD::ID id2 (prop->value());
-
+
if ((source = source_by_id (id2)) == 0) {
error << string_compose(_("Session: XMLNode describing a AudioRegion references an unknown source id =%1"), id2) << endmsg;
return boost::shared_ptr<AudioRegion>();
}
-
+
as = boost::dynamic_pointer_cast<AudioSource>(source);
if (!as) {
error << string_compose(_("Session: XMLNode describing a AudioRegion references a non-audio source id =%1"), id2) << endmsg;
@@ -1519,14 +1519,14 @@ Session::XMLAudioRegionFactory (const XMLNode& node, bool /*full*/)
for (uint32_t n = 0; n < nchans; ++n) {
snprintf (buf, sizeof(buf), X_("master-source-%d"), n);
if ((prop = node.property (buf)) != 0) {
-
+
PBD::ID id2 (prop->value());
-
+
if ((source = source_by_id (id2)) == 0) {
error << string_compose(_("Session: XMLNode describing a AudioRegion references an unknown source id =%1"), id2) << endmsg;
return boost::shared_ptr<AudioRegion>();
}
-
+
as = boost::dynamic_pointer_cast<AudioSource>(source);
if (!as) {
error << string_compose(_("Session: XMLNode describing a AudioRegion references a non-audio source id =%1"), id2) << endmsg;
@@ -1559,7 +1559,7 @@ Session::XMLAudioRegionFactory (const XMLNode& node, bool /*full*/)
}
return region;
-
+
}
catch (failed_constructor& err) {
@@ -1575,7 +1575,7 @@ Session::XMLMidiRegionFactory (const XMLNode& node, bool /*full*/)
boost::shared_ptr<MidiSource> ms;
SourceList sources;
uint32_t nchans = 1;
-
+
if (node.name() != X_("Region")) {
return boost::shared_ptr<MidiRegion>();
}
@@ -1583,7 +1583,7 @@ Session::XMLMidiRegionFactory (const XMLNode& node, bool /*full*/)
if ((prop = node.property (X_("channels"))) != 0) {
nchans = atoi (prop->value().c_str());
}
-
+
if ((prop = node.property ("name")) == 0) {
cerr << "no name for this region\n";
abort ();
@@ -1662,7 +1662,7 @@ Session::path_from_region_name (DataType type, string name, string identifier)
for (n = 0; n < 999999; ++n) {
if (identifier.length()) {
- snprintf (buf, sizeof(buf), "%s%s%" PRIu32 "%s", name.c_str(),
+ snprintf (buf, sizeof(buf), "%s%s%" PRIu32 "%s", name.c_str(),
identifier.c_str(), n, ext.c_str());
} else {
snprintf (buf, sizeof(buf), "%s-%" PRIu32 "%s", name.c_str(),
@@ -1682,7 +1682,7 @@ Session::path_from_region_name (DataType type, string name, string identifier)
return "";
}
-
+
int
Session::load_sources (const XMLNode& node)
@@ -1770,7 +1770,7 @@ Session::save_template (string template_name)
}
int
-Session::rename_template (string old_name, string new_name)
+Session::rename_template (string old_name, string new_name)
{
sys::path old_path (user_template_directory());
old_path /= old_name + template_suffix;
@@ -1793,7 +1793,7 @@ Session::rename_template (string old_name, string new_name)
}
int
-Session::delete_template (string name)
+Session::delete_template (string name)
{
sys::path path = user_template_directory();
path /= name + template_suffix;
@@ -1818,7 +1818,7 @@ Session::refresh_disk_space ()
/* get freespace on every FS that is part of the session path */
_total_free_4k_blocks = 0;
-
+
for (i = session_dirs.begin(); i != session_dirs.end(); ++i) {
statfs ((*i).path.c_str(), &statfsbuf);
@@ -1843,8 +1843,8 @@ Session::get_best_session_directory_for_new_source ()
}
/* OK, here's the algorithm we're following here:
-
- We want to select which directory to use for
+
+ We want to select which directory to use for
the next file source to be created. Ideally,
we'd like to use a round-robin process so as to
get maximum performance benefits from splitting
@@ -1863,15 +1863,15 @@ Session::get_best_session_directory_for_new_source ()
So, we use a user-configurable space threshold. If
there are at least 2 filesystems with more than this
- much space available, we use RR selection between them.
+ much space available, we use RR selection between them.
If not, then we pick the filesystem with the most space.
This gets a good balance between the two
- approaches.
+ approaches.
*/
-
+
refresh_disk_space ();
-
+
int free_enough = 0;
for (i = session_dirs.begin(); i != session_dirs.end(); ++i) {
@@ -1907,13 +1907,13 @@ Session::get_best_session_directory_for_new_source ()
/* pick FS with the most freespace (and that
seems to actually work ...)
*/
-
+
vector<space_and_path> sorted;
space_and_path_ascending_cmp cmp;
sorted = session_dirs;
sort (sorted.begin(), sorted.end(), cmp);
-
+
for (i = sorted.begin(); i != sorted.end(); ++i) {
if (create_session_directory ((*i).path)) {
result = (*i).path;
@@ -1938,7 +1938,7 @@ Session::load_playlists (const XMLNode& node)
set_dirty();
for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
-
+
if ((playlist = XMLPlaylistFactory (**niter)) == 0) {
error << _("Session: cannot create Playlist from XML description.") << endmsg;
}
@@ -1959,7 +1959,7 @@ Session::load_unused_playlists (const XMLNode& node)
set_dirty();
for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
-
+
if ((playlist = XMLPlaylistFactory (**niter)) == 0) {
error << _("Session: cannot create Playlist from XML description.") << endmsg;
continue;
@@ -1997,7 +1997,7 @@ Session::load_named_selections (const XMLNode& node)
set_dirty();
for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
-
+
if ((ns = XMLNamedSelectionFactory (**niter)) == 0) {
error << _("Session: cannot create Named Selection from XML description.") << endmsg;
}
@@ -2033,24 +2033,24 @@ Session::analysis_dir () const
int
Session::load_bundles (XMLNode const & node)
{
- XMLNodeList nlist = node.children();
- XMLNodeConstIterator niter;
+ XMLNodeList nlist = node.children();
+ XMLNodeConstIterator niter;
- set_dirty();
+ set_dirty();
- for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
- if ((*niter)->name() == "InputBundle") {
+ for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
+ if ((*niter)->name() == "InputBundle") {
add_bundle (boost::shared_ptr<UserBundle> (new UserBundle (**niter, true)));
- } else if ((*niter)->name() == "OutputBundle") {
- add_bundle (boost::shared_ptr<UserBundle> (new UserBundle (**niter, false)));
- } else {
- error << string_compose(_("Unknown node \"%1\" found in Bundles list from state file"), (*niter)->name()) << endmsg;
- return -1;
- }
- }
+ } else if ((*niter)->name() == "OutputBundle") {
+ add_bundle (boost::shared_ptr<UserBundle> (new UserBundle (**niter, false)));
+ } else {
+ error << string_compose(_("Unknown node \"%1\" found in Bundles list from state file"), (*niter)->name()) << endmsg;
+ return -1;
+ }
+ }
return 0;
-}
+}
int
Session::load_route_groups (const XMLNode& node)
@@ -2067,9 +2067,9 @@ Session::load_route_groups (const XMLNode& node)
rg->set_state (**niter);
}
}
-
+
return 0;
-}
+}
void
Session::auto_save()
@@ -2094,12 +2094,12 @@ static string*
remove_end(string* state)
{
string statename(*state);
-
+
string::size_type start,end;
if ((start = statename.find_last_of ('/')) != string::npos) {
statename = statename.substr (start+1);
}
-
+
if ((end = statename.rfind(".ardour")) == string::npos) {
end = statename.length();
}
@@ -2108,16 +2108,16 @@ remove_end(string* state)
}
vector<string *> *
-Session::possible_states (string path)
+Session::possible_states (string path)
{
PathScanner scanner;
vector<string*>* states = scanner (path, state_file_filter, 0, false, false);
-
+
transform(states->begin(), states->end(), states->begin(), remove_end);
-
+
string_cmp cmp;
sort (states->begin(), states->end(), cmp);
-
+
return states;
}
@@ -2198,7 +2198,7 @@ Session::commit_reversible_command(Command *cmd)
_current_trans.pop();
}
-Session::GlobalRouteBooleanState
+Session::GlobalRouteBooleanState
Session::get_global_route_boolean (bool (Route::*method)(void) const)
{
GlobalRouteBooleanState s;
@@ -2207,11 +2207,11 @@ Session::get_global_route_boolean (bool (Route::*method)(void) const)
for (RouteList::iterator i = r->begin(); i != r->end(); ++i) {
if (!(*i)->is_hidden()) {
RouteBooleanState v;
-
+
v.first =* i;
Route* r = (*i).get();
v.second = (r->*method)();
-
+
s.push_back (v);
}
}
@@ -2228,10 +2228,10 @@ Session::get_global_route_metering ()
for (RouteList::iterator i = r->begin(); i != r->end(); ++i) {
if (!(*i)->is_hidden()) {
RouteMeterState v;
-
+
v.first =* i;
v.second = (*i)->meter_point();
-
+
s.push_back (v);
}
}
@@ -2240,7 +2240,7 @@ Session::get_global_route_metering ()
}
void
-Session::set_global_route_metering (GlobalRouteMeterState s, void* arg)
+Session::set_global_route_metering (GlobalRouteMeterState s, void* arg)
{
for (GlobalRouteMeterState::iterator i = s.begin(); i != s.end(); ++i) {
@@ -2296,7 +2296,7 @@ accept_all_state_files (const string& path, void */*arg*/)
return (path.length() > 7 && path.find (".ardour") == (path.length() - 7));
}
-int
+int
Session::find_all_sources (string path, set<string>& result)
{
XMLTree tree;
@@ -2318,7 +2318,7 @@ Session::find_all_sources (string path, set<string>& result)
set_dirty();
for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
-
+
XMLProperty* prop;
if ((prop = (*niter)->property (X_("type"))) == 0) {
@@ -2335,7 +2335,7 @@ Session::find_all_sources (string path, set<string>& result)
/* external file, ignore */
continue;
}
-
+
Glib::ustring found_path;
bool is_new;
uint16_t chan;
@@ -2365,7 +2365,7 @@ Session::find_all_sources_across_snapshots (set<string>& result, bool exclude_th
}
state_files = scanner (ripped, accept_all_state_files, (void *) 0, false, true);
-
+
if (state_files == 0) {
/* impossible! */
return 0;
@@ -2394,7 +2394,7 @@ struct RegionCounter {
AudioSourceList::iterator iter;
boost::shared_ptr<Region> region;
uint32_t count;
-
+
RegionCounter() : count (0) {}
};
@@ -2402,7 +2402,7 @@ int
Session::cleanup_sources (Session::cleanup_report& rep)
{
// FIXME: needs adaptation to midi
-
+
vector<boost::shared_ptr<Source> > dead_sources;
vector<boost::shared_ptr<Playlist> > playlists_tbd;
PathScanner scanner;
@@ -2415,10 +2415,10 @@ Session::cleanup_sources (Session::cleanup_report& rep)
bool used;
string spath;
int ret = -1;
-
+
_state_of_the_state = (StateOfTheState) (_state_of_the_state | InCleanup);
-
+
/* step 1: consider deleting all unused playlists */
for (PlaylistList::iterator x = unused_playlists.begin(); x != unused_playlists.end(); ++x) {
@@ -2456,7 +2456,7 @@ Session::cleanup_sources (Session::cleanup_report& rep)
rep.space = 0;
for (SourceMap::iterator i = sources.begin(); i != sources.end(); ) {
-
+
SourceMap::iterator tmp;
tmp = i;
@@ -2466,10 +2466,10 @@ Session::cleanup_sources (Session::cleanup_report& rep)
capture files.
*/
- if (!i->second->used() && i->second->length(i->second->timeline_position()) > 0) {
+ if (!i->second->used() && i->second->length(i->second->timeline_position()) > 0) {
dead_sources.push_back (i->second);
i->second->GoingAway();
- }
+ }
i = tmp;
}
@@ -2491,7 +2491,7 @@ Session::cleanup_sources (Session::cleanup_report& rep)
i = nexti;
}
- /* now do the same thing for the files that ended up in the sounds dir(s)
+ /* now do the same thing for the files that ended up in the sounds dir(s)
but are not referenced as sources in any snapshot.
*/
@@ -2505,23 +2505,23 @@ Session::cleanup_sources (Session::cleanup_report& rep)
state file on disk still references sources we may have already
dropped.
*/
-
+
find_all_sources_across_snapshots (all_sources, true);
/* add our current source list
*/
-
+
for (SourceMap::iterator i = sources.begin(); i != sources.end(); ++i) {
boost::shared_ptr<FileSource> fs;
-
+
if ((fs = boost::dynamic_pointer_cast<FileSource> (i->second)) != 0) {
all_sources.insert (fs->path());
- }
+ }
}
char tmppath1[PATH_MAX+1];
char tmppath2[PATH_MAX+1];
-
+
for (vector<string*>::iterator x = soundfiles->begin(); x != soundfiles->end(); ++x) {
used = false;
@@ -2554,7 +2554,7 @@ Session::cleanup_sources (Session::cleanup_report& rep)
}
string newpath;
-
+
/* don't move the file across filesystems, just
stick it in the `dead_sound_dir_name' directory
on whichever filesystem it was already on.
@@ -2564,14 +2564,14 @@ Session::cleanup_sources (Session::cleanup_report& rep)
/* old school, go up 1 level */
- newpath = Glib::path_get_dirname (*x); // "sounds"
+ newpath = Glib::path_get_dirname (*x); // "sounds"
newpath = Glib::path_get_dirname (newpath); // "session-name"
} else {
/* new school, go up 4 levels */
-
- newpath = Glib::path_get_dirname (*x); // "audiofiles"
+
+ newpath = Glib::path_get_dirname (*x); // "audiofiles"
newpath = Glib::path_get_dirname (newpath); // "session-name"
newpath = Glib::path_get_dirname (newpath); // "interchange"
newpath = Glib::path_get_dirname (newpath); // "session-dir"
@@ -2587,15 +2587,15 @@ Session::cleanup_sources (Session::cleanup_report& rep)
newpath += '/';
newpath += Glib::path_get_basename ((*x));
-
+
if (access (newpath.c_str(), F_OK) == 0) {
-
+
/* the new path already exists, try versioning */
-
+
char buf[PATH_MAX+1];
int version = 1;
string newpath_v;
-
+
snprintf (buf, sizeof (buf), "%s.%d", newpath.c_str(), version);
newpath_v = buf;
@@ -2603,7 +2603,7 @@ Session::cleanup_sources (Session::cleanup_report& rep)
snprintf (buf, sizeof (buf), "%s.%d", newpath.c_str(), ++version);
newpath_v = buf;
}
-
+
if (version == 999) {
error << string_compose (_("there are already 1000 files with names like %1; versioning discontinued"),
newpath)
@@ -2611,11 +2611,11 @@ Session::cleanup_sources (Session::cleanup_report& rep)
} else {
newpath = newpath_v;
}
-
+
} else {
-
+
/* it doesn't exist, or we can't read it or something */
-
+
}
if (::rename ((*x).c_str(), newpath.c_str()) != 0) {
@@ -2652,7 +2652,7 @@ Session::cleanup_sources (Session::cleanup_report& rep)
/* save state so we don't end up a session file
referring to non-existent sources.
*/
-
+
save_state ("");
out:
@@ -2665,7 +2665,7 @@ int
Session::cleanup_trash_sources (Session::cleanup_report& rep)
{
// FIXME: needs adaptation for MIDI
-
+
vector<space_and_path>::iterator i;
string dead_sound_dir;
struct dirent* dentry;
@@ -2676,7 +2676,7 @@ Session::cleanup_trash_sources (Session::cleanup_report& rep)
rep.space = 0;
for (i = session_dirs.begin(); i != session_dirs.end(); ++i) {
-
+
dead_sound_dir = (*i).path;
dead_sound_dir += dead_sound_dir_name;
@@ -2687,8 +2687,8 @@ Session::cleanup_trash_sources (Session::cleanup_report& rep)
while ((dentry = readdir (dead)) != 0) {
/* avoid '.' and '..' */
-
- if ((dentry->d_name[0] == '.' && dentry->d_name[1] == '\0') ||
+
+ if ((dentry->d_name[0] == '.' && dentry->d_name[1] == '\0') ||
(dentry->d_name[2] == '\0' && dentry->d_name[0] == '.' && dentry->d_name[1] == '.')) {
continue;
}
@@ -2718,7 +2718,7 @@ Session::cleanup_trash_sources (Session::cleanup_report& rep)
}
closedir (dead);
-
+
}
return 0;
@@ -2742,7 +2742,7 @@ void
Session::set_clean ()
{
bool was_dirty = dirty();
-
+
_state_of_the_state = Clean;
@@ -2775,7 +2775,7 @@ Session::add_controllable (boost::shared_ptr<Controllable> c)
Glib::Mutex::Lock lm (controllables_lock);
controllables.insert (c);
}
-
+
struct null_deleter { void operator()(void const *) const {} };
void
@@ -2793,13 +2793,13 @@ Session::remove_controllable (Controllable* c)
if (x != controllables.end()) {
controllables.erase (x);
}
-}
+}
boost::shared_ptr<Controllable>
Session::controllable_by_id (const PBD::ID& id)
{
Glib::Mutex::Lock lm (controllables_lock);
-
+
for (Controllables::iterator i = controllables.begin(); i != controllables.end(); ++i) {
if ((*i)->id() == id) {
return *i;
@@ -2809,7 +2809,7 @@ Session::controllable_by_id (const PBD::ID& id)
return boost::shared_ptr<Controllable>();
}
-void
+void
Session::add_instant_xml (XMLNode& node, bool write_to_config)
{
if (_writable) {
@@ -2827,22 +2827,22 @@ Session::instant_xml (const string& node_name)
return Stateful::instant_xml (node_name, _path);
}
-int
+int
Session::save_history (string snapshot_name)
{
XMLTree tree;
-
+
if (!_writable) {
return 0;
- }
+ }
- if (snapshot_name.empty()) {
+ if (snapshot_name.empty()) {
snapshot_name = _current_snapshot_name;
}
-
- const string history_filename = legalize_for_path (snapshot_name) + history_suffix;
+
+ const string history_filename = legalize_for_path (snapshot_name) + history_suffix;
const string backup_filename = history_filename + backup_suffix;
- const sys::path xml_path = _session_dir->root_path() / history_filename;
+ const sys::path xml_path = _session_dir->root_path() / history_filename;
const sys::path backup_path = _session_dir->root_path() / backup_filename;
if (sys::exists (xml_path)) {
@@ -2855,13 +2855,13 @@ Session::save_history (string snapshot_name)
error << _("could not backup old history file, current history not saved") << endmsg;
return -1;
}
- }
+ }
if (!Config->get_save_history() || Config->get_saved_history_depth() < 0) {
return 0;
}
- tree.set_root (&_history.get_state (Config->get_saved_history_depth()));
+ tree.set_root (&_history.get_state (Config->get_saved_history_depth()));
if (!tree.write (xml_path.to_string()))
{
@@ -2892,10 +2892,10 @@ Session::restore_history (string snapshot_name)
if (snapshot_name.empty()) {
snapshot_name = _current_snapshot_name;
}
-
+
const string xml_filename = legalize_for_path (snapshot_name) + history_suffix;
const sys::path xml_path = _session_dir->root_path() / xml_filename;
-
+
cerr << "Loading history from " << xml_path.to_string() << endmsg;
if (!sys::exists (xml_path)) {
@@ -2913,67 +2913,67 @@ Session::restore_history (string snapshot_name)
// replace history
_history.clear();
- for (XMLNodeConstIterator it = tree.root()->children().begin(); it != tree.root()->children().end(); it++) {
-
- XMLNode *t = *it;
- UndoTransaction* ut = new UndoTransaction ();
- struct timeval tv;
-
- ut->set_name(t->property("name")->value());
- stringstream ss(t->property("tv-sec")->value());
- ss >> tv.tv_sec;
- ss.str(t->property("tv-usec")->value());
- ss >> tv.tv_usec;
- ut->set_timestamp(tv);
-
- for (XMLNodeConstIterator child_it = t->children().begin();
+ for (XMLNodeConstIterator it = tree.root()->children().begin(); it != tree.root()->children().end(); it++) {
+
+ XMLNode *t = *it;
+ UndoTransaction* ut = new UndoTransaction ();
+ struct timeval tv;
+
+ ut->set_name(t->property("name")->value());
+ stringstream ss(t->property("tv-sec")->value());
+ ss >> tv.tv_sec;
+ ss.str(t->property("tv-usec")->value());
+ ss >> tv.tv_usec;
+ ut->set_timestamp(tv);
+
+ for (XMLNodeConstIterator child_it = t->children().begin();
child_it != t->children().end(); child_it++)
- {
- XMLNode *n = *child_it;
- Command *c;
-
- if (n->name() == "MementoCommand" ||
+ {
+ XMLNode *n = *child_it;
+ Command *c;
+
+ if (n->name() == "MementoCommand" ||
n->name() == "MementoUndoCommand" ||
n->name() == "MementoRedoCommand") {
- if ((c = memento_command_factory(n))) {
- ut->add_command(c);
- }
-
- } else if (n->name() == X_("GlobalRouteStateCommand")) {
-
- if ((c = global_state_command_factory (*n))) {
- ut->add_command (c);
- }
-
- } else if (n->name() == "DeltaCommand") {
- PBD::ID id(n->property("midi-source")->value());
- boost::shared_ptr<MidiSource> midi_source =
- boost::dynamic_pointer_cast<MidiSource, Source>(source_by_id(id));
- if(midi_source) {
- ut->add_command(new MidiModel::DeltaCommand(midi_source->model(), *n));
- } else {
- error << "FIXME: Failed to downcast MidiSource for DeltaCommand" << endmsg;
- }
- } else if (n->name() == "DiffCommand") {
- PBD::ID id(n->property("midi-source")->value());
- boost::shared_ptr<MidiSource> midi_source =
- boost::dynamic_pointer_cast<MidiSource, Source>(source_by_id(id));
- if(midi_source) {
- ut->add_command(new MidiModel::DiffCommand(midi_source->model(), *n));
- } else {
- error << "FIXME: Failed to downcast MidiSource for DeltaCommand" << endmsg;
- }
-
- } else {
- error << string_compose(_("Couldn't figure out how to make a Command out of a %1 XMLNode."), n->name()) << endmsg;
- }
- }
-
- _history.add (ut);
- }
-
- return 0;
+ if ((c = memento_command_factory(n))) {
+ ut->add_command(c);
+ }
+
+ } else if (n->name() == X_("GlobalRouteStateCommand")) {
+
+ if ((c = global_state_command_factory (*n))) {
+ ut->add_command (c);
+ }
+
+ } else if (n->name() == "DeltaCommand") {
+ PBD::ID id(n->property("midi-source")->value());
+ boost::shared_ptr<MidiSource> midi_source =
+ boost::dynamic_pointer_cast<MidiSource, Source>(source_by_id(id));
+ if(midi_source) {
+ ut->add_command(new MidiModel::DeltaCommand(midi_source->model(), *n));
+ } else {
+ error << "FIXME: Failed to downcast MidiSource for DeltaCommand" << endmsg;
+ }
+ } else if (n->name() == "DiffCommand") {
+ PBD::ID id(n->property("midi-source")->value());
+ boost::shared_ptr<MidiSource> midi_source =
+ boost::dynamic_pointer_cast<MidiSource, Source>(source_by_id(id));
+ if(midi_source) {
+ ut->add_command(new MidiModel::DiffCommand(midi_source->model(), *n));
+ } else {
+ error << "FIXME: Failed to downcast MidiSource for DeltaCommand" << endmsg;
+ }
+
+ } else {
+ error << string_compose(_("Couldn't figure out how to make a Command out of a %1 XMLNode."), n->name()) << endmsg;
+ }
+ }
+
+ _history.add (ut);
+ }
+
+ return 0;
}
void
@@ -2982,20 +2982,20 @@ Session::config_changed (std::string p, bool ours)
if (ours) {
set_dirty ();
}
-
+
if (p == "seamless-loop") {
-
+
} else if (p == "rf-speed") {
-
+
} else if (p == "auto-loop") {
-
+
} else if (p == "auto-input") {
-
+
if (Config->get_monitoring_model() == HardwareMonitoring && transport_rolling()) {
/* auto-input only makes a difference if we're rolling */
-
+
boost::shared_ptr<DiskstreamList> dsl = diskstreams.reader();
-
+
for (DiskstreamList::iterator i = dsl->begin(); i != dsl->end(); ++i) {
if ((*i)->record_enabled ()) {
(*i)->monitor_input (!config.get_auto_input());
@@ -3006,22 +3006,22 @@ Session::config_changed (std::string p, bool ours)
} else if (p == "punch-in") {
Location* location;
-
+
if ((location = _locations.auto_punch_location()) != 0) {
-
+
if (config.get_punch_in ()) {
replace_event (Event::PunchIn, location->start());
} else {
remove_event (location->start(), Event::PunchIn);
}
}
-
+
} else if (p == "punch-out") {
Location* location;
-
+
if ((location = _locations.auto_punch_location()) != 0) {
-
+
if (config.get_punch_out()) {
replace_event (Event::PunchOut, location->end());
} else {
@@ -3032,7 +3032,7 @@ Session::config_changed (std::string p, bool ours)
} else if (p == "edit-mode") {
Glib::Mutex::Lock lm (playlist_lock);
-
+
for (PlaylistList::iterator i = playlists.begin(); i != playlists.end(); ++i) {
(*i)->set_edit_mode (Config->get_edit_mode ());
}
@@ -3058,7 +3058,7 @@ Session::config_changed (std::string p, bool ours)
}
} else if (p == "midi-control") {
-
+
//poke_midi_thread ();
} else if (p == "raid-path") {
@@ -3104,11 +3104,11 @@ Session::config_changed (std::string p, bool ours)
}
} else if (p == "send-mtc") {
-
+
/* only set the internal flag if we have
a port.
*/
-
+
if (_mtc_port != 0) {
session_send_mtc = Config->get_send_mtc();
if (session_send_mtc) {
@@ -3120,24 +3120,24 @@ Session::config_changed (std::string p, bool ours)
}
} else if (p == "send-mmc") {
-
+
/* only set the internal flag if we have
a port.
*/
-
+
if (_mmc_port != 0) {
session_send_mmc = Config->get_send_mmc();
} else {
mmc = 0;
- session_send_mmc = false;
+ session_send_mmc = false;
}
} else if (p == "midi-feedback") {
-
+
/* only set the internal flag if we have
a port.
*/
-
+
if (_mtc_port != 0) {
session_midi_feedback = Config->get_midi_feedback();
}
@@ -3176,7 +3176,7 @@ Session::config_changed (std::string p, bool ours)
if (_mmc_port && Config->get_initial_program_change() >= 0) {
MIDI::byte buf[2];
-
+
buf[0] = MIDI::program; // channel zero by default
buf[1] = (Config->get_initial_program_change() & 0x7f);
@@ -3186,7 +3186,7 @@ Session::config_changed (std::string p, bool ours)
if (_mmc_port && Config->get_initial_program_change() >= 0) {
MIDI::byte* buf = new MIDI::byte[2];
-
+
buf[0] = MIDI::program; // channel zero by default
buf[1] = (Config->get_initial_program_change() & 0x7f);
// deliver_midi (_mmc_port, buf, 2);