NOOP: delete trailing whitespace

This commit is contained in:
Paul Davis 2015-10-04 12:46:27 -04:00
parent d25e1cb635
commit e63de172d5

View file

@ -151,7 +151,7 @@ Session::pre_engine_init (string fullpath)
string full_session_name = Glib::build_filename( fullpath, _name ); string full_session_name = Glib::build_filename( fullpath, _name );
full_session_name += statefile_suffix; full_session_name += statefile_suffix;
_is_new = !Glib::file_test (full_session_name, Glib::FileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)); _is_new = !Glib::file_test (full_session_name, Glib::FileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR));
} else { } else {
_is_new = !Glib::file_test (_path, Glib::FileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)); _is_new = !Glib::file_test (_path, Glib::FileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR));
@ -179,7 +179,7 @@ Session::pre_engine_init (string fullpath)
last_rr_session_dir = session_dirs.begin(); last_rr_session_dir = session_dirs.begin();
set_history_depth (Config->get_history_depth()); set_history_depth (Config->get_history_depth());
/* default: assume simple stereo speaker configuration */ /* default: assume simple stereo speaker configuration */
_speakers->setup_default_speakers (2); _speakers->setup_default_speakers (2);
@ -214,7 +214,7 @@ Session::post_engine_init ()
BootMessage (_("Using configuration")); BootMessage (_("Using configuration"));
_midi_ports = new MidiPortManager; _midi_ports = new MidiPortManager;
MIDISceneChanger* msc; MIDISceneChanger* msc;
_scene_changer = msc = new MIDISceneChanger (*this); _scene_changer = msc = new MIDISceneChanger (*this);
@ -225,15 +225,15 @@ Session::post_engine_init ()
boost::dynamic_pointer_cast<AsyncMIDIPort>(scene_in())->set_timer (timer_func); boost::dynamic_pointer_cast<AsyncMIDIPort>(scene_in())->set_timer (timer_func);
setup_midi_machine_control (); setup_midi_machine_control ();
if (_butler->start_thread()) { if (_butler->start_thread()) {
return -1; return -1;
} }
if (start_midi_thread ()) { if (start_midi_thread ()) {
return -1; return -1;
} }
setup_click_sounds (0); setup_click_sounds (0);
setup_midi_control (); setup_midi_control ();
@ -246,7 +246,7 @@ Session::post_engine_init ()
delete _tempo_map; delete _tempo_map;
_tempo_map = new TempoMap (_current_frame_rate); _tempo_map = new TempoMap (_current_frame_rate);
_tempo_map->PropertyChanged.connect_same_thread (*this, boost::bind (&Session::tempo_map_changed, this, _1)); _tempo_map->PropertyChanged.connect_same_thread (*this, boost::bind (&Session::tempo_map_changed, this, _1));
/* MidiClock requires a tempo map */ /* MidiClock requires a tempo map */
midi_clock = new MidiClockTicker (); midi_clock = new MidiClockTicker ();
@ -256,14 +256,14 @@ Session::post_engine_init ()
SndFileSource::setup_standard_crossfades (*this, frame_rate()); SndFileSource::setup_standard_crossfades (*this, frame_rate());
_engine.GraphReordered.connect_same_thread (*this, boost::bind (&Session::graph_reordered, this)); _engine.GraphReordered.connect_same_thread (*this, boost::bind (&Session::graph_reordered, this));
AudioDiskstream::allocate_working_buffers(); AudioDiskstream::allocate_working_buffers();
refresh_disk_space (); refresh_disk_space ();
/* we're finally ready to call set_state() ... all objects have /* we're finally ready to call set_state() ... all objects have
* been created, the engine is running. * been created, the engine is running.
*/ */
if (state_tree) { if (state_tree) {
if (set_state (*state_tree->root(), Stateful::loading_state_version)) { if (set_state (*state_tree->root(), Stateful::loading_state_version)) {
return -1; return -1;
@ -278,56 +278,56 @@ Session::post_engine_init ()
boost::function<void (std::string)> ff (boost::bind (&Session::config_changed, this, _1, false)); boost::function<void (std::string)> ff (boost::bind (&Session::config_changed, this, _1, false));
boost::function<void (std::string)> ft (boost::bind (&Session::config_changed, this, _1, true)); boost::function<void (std::string)> ft (boost::bind (&Session::config_changed, this, _1, true));
Config->map_parameters (ff); Config->map_parameters (ff);
config.map_parameters (ft); config.map_parameters (ft);
_butler->map_parameters (); _butler->map_parameters ();
/* Reset all panners */ /* Reset all panners */
Delivery::reset_panners (); Delivery::reset_panners ();
/* this will cause the CPM to instantiate any protocols that are in use /* this will cause the CPM to instantiate any protocols that are in use
* (or mandatory), which will pass it this Session, and then call * (or mandatory), which will pass it this Session, and then call
* set_state() on each instantiated protocol to match stored state. * set_state() on each instantiated protocol to match stored state.
*/ */
ControlProtocolManager::instance().set_session (this); ControlProtocolManager::instance().set_session (this);
/* This must be done after the ControlProtocolManager set_session above, /* This must be done after the ControlProtocolManager set_session above,
as it will set states for ports which the ControlProtocolManager creates. as it will set states for ports which the ControlProtocolManager creates.
*/ */
// XXX set state of MIDI::Port's // XXX set state of MIDI::Port's
// MidiPortManager::instance()->set_port_states (Config->midi_port_states ()); // MidiPortManager::instance()->set_port_states (Config->midi_port_states ());
/* And this must be done after the MIDI::Manager::set_port_states as /* And this must be done after the MIDI::Manager::set_port_states as
* it will try to make connections whose details are loaded by set_port_states. * it will try to make connections whose details are loaded by set_port_states.
*/ */
hookup_io (); hookup_io ();
/* Let control protocols know that we are now all connected, so they /* Let control protocols know that we are now all connected, so they
* could start talking to surfaces if they want to. * could start talking to surfaces if they want to.
*/ */
ControlProtocolManager::instance().midi_connectivity_established (); ControlProtocolManager::instance().midi_connectivity_established ();
if (_is_new && !no_auto_connect()) { if (_is_new && !no_auto_connect()) {
Glib::Threads::Mutex::Lock lm (AudioEngine::instance()->process_lock()); Glib::Threads::Mutex::Lock lm (AudioEngine::instance()->process_lock());
auto_connect_master_bus (); auto_connect_master_bus ();
} }
_state_of_the_state = StateOfTheState (_state_of_the_state & ~(CannotSave|Dirty)); _state_of_the_state = StateOfTheState (_state_of_the_state & ~(CannotSave|Dirty));
/* update latencies */ /* update latencies */
initialize_latencies (); initialize_latencies ();
_locations->added.connect_same_thread (*this, boost::bind (&Session::location_added, this, _1)); _locations->added.connect_same_thread (*this, boost::bind (&Session::location_added, this, _1));
_locations->removed.connect_same_thread (*this, boost::bind (&Session::location_removed, this, _1)); _locations->removed.connect_same_thread (*this, boost::bind (&Session::location_removed, this, _1));
_locations->changed.connect_same_thread (*this, boost::bind (&Session::locations_changed, this)); _locations->changed.connect_same_thread (*this, boost::bind (&Session::locations_changed, this));
} catch (AudioEngine::PortRegistrationFailure& err) { } catch (AudioEngine::PortRegistrationFailure& err) {
/* handle this one in a different way than all others, so that its clear what happened */ /* handle this one in a different way than all others, so that its clear what happened */
error << err.what() << endmsg; error << err.what() << endmsg;
@ -364,9 +364,9 @@ Session::post_engine_init ()
} }
/* Now, finally, we can fill the playback buffers */ /* Now, finally, we can fill the playback buffers */
BootMessage (_("Filling playback buffers")); BootMessage (_("Filling playback buffers"));
boost::shared_ptr<RouteList> rl = routes.reader(); boost::shared_ptr<RouteList> rl = routes.reader();
for (RouteList::iterator r = rl->begin(); r != rl->end(); ++r) { for (RouteList::iterator r = rl->begin(); r != rl->end(); ++r) {
boost::shared_ptr<Track> trk = boost::dynamic_pointer_cast<Track> (*r); boost::shared_ptr<Track> trk = boost::dynamic_pointer_cast<Track> (*r);
@ -382,11 +382,11 @@ void
Session::session_loaded () Session::session_loaded ()
{ {
SessionLoaded(); SessionLoaded();
_state_of_the_state = Clean; _state_of_the_state = Clean;
DirtyChanged (); /* EMIT SIGNAL */ DirtyChanged (); /* EMIT SIGNAL */
if (_is_new) { if (_is_new) {
save_state (""); save_state ("");
} else if (state_was_pending) { } else if (state_was_pending) {
@ -394,9 +394,9 @@ Session::session_loaded ()
remove_pending_capture_state (); remove_pending_capture_state ();
state_was_pending = false; state_was_pending = false;
} }
/* Now, finally, we can fill the playback buffers */ /* Now, finally, we can fill the playback buffers */
BootMessage (_("Filling playback buffers")); BootMessage (_("Filling playback buffers"));
force_locate (_transport_frame, false); force_locate (_transport_frame, false);
} }
@ -555,7 +555,7 @@ Session::create (const string& session_template, BusProfile* bus_profile)
while (!feof (in)) { while (!feof (in)) {
size_t charsRead = fread (buf, sizeof(char), 1024, in); size_t charsRead = fread (buf, sizeof(char), 1024, in);
if (ferror (in)) { if (ferror (in)) {
error << string_compose (_("Error reading session template file %1 (%2)"), in_path, strerror (errno)) << endmsg; error << string_compose (_("Error reading session template file %1 (%2)"), in_path, strerror (errno)) << endmsg;
fclose (in); fclose (in);
@ -585,7 +585,7 @@ Session::create (const string& session_template, BusProfile* bus_profile)
std::string template_plugins = Glib::build_filename (session_template, X_("plugins")); std::string template_plugins = Glib::build_filename (session_template, X_("plugins"));
copy_recurse (template_plugins, plugins_dir ()); copy_recurse (template_plugins, plugins_dir ());
} }
return 0; return 0;
} else { } else {
@ -604,16 +604,16 @@ Session::create (const string& session_template, BusProfile* bus_profile)
} }
if (Profile->get_trx()) { if (Profile->get_trx()) {
/* set initial start + end point : ARDOUR::Session::session_end_shift long. /* set initial start + end point : ARDOUR::Session::session_end_shift long.
Remember that this is a brand new session. Sessions Remember that this is a brand new session. Sessions
loaded from saved state will get this range from the saved state. loaded from saved state will get this range from the saved state.
*/ */
set_session_range_location (0, 0); set_session_range_location (0, 0);
/* Initial loop location, from absolute zero, length 10 seconds */ /* Initial loop location, from absolute zero, length 10 seconds */
Location* loc = new Location (*this, 0, 10.0 * _engine.sample_rate(), _("Loop"), Location::IsAutoLoop); Location* loc = new Location (*this, 0, 10.0 * _engine.sample_rate(), _("Loop"), Location::IsAutoLoop);
_locations->add (loc, true); _locations->add (loc, true);
set_auto_loop_location (loc); set_auto_loop_location (loc);
@ -656,15 +656,15 @@ Session::create (const string& session_template, BusProfile* bus_profile)
// Waves Tracks: Skip this. Always use autoconnection for Tracks // Waves Tracks: Skip this. Always use autoconnection for Tracks
if (!ARDOUR::Profile->get_trx()) { if (!ARDOUR::Profile->get_trx()) {
/* this allows the user to override settings with an environment variable. /* this allows the user to override settings with an environment variable.
*/ */
if (no_auto_connect()) { if (no_auto_connect()) {
bus_profile->input_ac = AutoConnectOption (0); bus_profile->input_ac = AutoConnectOption (0);
bus_profile->output_ac = AutoConnectOption (0); bus_profile->output_ac = AutoConnectOption (0);
} }
Config->set_input_auto_connect (bus_profile->input_ac); Config->set_input_auto_connect (bus_profile->input_ac);
Config->set_output_auto_connect (bus_profile->output_ac); Config->set_output_auto_connect (bus_profile->output_ac);
} }
@ -827,7 +827,7 @@ Session::save_state (string snapshot_name, bool pending, bool switch_to_snapshot
tmp_path = Glib::build_filename (tmp_path, legalize_for_path (snapshot_name) + temp_suffix); tmp_path = Glib::build_filename (tmp_path, legalize_for_path (snapshot_name) + temp_suffix);
cerr << "actually writing state to " << tmp_path << endl; cerr << "actually writing state to " << tmp_path << endl;
if (!tree.write (tmp_path)) { if (!tree.write (tmp_path)) {
error << string_compose (_("state could not be saved to %1"), tmp_path) << endmsg; error << string_compose (_("state could not be saved to %1"), tmp_path) << endmsg;
if (g_remove (tmp_path.c_str()) != 0) { if (g_remove (tmp_path.c_str()) != 0) {
@ -839,7 +839,7 @@ Session::save_state (string snapshot_name, bool pending, bool switch_to_snapshot
} else { } else {
cerr << "renaming state to " << xml_path << endl; cerr << "renaming state to " << xml_path << endl;
if (::g_rename (tmp_path.c_str(), xml_path.c_str()) != 0) { if (::g_rename (tmp_path.c_str(), xml_path.c_str()) != 0) {
error << string_compose (_("could not rename temporary session file %1 to %2 (%3)"), error << string_compose (_("could not rename temporary session file %1 to %2 (%3)"),
tmp_path, xml_path, g_strerror(errno)) << endmsg; tmp_path, xml_path, g_strerror(errno)) << endmsg;
@ -963,9 +963,9 @@ Session::load_state (string snapshot_name)
// only create a backup for a given statefile version once // only create a backup for a given statefile version once
if (!Glib::file_test (backup_path, Glib::FILE_TEST_EXISTS)) { if (!Glib::file_test (backup_path, Glib::FILE_TEST_EXISTS)) {
VersionMismatch (xmlpath, backup_path); VersionMismatch (xmlpath, backup_path);
if (!copy_file (xmlpath, backup_path)) {; if (!copy_file (xmlpath, backup_path)) {;
return -1; return -1;
} }
@ -1141,13 +1141,13 @@ Session::state (bool full_state)
} }
} }
} }
if (full_state) { if (full_state) {
if (_locations) { if (_locations) {
node->add_child_nocopy (_locations->get_state()); node->add_child_nocopy (_locations->get_state());
} }
} else { } else {
Locations loc (*this); Locations loc (*this);
@ -1157,7 +1157,7 @@ Session::state (bool full_state)
range->set (max_framepos, 0); range->set (max_framepos, 0);
loc.add (range); loc.add (range);
XMLNode& locations_state = loc.get_state(); XMLNode& locations_state = loc.get_state();
if (ARDOUR::Profile->get_trx() && _locations) { if (ARDOUR::Profile->get_trx() && _locations) {
// For tracks we need stored the Auto Loop Range and all MIDI markers. // For tracks we need stored the Auto Loop Range and all MIDI markers.
for (Locations::LocationList::const_iterator i = _locations->list ().begin (); i != _locations->list ().end (); ++i) { for (Locations::LocationList::const_iterator i = _locations->list ().begin (); i != _locations->list ().end (); ++i) {
@ -1187,9 +1187,9 @@ Session::state (bool full_state)
RoutePublicOrderSorter cmp; RoutePublicOrderSorter cmp;
RouteList public_order (*r); RouteList public_order (*r);
public_order.sort (cmp); public_order.sort (cmp);
/* the sort should have put control outs first */ /* the sort should have put control outs first */
if (_monitor_out) { if (_monitor_out) {
assert (_monitor_out == public_order.front()); assert (_monitor_out == public_order.front());
} }
@ -1718,7 +1718,7 @@ Session::load_nested_sources (const XMLNode& node)
for (niter = nlist.begin(); niter != nlist.end(); ++niter) { for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
if ((*niter)->name() == "Source") { if ((*niter)->name() == "Source") {
/* it may already exist, so don't recreate it unnecessarily /* it may already exist, so don't recreate it unnecessarily
*/ */
XMLProperty* prop = (*niter)->property (X_("id")); XMLProperty* prop = (*niter)->property (X_("id"));
@ -2123,7 +2123,7 @@ Session::save_template (string template_name)
template_dir_path) << endmsg; template_dir_path) << endmsg;
return -1; return -1;
} }
if (g_mkdir_with_parents (template_dir_path.c_str(), 0755) != 0) { if (g_mkdir_with_parents (template_dir_path.c_str(), 0755) != 0) {
error << string_compose(_("Could not create directory for Session template\"%1\" (%2)"), error << string_compose(_("Could not create directory for Session template\"%1\" (%2)"),
template_dir_path, g_strerror (errno)) << endmsg; template_dir_path, g_strerror (errno)) << endmsg;
@ -2133,7 +2133,7 @@ Session::save_template (string template_name)
/* file to write */ /* file to write */
std::string template_file_path; std::string template_file_path;
if (ARDOUR::Profile->get_trx()) { if (ARDOUR::Profile->get_trx()) {
template_file_path = template_name; template_file_path = template_name;
} else { } else {
@ -2145,7 +2145,7 @@ Session::save_template (string template_name)
} }
SessionSaveUnderway (); /* EMIT SIGNAL */ SessionSaveUnderway (); /* EMIT SIGNAL */
XMLTree tree; XMLTree tree;
tree.set_root (&get_template()); tree.set_root (&get_template());
@ -2176,7 +2176,7 @@ void
Session::refresh_disk_space () Session::refresh_disk_space ()
{ {
#if __APPLE__ || (HAVE_SYS_VFS_H && HAVE_SYS_STATVFS_H) #if __APPLE__ || (HAVE_SYS_VFS_H && HAVE_SYS_STATVFS_H)
Glib::Threads::Mutex::Lock lm (space_lock); Glib::Threads::Mutex::Lock lm (space_lock);
/* get freespace on every FS that is part of the session path */ /* get freespace on every FS that is part of the session path */
@ -3013,17 +3013,17 @@ Session::cleanup_sources (CleanupReport& rep)
if (playlists->source_use_count (fs) != 0) { if (playlists->source_use_count (fs) != 0) {
all_sources.insert (fs->path()); all_sources.insert (fs->path());
} else { } else {
/* we might not remove this source from disk, because it may be used /* we might not remove this source from disk, because it may be used
by other snapshots, but its not being used in this version by other snapshots, but its not being used in this version
so lets get rid of it now, along with any representative regions so lets get rid of it now, along with any representative regions
in the region list. in the region list.
*/ */
RegionFactory::remove_regions_using_source (i->second); RegionFactory::remove_regions_using_source (i->second);
// also remove source from all_sources // also remove source from all_sources
for (set<string>::iterator j = all_sources.begin(); j != all_sources.end(); ++j) { for (set<string>::iterator j = all_sources.begin(); j != all_sources.end(); ++j) {
spath = Glib::path_get_basename (*j); spath = Glib::path_get_basename (*j);
if (spath == i->second->name()) { if (spath == i->second->name()) {
@ -3408,7 +3408,7 @@ Session::controllable_by_descriptor (const ControllableDescriptor& desc)
if (p) { if (p) {
boost::shared_ptr<Send> s = boost::dynamic_pointer_cast<Send>(p); boost::shared_ptr<Send> s = boost::dynamic_pointer_cast<Send>(p);
boost::shared_ptr<Amp> a = s->amp(); boost::shared_ptr<Amp> a = s->amp();
if (a) { if (a) {
c = s->amp()->gain_control(); c = s->amp()->gain_control();
} }
@ -3451,7 +3451,7 @@ Session::save_history (string snapshot_name)
return 0; return 0;
} }
if (!Config->get_save_history() || Config->get_saved_history_depth() < 0 || if (!Config->get_save_history() || Config->get_saved_history_depth() < 0 ||
(_history.undo_depth() == 0 && _history.redo_depth() == 0)) { (_history.undo_depth() == 0 && _history.redo_depth() == 0)) {
return 0; return 0;
} }
@ -3713,7 +3713,7 @@ Session::config_changed (std::string p, bool ours)
} }
} else if (p == "click-gain") { } else if (p == "click-gain") {
if (_click_gain) { if (_click_gain) {
_click_gain->set_gain (Config->get_click_gain(), this); _click_gain->set_gain (Config->get_click_gain(), this);
} }
@ -3908,7 +3908,7 @@ Session::rename (const std::string& new_name)
* interchange subdirectory * interchange subdirectory
* session file * session file
* session history * session history
* Backup files are left unchanged and not renamed. * Backup files are left unchanged and not renamed.
*/ */
@ -3925,30 +3925,30 @@ Session::rename (const std::string& new_name)
fs->close (); fs->close ();
} }
} }
/* pass one: not 100% safe check that the new directory names don't /* pass one: not 100% safe check that the new directory names don't
* already exist ... * already exist ...
*/ */
for (vector<space_and_path>::const_iterator i = session_dirs.begin(); i != session_dirs.end(); ++i) { for (vector<space_and_path>::const_iterator i = session_dirs.begin(); i != session_dirs.end(); ++i) {
oldstr = (*i).path; oldstr = (*i).path;
/* this is a stupid hack because Glib::path_get_dirname() is /* this is a stupid hack because Glib::path_get_dirname() is
* lexical-only, and so passing it /a/b/c/ gives a different * lexical-only, and so passing it /a/b/c/ gives a different
* result than passing it /a/b/c ... * result than passing it /a/b/c ...
*/ */
if (oldstr[oldstr.length()-1] == G_DIR_SEPARATOR) { if (oldstr[oldstr.length()-1] == G_DIR_SEPARATOR) {
oldstr = oldstr.substr (0, oldstr.length() - 1); oldstr = oldstr.substr (0, oldstr.length() - 1);
} }
string base = Glib::path_get_dirname (oldstr); string base = Glib::path_get_dirname (oldstr);
newstr = Glib::build_filename (base, legal_name); newstr = Glib::build_filename (base, legal_name);
cerr << "Looking for " << newstr << endl; cerr << "Looking for " << newstr << endl;
if (Glib::file_test (newstr, Glib::FILE_TEST_EXISTS)) { if (Glib::file_test (newstr, Glib::FILE_TEST_EXISTS)) {
cerr << " exists\n"; cerr << " exists\n";
return -1; return -1;
@ -3958,18 +3958,18 @@ Session::rename (const std::string& new_name)
/* Session dirs */ /* Session dirs */
first = true; first = true;
for (vector<space_and_path>::iterator i = session_dirs.begin(); i != session_dirs.end(); ++i) { for (vector<space_and_path>::iterator i = session_dirs.begin(); i != session_dirs.end(); ++i) {
vector<string> v; vector<string> v;
oldstr = (*i).path; oldstr = (*i).path;
/* this is a stupid hack because Glib::path_get_dirname() is /* this is a stupid hack because Glib::path_get_dirname() is
* lexical-only, and so passing it /a/b/c/ gives a different * lexical-only, and so passing it /a/b/c/ gives a different
* result than passing it /a/b/c ... * result than passing it /a/b/c ...
*/ */
if (oldstr[oldstr.length()-1] == G_DIR_SEPARATOR) { if (oldstr[oldstr.length()-1] == G_DIR_SEPARATOR) {
oldstr = oldstr.substr (0, oldstr.length() - 1); oldstr = oldstr.substr (0, oldstr.length() - 1);
} }
@ -3978,8 +3978,8 @@ Session::rename (const std::string& new_name)
newstr = Glib::build_filename (base, legal_name); newstr = Glib::build_filename (base, legal_name);
cerr << "for " << oldstr << " new dir = " << newstr << endl; cerr << "for " << oldstr << " new dir = " << newstr << endl;
cerr << "Rename " << oldstr << " => " << newstr << endl; cerr << "Rename " << oldstr << " => " << newstr << endl;
if (::g_rename (oldstr.c_str(), newstr.c_str()) != 0) { if (::g_rename (oldstr.c_str(), newstr.c_str()) != 0) {
cerr << string_compose (_("renaming %s as %2 failed (%3)"), oldstr, newstr, g_strerror (errno)) << endl; cerr << string_compose (_("renaming %s as %2 failed (%3)"), oldstr, newstr, g_strerror (errno)) << endl;
error << string_compose (_("renaming %s as %2 failed (%3)"), oldstr, newstr, g_strerror (errno)) << endmsg; error << string_compose (_("renaming %s as %2 failed (%3)"), oldstr, newstr, g_strerror (errno)) << endmsg;
@ -3987,12 +3987,12 @@ Session::rename (const std::string& new_name)
} }
/* Reset path in "session dirs" */ /* Reset path in "session dirs" */
(*i).path = newstr; (*i).path = newstr;
(*i).blocks = 0; (*i).blocks = 0;
/* reset primary SessionDirectory object */ /* reset primary SessionDirectory object */
if (first) { if (first) {
(*_session_dir) = newstr; (*_session_dir) = newstr;
new_path = newstr; new_path = newstr;
@ -4005,10 +4005,10 @@ Session::rename (const std::string& new_name)
string new_interchange_dir; string new_interchange_dir;
/* use newstr here because we renamed the path /* use newstr here because we renamed the path
* (folder/directory) that used to be oldstr to newstr above * (folder/directory) that used to be oldstr to newstr above
*/ */
v.push_back (newstr); v.push_back (newstr);
v.push_back (interchange_dir_name); v.push_back (interchange_dir_name);
v.push_back (Glib::path_get_basename (oldstr)); v.push_back (Glib::path_get_basename (oldstr));
@ -4018,11 +4018,11 @@ Session::rename (const std::string& new_name)
v.push_back (newstr); v.push_back (newstr);
v.push_back (interchange_dir_name); v.push_back (interchange_dir_name);
v.push_back (legal_name); v.push_back (legal_name);
new_interchange_dir = Glib::build_filename (v); new_interchange_dir = Glib::build_filename (v);
cerr << "Rename " << old_interchange_dir << " => " << new_interchange_dir << endl; cerr << "Rename " << old_interchange_dir << " => " << new_interchange_dir << endl;
if (::g_rename (old_interchange_dir.c_str(), new_interchange_dir.c_str()) != 0) { if (::g_rename (old_interchange_dir.c_str(), new_interchange_dir.c_str()) != 0) {
cerr << string_compose (_("renaming %s as %2 failed (%3)"), cerr << string_compose (_("renaming %s as %2 failed (%3)"),
old_interchange_dir, new_interchange_dir, old_interchange_dir, new_interchange_dir,
@ -4037,11 +4037,11 @@ Session::rename (const std::string& new_name)
} }
/* state file */ /* state file */
oldstr = Glib::build_filename (new_path, _current_snapshot_name + statefile_suffix); oldstr = Glib::build_filename (new_path, _current_snapshot_name + statefile_suffix);
newstr= Glib::build_filename (new_path, legal_name + statefile_suffix); newstr= Glib::build_filename (new_path, legal_name + statefile_suffix);
cerr << "Rename " << oldstr << " => " << newstr << endl; cerr << "Rename " << oldstr << " => " << newstr << endl;
if (::g_rename (oldstr.c_str(), newstr.c_str()) != 0) { if (::g_rename (oldstr.c_str(), newstr.c_str()) != 0) {
cerr << string_compose (_("renaming %1 as %2 failed (%3)"), oldstr, newstr, g_strerror (errno)) << endl; cerr << string_compose (_("renaming %1 as %2 failed (%3)"), oldstr, newstr, g_strerror (errno)) << endl;
@ -4050,14 +4050,14 @@ Session::rename (const std::string& new_name)
} }
/* history file */ /* history file */
oldstr = Glib::build_filename (new_path, _current_snapshot_name) + history_suffix; oldstr = Glib::build_filename (new_path, _current_snapshot_name) + history_suffix;
if (Glib::file_test (oldstr, Glib::FILE_TEST_EXISTS)) { if (Glib::file_test (oldstr, Glib::FILE_TEST_EXISTS)) {
newstr = Glib::build_filename (new_path, legal_name) + history_suffix; newstr = Glib::build_filename (new_path, legal_name) + history_suffix;
cerr << "Rename " << oldstr << " => " << newstr << endl; cerr << "Rename " << oldstr << " => " << newstr << endl;
if (::g_rename (oldstr.c_str(), newstr.c_str()) != 0) { if (::g_rename (oldstr.c_str(), newstr.c_str()) != 0) {
cerr << string_compose (_("renaming %1 as %2 failed (%3)"), oldstr, newstr, g_strerror (errno)) << endl; cerr << string_compose (_("renaming %1 as %2 failed (%3)"), oldstr, newstr, g_strerror (errno)) << endl;
error << string_compose (_("renaming %1 as %2 failed (%3)"), oldstr, newstr, g_strerror (errno)) << endmsg; error << string_compose (_("renaming %1 as %2 failed (%3)"), oldstr, newstr, g_strerror (errno)) << endmsg;
@ -4068,9 +4068,9 @@ Session::rename (const std::string& new_name)
/* remove old name from recent sessions */ /* remove old name from recent sessions */
remove_recent_sessions (_path); remove_recent_sessions (_path);
_path = new_path; _path = new_path;
/* update file source paths */ /* update file source paths */
for (SourceMap::iterator i = sources.begin(); i != sources.end(); ++i) { for (SourceMap::iterator i = sources.begin(); i != sources.end(); ++i) {
boost::shared_ptr<FileSource> fs = boost::dynamic_pointer_cast<FileSource> (i->second); boost::shared_ptr<FileSource> fs = boost::dynamic_pointer_cast<FileSource> (i->second);
if (fs) { if (fs) {
@ -4083,7 +4083,7 @@ Session::rename (const std::string& new_name)
_current_snapshot_name = new_name; _current_snapshot_name = new_name;
_name = new_name; _name = new_name;
set_dirty (); set_dirty ();
/* save state again to get everything just right */ /* save state again to get everything just right */
@ -4125,7 +4125,7 @@ Session::get_info_from_path (const string& xmlpath, float& sample_rate, SampleFo
/* sample rate */ /* sample rate */
const XMLProperty* prop; const XMLProperty* prop;
if ((prop = tree.root()->property (X_("sample-rate"))) != 0) { if ((prop = tree.root()->property (X_("sample-rate"))) != 0) {
sample_rate = atoi (prop->value()); sample_rate = atoi (prop->value());
found_sr = true; found_sr = true;
} }
@ -4178,20 +4178,20 @@ Session::bring_all_sources_into_session (boost::function<void(uint32_t,uint32_t,
{ {
Glib::Threads::Mutex::Lock lm (source_lock); Glib::Threads::Mutex::Lock lm (source_lock);
cerr << " total sources = " << sources.size(); cerr << " total sources = " << sources.size();
for (SourceMap::const_iterator i = sources.begin(); i != sources.end(); ++i) { for (SourceMap::const_iterator i = sources.begin(); i != sources.end(); ++i) {
boost::shared_ptr<FileSource> fs = boost::dynamic_pointer_cast<FileSource> (i->second); boost::shared_ptr<FileSource> fs = boost::dynamic_pointer_cast<FileSource> (i->second);
if (!fs) { if (!fs) {
continue; continue;
} }
if (fs->within_session()) { if (fs->within_session()) {
continue; continue;
} }
if (source_path_map.find (fs->path()) != source_path_map.end()) { if (source_path_map.find (fs->path()) != source_path_map.end()) {
source_path_map[fs->path()].push_back (fs); source_path_map[fs->path()].push_back (fs);
} else { } else {
@ -4199,45 +4199,45 @@ Session::bring_all_sources_into_session (boost::function<void(uint32_t,uint32_t,
v.push_back (fs); v.push_back (fs);
source_path_map.insert (make_pair (fs->path(), v)); source_path_map.insert (make_pair (fs->path(), v));
} }
total++; total++;
} }
cerr << " fsources = " << total << endl; cerr << " fsources = " << total << endl;
for (SourcePathMap::iterator i = source_path_map.begin(); i != source_path_map.end(); ++i) { for (SourcePathMap::iterator i = source_path_map.begin(); i != source_path_map.end(); ++i) {
/* tell caller where we are */ /* tell caller where we are */
string old_path = i->first; string old_path = i->first;
callback (n, total, old_path); callback (n, total, old_path);
cerr << old_path << endl; cerr << old_path << endl;
new_path.clear (); new_path.clear ();
switch (i->second.front()->type()) { switch (i->second.front()->type()) {
case DataType::AUDIO: case DataType::AUDIO:
new_path = new_audio_source_path_for_embedded (old_path); new_path = new_audio_source_path_for_embedded (old_path);
break; break;
case DataType::MIDI: case DataType::MIDI:
/* XXX not implemented yet */ /* XXX not implemented yet */
break; break;
} }
if (new_path.empty()) { if (new_path.empty()) {
continue; continue;
} }
cerr << "Move " << old_path << " => " << new_path << endl; cerr << "Move " << old_path << " => " << new_path << endl;
if (!copy_file (old_path, new_path)) { if (!copy_file (old_path, new_path)) {
cerr << "failed !\n"; cerr << "failed !\n";
ret = -1; ret = -1;
} }
/* make sure we stop looking in the external /* make sure we stop looking in the external
dir/folder. Remember, this is an all-or-nothing dir/folder. Remember, this is an all-or-nothing
operations, it doesn't merge just some files. operations, it doesn't merge just some files.
@ -4280,7 +4280,7 @@ make_new_media_path (string old_path, string new_session_folder, string new_sess
v.push_back (new_session_path); /* just one directory/folder */ v.push_back (new_session_path); /* just one directory/folder */
v.push_back (typedir); v.push_back (typedir);
v.push_back (Glib::path_get_basename (old_path)); v.push_back (Glib::path_get_basename (old_path));
return Glib::build_filename (v); return Glib::build_filename (v);
} }
@ -4307,15 +4307,15 @@ Session::save_as (SaveAs& saveas)
/* get total size */ /* get total size */
for (vector<space_and_path>::const_iterator sd = session_dirs.begin(); sd != session_dirs.end(); ++sd) { for (vector<space_and_path>::const_iterator sd = session_dirs.begin(); sd != session_dirs.end(); ++sd) {
/* need to clear this because /* need to clear this because
* find_files_matching_filter() is cumulative * find_files_matching_filter() is cumulative
*/ */
files.clear (); files.clear ();
find_files_matching_filter (files, (*sd).path, accept_all_files, 0, false, true, true); find_files_matching_filter (files, (*sd).path, accept_all_files, 0, false, true, true);
all += files.size(); all += files.size();
for (vector<string>::iterator i = files.begin(); i != files.end(); ++i) { for (vector<string>::iterator i = files.begin(); i != files.end(); ++i) {
@ -4326,7 +4326,7 @@ Session::save_as (SaveAs& saveas)
} }
/* save old values so we can switch back if we are not switching to the new session */ /* save old values so we can switch back if we are not switching to the new session */
string old_path = _path; string old_path = _path;
string old_name = _name; string old_name = _name;
string old_snapshot = _current_snapshot_name; string old_snapshot = _current_snapshot_name;
@ -4336,15 +4336,15 @@ Session::save_as (SaveAs& saveas)
old_search_path[DataType::AUDIO] = source_search_path (DataType::AUDIO); old_search_path[DataType::AUDIO] = source_search_path (DataType::AUDIO);
old_search_path[DataType::MIDI] = source_search_path (DataType::MIDI); old_search_path[DataType::MIDI] = source_search_path (DataType::MIDI);
old_config_search_path[DataType::AUDIO] = config.get_audio_search_path (); old_config_search_path[DataType::AUDIO] = config.get_audio_search_path ();
old_config_search_path[DataType::MIDI] = config.get_midi_search_path (); old_config_search_path[DataType::MIDI] = config.get_midi_search_path ();
/* switch session directory */ /* switch session directory */
(*_session_dir) = to_dir; (*_session_dir) = to_dir;
/* create new tree */ /* create new tree */
if (!_session_dir->create()) { if (!_session_dir->create()) {
saveas.failure_message = string_compose (_("Cannot create new session folder %1"), to_dir); saveas.failure_message = string_compose (_("Cannot create new session folder %1"), to_dir);
return -1; return -1;
@ -4354,21 +4354,21 @@ Session::save_as (SaveAs& saveas)
/* copy all relevant files. Find each location in session_dirs, /* copy all relevant files. Find each location in session_dirs,
* and copy files from there to target. * and copy files from there to target.
*/ */
for (vector<space_and_path>::const_iterator sd = session_dirs.begin(); sd != session_dirs.end(); ++sd) { for (vector<space_and_path>::const_iterator sd = session_dirs.begin(); sd != session_dirs.end(); ++sd) {
/* need to clear this because /* need to clear this because
* find_files_matching_filter() is cumulative * find_files_matching_filter() is cumulative
*/ */
files.clear (); files.clear ();
const size_t prefix_len = (*sd).path.size(); const size_t prefix_len = (*sd).path.size();
/* Work just on the files within this session dir */ /* Work just on the files within this session dir */
find_files_matching_filter (files, (*sd).path, accept_all_files, 0, false, true, true); find_files_matching_filter (files, (*sd).path, accept_all_files, 0, false, true, true);
/* add dir separator to protect against collisions with /* add dir separator to protect against collisions with
* track names (e.g. track named "audiofiles" or * track names (e.g. track named "audiofiles" or
* "analysis". * "analysis".
@ -4383,7 +4383,7 @@ Session::save_as (SaveAs& saveas)
folder. That really was a bad idea, but I'm not fixing it as part of folder. That really was a bad idea, but I'm not fixing it as part of
implementing ::save_as(). implementing ::save_as().
*/ */
for (vector<string>::iterator i = files.begin(); i != files.end(); ++i) { for (vector<string>::iterator i = files.begin(); i != files.end(); ++i) {
std::string from = *i; std::string from = *i;
@ -4395,25 +4395,25 @@ Session::save_as (SaveAs& saveas)
continue; continue;
} }
#endif #endif
if (from.find (audiofile_dir_string) != string::npos) { if (from.find (audiofile_dir_string) != string::npos) {
/* audio file: only copy if asked */ /* audio file: only copy if asked */
if (saveas.include_media && saveas.copy_media) { if (saveas.include_media && saveas.copy_media) {
string to = make_new_media_path (*i, to_dir, new_folder); string to = make_new_media_path (*i, to_dir, new_folder);
info << "media file copying from " << from << " to " << to << endmsg; info << "media file copying from " << from << " to " << to << endmsg;
if (!copy_file (from, to)) { if (!copy_file (from, to)) {
throw Glib::FileError (Glib::FileError::IO_ERROR, throw Glib::FileError (Glib::FileError::IO_ERROR,
string_compose(_("\ncopying \"%1\" failed !"), from)); string_compose(_("\ncopying \"%1\" failed !"), from));
} }
} }
/* we found media files inside the session folder */ /* we found media files inside the session folder */
internal_file_cnt++; internal_file_cnt++;
} else if (from.find (midifile_dir_string) != string::npos) { } else if (from.find (midifile_dir_string) != string::npos) {
@ -4423,44 +4423,44 @@ Session::save_as (SaveAs& saveas)
*/ */
if (saveas.include_media) { if (saveas.include_media) {
string to = make_new_media_path (*i, to_dir, new_folder); string to = make_new_media_path (*i, to_dir, new_folder);
info << "media file copying from " << from << " to " << to << endmsg; info << "media file copying from " << from << " to " << to << endmsg;
if (!copy_file (from, to)) { if (!copy_file (from, to)) {
throw Glib::FileError (Glib::FileError::IO_ERROR, "copy failed"); throw Glib::FileError (Glib::FileError::IO_ERROR, "copy failed");
} }
} }
/* we found media files inside the session folder */ /* we found media files inside the session folder */
internal_file_cnt++; internal_file_cnt++;
} else if (from.find (analysis_dir_string) != string::npos) { } else if (from.find (analysis_dir_string) != string::npos) {
/* make sure analysis dir exists in /* make sure analysis dir exists in
* new session folder, but we're not * new session folder, but we're not
* copying analysis files here, see * copying analysis files here, see
* below * below
*/ */
(void) g_mkdir_with_parents (analysis_dir().c_str(), 775); (void) g_mkdir_with_parents (analysis_dir().c_str(), 775);
continue; continue;
} else { } else {
/* normal non-media file. Don't copy state, history, etc. /* normal non-media file. Don't copy state, history, etc.
*/ */
bool do_copy = true; bool do_copy = true;
for (vector<string>::iterator v = do_not_copy_extensions.begin(); v != do_not_copy_extensions.end(); ++v) { for (vector<string>::iterator v = do_not_copy_extensions.begin(); v != do_not_copy_extensions.end(); ++v) {
if ((from.length() > (*v).length()) && (from.find (*v) == from.length() - (*v).length())) { if ((from.length() > (*v).length()) && (from.find (*v) == from.length() - (*v).length())) {
/* end of filename matches extension, do not copy file */ /* end of filename matches extension, do not copy file */
do_copy = false; do_copy = false;
break; break;
} }
} }
if (!saveas.copy_media && from.find (peakfile_suffix) != string::npos) { if (!saveas.copy_media && from.find (peakfile_suffix) != string::npos) {
@ -4469,10 +4469,10 @@ Session::save_as (SaveAs& saveas)
*/ */
do_copy = false; do_copy = false;
} }
if (do_copy) { if (do_copy) {
string to = Glib::build_filename (to_dir, from.substr (prefix_len)); string to = Glib::build_filename (to_dir, from.substr (prefix_len));
info << "attempting to make directory/folder " << to << endmsg; info << "attempting to make directory/folder " << to << endmsg;
if (g_mkdir_with_parents (Glib::path_get_dirname (to).c_str(), 0755)) { if (g_mkdir_with_parents (Glib::path_get_dirname (to).c_str(), 0755)) {
@ -4480,26 +4480,26 @@ Session::save_as (SaveAs& saveas)
} }
info << "attempting to copy " << from << " to " << to << endmsg; info << "attempting to copy " << from << " to " << to << endmsg;
if (!copy_file (from, to)) { if (!copy_file (from, to)) {
throw Glib::FileError (Glib::FileError::IO_ERROR, throw Glib::FileError (Glib::FileError::IO_ERROR,
string_compose(_("\ncopying \"%1\" failed !"), from)); string_compose(_("\ncopying \"%1\" failed !"), from));
} }
} }
} }
/* measure file size even if we're not going to copy so that our Progress /* measure file size even if we're not going to copy so that our Progress
signals are correct, since we included these do-not-copy files signals are correct, since we included these do-not-copy files
in the computation of the total size and file count. in the computation of the total size and file count.
*/ */
GStatBuf gsb; GStatBuf gsb;
g_stat (from.c_str(), &gsb); g_stat (from.c_str(), &gsb);
copied += gsb.st_size; copied += gsb.st_size;
cnt++; cnt++;
double fraction = (double) copied / total_bytes; double fraction = (double) copied / total_bytes;
bool keep_going = true; bool keep_going = true;
if (saveas.copy_media) { if (saveas.copy_media) {
@ -4508,11 +4508,11 @@ Session::save_as (SaveAs& saveas)
* media is not being copied, because * media is not being copied, because
* it will be fast(ish). * it will be fast(ish).
*/ */
/* tell someone "X percent, file M of N"; M is one-based */ /* tell someone "X percent, file M of N"; M is one-based */
boost::optional<bool> res = saveas.Progress (fraction, cnt, all); boost::optional<bool> res = saveas.Progress (fraction, cnt, all);
if (res) { if (res) {
keep_going = *res; keep_going = *res;
} }
@ -4546,7 +4546,7 @@ Session::save_as (SaveAs& saveas)
} }
if (saveas.include_media) { if (saveas.include_media) {
if (saveas.copy_media) { if (saveas.copy_media) {
#ifndef PLATFORM_WINDOWS #ifndef PLATFORM_WINDOWS
/* There are problems with analysis files on /* There are problems with analysis files on
@ -4556,7 +4556,7 @@ Session::save_as (SaveAs& saveas)
* *
* This is a tricky problem to solve so for * This is a tricky problem to solve so for
* just don't copy these files. They will be * just don't copy these files. They will be
* regenerated as-needed anyway, subject to the * regenerated as-needed anyway, subject to the
* existing issue that the filenames will be * existing issue that the filenames will be
* rejected by Windows, which is a separate * rejected by Windows, which is a separate
* problem (though related). * problem (though related).
@ -4565,17 +4565,17 @@ Session::save_as (SaveAs& saveas)
/* only needed if we are copying media, since the /* only needed if we are copying media, since the
* analysis data refers to media data * analysis data refers to media data
*/ */
old = analysis_dir (); old = analysis_dir ();
if (Glib::file_test (old, Glib::FILE_TEST_EXISTS)) { if (Glib::file_test (old, Glib::FILE_TEST_EXISTS)) {
string newdir = Glib::build_filename (to_dir, "analysis"); string newdir = Glib::build_filename (to_dir, "analysis");
copy_files (old, newdir); copy_files (old, newdir);
} }
#endif /* PLATFORM_WINDOWS */ #endif /* PLATFORM_WINDOWS */
} }
} }
_path = to_dir; _path = to_dir;
_current_snapshot_name = saveas.new_name; _current_snapshot_name = saveas.new_name;
_name = saveas.new_name; _name = saveas.new_name;
@ -4598,12 +4598,12 @@ Session::save_as (SaveAs& saveas)
*/ */
} }
} }
bool was_dirty = dirty (); bool was_dirty = dirty ();
save_state ("", false, false, !saveas.include_media); save_state ("", false, false, !saveas.include_media);
save_default_options (); save_default_options ();
if (saveas.copy_media && saveas.copy_external) { if (saveas.copy_media && saveas.copy_external) {
if (bring_all_sources_into_session (boost::bind (&Session::save_as_bring_callback, this, _1, _2, _3))) { if (bring_all_sources_into_session (boost::bind (&Session::save_as_bring_callback, this, _1, _2, _3))) {
throw Glib::FileError (Glib::FileError::NO_SPACE_LEFT, "consolidate failed"); throw Glib::FileError (Glib::FileError::NO_SPACE_LEFT, "consolidate failed");
@ -4613,7 +4613,7 @@ Session::save_as (SaveAs& saveas)
saveas.final_session_folder_name = _path; saveas.final_session_folder_name = _path;
store_recent_sessions (_name, _path); store_recent_sessions (_name, _path);
if (!saveas.switch_to) { if (!saveas.switch_to) {
/* switch back to the way things were */ /* switch back to the way things were */
@ -4633,7 +4633,7 @@ Session::save_as (SaveAs& saveas)
config.set_audio_search_path (old_config_search_path[DataType::AUDIO]); config.set_audio_search_path (old_config_search_path[DataType::AUDIO]);
config.set_midi_search_path (old_config_search_path[DataType::MIDI]); config.set_midi_search_path (old_config_search_path[DataType::MIDI]);
} }
} else { } else {
/* prune session dirs, and update disk space statistics /* prune session dirs, and update disk space statistics
@ -4645,7 +4645,7 @@ Session::save_as (SaveAs& saveas)
session_dirs.push_back (sp); session_dirs.push_back (sp);
refresh_disk_space (); refresh_disk_space ();
/* ensure that all existing tracks reset their current capture source paths /* ensure that all existing tracks reset their current capture source paths
*/ */
reset_write_sources (true, true); reset_write_sources (true, true);
@ -4670,27 +4670,27 @@ Session::save_as (SaveAs& saveas)
} catch (Glib::FileError& e) { } catch (Glib::FileError& e) {
saveas.failure_message = e.what(); saveas.failure_message = e.what();
/* recursively remove all the directories */ /* recursively remove all the directories */
remove_directory (to_dir); remove_directory (to_dir);
/* return error */ /* return error */
return -1; return -1;
} catch (...) { } catch (...) {
saveas.failure_message = _("unknown reason"); saveas.failure_message = _("unknown reason");
/* recursively remove all the directories */ /* recursively remove all the directories */
remove_directory (to_dir); remove_directory (to_dir);
/* return error */ /* return error */
return -1; return -1;
} }
return 0; return 0;
} }