clear waveform cache when shape changes - fixes #6525
[ardour.git] / libs / ardour / location.cc
index e8909112250b0e391f9eecfe8c78c2fc814b2dde..c693e1f5d55034e3d84f421990a3206755fc7296 100644 (file)
@@ -645,8 +645,13 @@ Location::set_state (const XMLNode& node, int version)
                return -1;
        }
 
+       Flags old_flags (_flags);
        _flags = Flags (string_2_enum (prop->value(), _flags));
 
+       if (old_flags != _flags) {
+               FlagsChanged ();
+       }
+
        if ((prop = node.property ("locked")) != 0) {
                _locked = string_is_affirmative (prop->value());
        } else {
@@ -754,9 +759,13 @@ Location::unlock ()
 void
 Location::set_scene_change (boost::shared_ptr<SceneChange>  sc)
 {
-       _scene_change = sc;
-
-       scene_changed (); /* EMIT SIGNAL */
+        if (_scene_change != sc) {
+                _scene_change = sc;
+                _session.set_dirty ();
+                
+                scene_changed (); /* EMIT SIGNAL */
+                SceneChangeChanged (); /* EMIT SIGNAL */
+        }
 }
 
 /*---------------------------------------------------------------------- */
@@ -819,8 +828,12 @@ Locations::next_available_name(string& result,string base)
                        const string& temp ((*i)->name());
                         
                        if (!temp.find (base,0)) {
-
-                               if ((suffix = atoi (temp.substr(l,3))) != 0) {
+                               /* grab what comes after the "base" as if it was
+                                  a number, and assuming that works OK,
+                                  store it in "taken" so that we know it
+                                  has been used.
+                               */
+                                if ((suffix = atoi (temp.substr(l))) != 0) {
                                        taken.insert (make_pair (suffix,true));
                                }
                        }