Hack around one case where satisfying all constraints in a
relayer is impossible. git-svn-id: svn://localhost/ardour2/branches/3.0@11096 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
78c4324026
commit
86cb9348e8
@ -2410,6 +2410,11 @@ Playlist::compute_temporary_layers (RegionList const & relayer_regions)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEBUG_TRACE (DEBUG::Layering, "Overlaps to check:\n");
|
||||||
|
for (RegionList::iterator j = overlaps_to_check.begin(); j != overlaps_to_check.end(); ++j) {
|
||||||
|
DEBUG_TRACE (DEBUG::Layering, string_compose ("\t%1\n", (*j)->name()));
|
||||||
|
}
|
||||||
|
|
||||||
/* Put *i on our overlaps_to_check_list */
|
/* Put *i on our overlaps_to_check_list */
|
||||||
overlaps_to_check.push_back (*i);
|
overlaps_to_check.push_back (*i);
|
||||||
|
|
||||||
@ -2446,6 +2451,14 @@ Playlist::compute_temporary_layers (RegionList const & relayer_regions)
|
|||||||
next_layer = temporary_layers.get (*j);
|
next_layer = temporary_layers.get (*j);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (next_layer < previous_layer) {
|
||||||
|
/* If this happens, it means that it's impossible to put *i between overlaps_to_check
|
||||||
|
in a way that satisfies the current layering rule. So we'll punt and put *i
|
||||||
|
above previous_layer.
|
||||||
|
*/
|
||||||
|
next_layer = DBL_MAX;
|
||||||
|
}
|
||||||
|
|
||||||
/* Now we know where *i and overlaps_to_preserve should go: between previous_layer and
|
/* Now we know where *i and overlaps_to_preserve should go: between previous_layer and
|
||||||
next_layer.
|
next_layer.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user