ARD: proper cleanup
[ardour.git] / libs / ardour / file_source.cc
index 709915378d8de6896379f5ed6e1306b26902d6d1..ae63bd55b13588f0e81976defff05792d52e3317 100644 (file)
@@ -56,14 +56,12 @@ PBD::Signal2<int,std::string,std::vector<std::string> > FileSource::AmbiguousFil
 FileSource::FileSource (Session& session, DataType type, const string& path, const string& origin, Source::Flag flag)
        : Source(session, type, path, flag)
        , _path (path)
-       , _file_is_new (!origin.empty()) // origin empty => new file VS. origin !empty => new file
+       , _file_is_new (!origin.empty()) // if origin is left unspecified (empty string) then file must exist
        , _channel (0)
         , _origin (origin)
         , _open (false)
 {
        set_within_session_from_path (path);
-
-        prevent_deletion ();
 }
 
 FileSource::FileSource (Session& session, const XMLNode& node, bool /*must_exist*/)
@@ -77,8 +75,6 @@ FileSource::FileSource (Session& session, const XMLNode& node, bool /*must_exist
 
        _path = _name;
        _within_session = true;
-
-        prevent_deletion ();
 }
 
 FileSource::~FileSource()
@@ -86,20 +82,21 @@ FileSource::~FileSource()
 }
 
 void
-FileSource::prevent_deletion ()
+FileSource::existence_check ()
 {
-        /* if this file already exists, it cannot be removed, ever
-         */
-
         if (Glib::file_test (_path, Glib::FILE_TEST_EXISTS)) {
-               cerr << " ... " << _path << " already  exists, marking immutable\n";
+               prevent_deletion ();
+       }
+}
 
-                if (!(_flags & Destructive)) {
-                        mark_immutable ();
-                } else {
-                        _flags = Flag (_flags & ~(Removable|RemovableIfEmpty|RemoveAtDestroy));
-                }
-        }
+void
+FileSource::prevent_deletion ()
+{
+       if (!(_flags & Destructive)) {
+               mark_immutable ();
+       } else {
+               _flags = Flag (_flags & ~(Removable|RemovableIfEmpty|RemoveAtDestroy));
+       }
 }
 
 bool