diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/location.h | 14 | ||||
-rw-r--r-- | libs/ardour/location.cc | 13 |
2 files changed, 17 insertions, 10 deletions
diff --git a/libs/ardour/ardour/location.h b/libs/ardour/ardour/location.h index f23d2e382a..7d3b0ac1a9 100644 --- a/libs/ardour/ardour/location.h +++ b/libs/ardour/ardour/location.h @@ -163,15 +163,23 @@ class Locations : public PBD::StatefulDestructible int set_current (Location *, bool want_lock = true); Location *current () const { return current_location; } - Location *first_location_before (nframes64_t, bool include_special_ranges = false); - Location *first_location_after (nframes64_t, bool include_special_ranges = false); + Location* first_location_before (nframes64_t, bool include_special_ranges = false); + Location* first_location_after (nframes64_t, bool include_special_ranges = false); void marks_either_side (nframes64_t const, nframes64_t &, nframes64_t &) const; void find_all_between (nframes64_t start, nframes64_t, LocationList&, Location::Flags); + enum Change { + ADDITION, ///< a location was added, but nothing else changed + REMOVAL, ///< a location was removed, but nothing else changed + OTHER ///< something more complicated happened + }; + PBD::Signal1<void,Location*> current_changed; - PBD::Signal0<void> changed; + /** something changed about the location list; the parameter gives some idea as to what */ + PBD::Signal1<void,Change> changed; + /** a location has been added to the end of the list */ PBD::Signal1<void,Location*> added; PBD::Signal1<void,Location*> removed; PBD::Signal1<void,const PBD::PropertyChange&> StateChanged; diff --git a/libs/ardour/location.cc b/libs/ardour/location.cc index 7202e1ef03..93b6b5c5fa 100644 --- a/libs/ardour/location.cc +++ b/libs/ardour/location.cc @@ -492,7 +492,7 @@ Locations::clear () current_location = 0; } - changed (); /* EMIT SIGNAL */ + changed (OTHER); /* EMIT SIGNAL */ current_changed (0); /* EMIT SIGNAL */ } @@ -515,7 +515,7 @@ Locations::clear_markers () } } - changed (); /* EMIT SIGNAL */ + changed (OTHER); /* EMIT SIGNAL */ } void @@ -541,7 +541,7 @@ Locations::clear_ranges () current_location = 0; } - changed (); /* EMIT SIGNAL */ + changed (OTHER); /* EMIT SIGNAL */ current_changed (0); /* EMIT SIGNAL */ } @@ -568,7 +568,6 @@ Locations::add (Location *loc, bool make_current) void Locations::remove (Location *loc) - { bool was_removed = false; bool was_current = false; @@ -602,14 +601,14 @@ Locations::remove (Location *loc) current_changed (0); /* EMIT SIGNAL */ } - changed (); /* EMIT_SIGNAL */ + changed (REMOVAL); /* EMIT_SIGNAL */ } } void Locations::location_changed (Location* /*loc*/) { - changed (); /* EMIT SIGNAL */ + changed (OTHER); /* EMIT SIGNAL */ } XMLNode& @@ -701,7 +700,7 @@ Locations::set_state (const XMLNode& node, int version) } } - changed (); /* EMIT SIGNAL */ + changed (OTHER); /* EMIT SIGNAL */ return 0; } |