Only compute and render the visible portion of crossfades. Fixes #3498.

git-svn-id: svn://localhost/ardour2/branches/3.0@7901 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington 2010-10-17 23:35:05 +00:00
parent aef355525f
commit 156f5e4a42
10 changed files with 89 additions and 15 deletions

View file

@ -4691,7 +4691,19 @@ Editor::idle_visual_changer ()
VisualChange::Type p = pending_visual_change.pending;
pending_visual_change.pending = (VisualChange::Type) 0;
double last_time_origin = horizontal_position ();
double const last_time_origin = horizontal_position ();
if (p & VisualChange::TimeOrigin) {
/* This is a bit of a hack, but set_frames_per_unit
below will (if called) end up with the
CrossfadeViews looking at Editor::leftmost_frame,
and if we're changing origin and zoom in the same
operation it will be the wrong value unless we
update it here.
*/
leftmost_frame = pending_visual_change.time_origin;
}
if (p & VisualChange::ZoomLevel) {
set_frames_per_unit (pending_visual_change.frames_per_unit);