add signal to indicate absence of removal of scene change from Location
authorPaul Davis <paul@linuxaudiosystems.com>
Wed, 3 Dec 2014 18:31:49 +0000 (13:31 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 29 Jun 2015 18:18:13 +0000 (14:18 -0400)
libs/ardour/ardour/location.h
libs/ardour/location.cc

index 7a6832eb2d5721c1357574f604c36d3e7317ffc1..6b1f89dab38009abbdaf42c95dd7d20317fe257f 100644 (file)
@@ -144,8 +144,9 @@ class LIBARDOUR_API Location : public SessionHandleRef, public PBD::StatefulDest
        void set_position_lock_style (PositionLockStyle ps);
        void recompute_frames_from_bbt ();
 
-       static PBD::Signal0<void> scene_changed;
-
+       static PBD::Signal0<void> scene_changed; /* for use by backend scene change management, class level */
+        PBD::Signal0<void> SceneChangeChanged;   /* for use by objects interested in this object */
+        
   private:
        std::string        _name;
        framepos_t         _start;
index 73978ae15c0a354354651fdc13954fb6a87a8666..9d7e7c3e57811b1d997c3e9f2b913613b7d2c598 100644 (file)
@@ -759,9 +759,12 @@ 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;
+                
+                scene_changed (); /* EMIT SIGNAL */
+                SceneChangeChanged (); /* EMIT SIGNAL */
+        }
 }
 
 /*---------------------------------------------------------------------- */