PBD::Signal1<void,boost::weak_ptr<Region> > RegionAdded;
PBD::Signal1<void,boost::weak_ptr<Region> > RegionRemoved;
PBD::Signal0<void> NameChanged;
- PBD::Signal0<void> LengthChanged;
PBD::Signal0<void> LayeringChanged;
/** Emitted when regions have moved (not when regions have only been trimmed) */
RegionList pending_bounds;
bool pending_contents_change;
bool pending_layering;
- bool pending_length;
/** Movements of time ranges caused by region moves; note that
* region trims are not included in this list; it is used to
g_atomic_int_set (&block_notifications, 0);
g_atomic_int_set (&ignore_state_changes, 0);
pending_contents_change = false;
- pending_length = false;
pending_layering = false;
first_set_state = true;
_refcnt = 0;
if (holding_state ()) {
pending_removes.insert (r);
pending_contents_change = true;
- pending_length = true;
} else {
/* this might not be true, but we have to act
as though it could be.
*/
- pending_length = false;
- LengthChanged (); /* EMIT SIGNAL */
pending_contents_change = false;
RegionRemoved (boost::weak_ptr<Region> (r)); /* EMIT SIGNAL */
ContentsChanged (); /* EMIT SIGNAL */
if (holding_state()) {
pending_adds.insert (r);
pending_contents_change = true;
- pending_length = true;
} else {
r->clear_changes ();
- pending_length = false;
- LengthChanged (); /* EMIT SIGNAL */
pending_contents_change = false;
RegionAdded (boost::weak_ptr<Region> (r)); /* EMIT SIGNAL */
ContentsChanged (); /* EMIT SIGNAL */
void
Playlist::notify_length_changed ()
{
- if (holding_state ()) {
- pending_length = true;
- } else {
- pending_length = false;
- LengthChanged(); /* EMIT SIGNAL */
+ if (!holding_state ()) {
pending_contents_change = false;
ContentsChanged (); /* EMIT SIGNAL */
}
set<boost::shared_ptr<Region> > dependent_checks_needed;
set<boost::shared_ptr<Region> >::iterator s;
uint32_t regions_changed = false;
- bool check_length = false;
- framecnt_t old_length = 0;
if (in_flush) {
return;
if (!pending_bounds.empty() || !pending_removes.empty() || !pending_adds.empty()) {
regions_changed = true;
- if (!pending_length) {
- old_length = _get_extent ().second;
- check_length = true;
- }
}
/* we have no idea what order the regions ended up in pending
dependent_checks_needed.insert (*s);
}
- if (check_length) {
- if (old_length != _get_extent().second) {
- pending_length = true;
- // cerr << _name << " length has changed\n";
- }
- }
-
- if (pending_length || (freeze_length != _get_extent().second)) {
- pending_length = false;
- // cerr << _name << " sends LengthChanged\n";
- LengthChanged(); /* EMIT SIGNAL */
- }
-
if (regions_changed || pending_contents_change) {
if (!in_set_state) {
relayer ();
pending_range_moves.clear ();
pending_region_extensions.clear ();
pending_contents_change = false;
- pending_length = false;
}
/*************************************************************
}
pending_removes.clear ();
- pending_length = false;
- LengthChanged ();
pending_contents_change = false;
ContentsChanged ();
}