From 9c596912958307b932eb4aa1f2951f075e47a763 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 25 May 2020 22:11:47 +1000 Subject: [PATCH] timeline: blocked more unnecessary graph invalidations --- app/widget/timelinewidget/undo/undo.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/app/widget/timelinewidget/undo/undo.cpp b/app/widget/timelinewidget/undo/undo.cpp index 6a2939466..3aee9318c 100644 --- a/app/widget/timelinewidget/undo/undo.cpp +++ b/app/widget/timelinewidget/undo/undo.cpp @@ -612,6 +612,9 @@ void TrackCleanGapsCommand::redo_internal() TrackOutput* track = track_list_->GetTrackAt(track_index_); + // We can block the IC signal because merging gaps won't actually change anything + track->BlockInvalidateCache(); + foreach (Block* b, track->Blocks()) { if (b->type() == Block::kGap) { if (on_gap) { @@ -623,8 +626,6 @@ void TrackCleanGapsCommand::redo_internal() merged_gaps_.append({on_gap, on_gap->length(), consecutive_gaps}); // Remove each gap and add to the length of the merged - // We can block the IC signal because merging gaps won't actually change anything - track->BlockInvalidateCache(); rational new_gap_length = on_gap->length(); foreach (GapBlock* gap, consecutive_gaps) { track->RippleRemoveBlock(gap); @@ -633,7 +634,6 @@ void TrackCleanGapsCommand::redo_internal() new_gap_length += gap->length(); } on_gap->set_length_and_media_out(new_gap_length); - track->UnblockInvalidateCache(); // Reset state on_gap = nullptr; @@ -651,12 +651,16 @@ void TrackCleanGapsCommand::redo_internal() static_cast(track->parent())->TakeNode(gap, &memory_manager_); } } + + track->UnblockInvalidateCache(); } void TrackCleanGapsCommand::undo_internal() { TrackOutput* track = track_list_->GetTrackAt(track_index_); + track->BlockInvalidateCache(); + // Restored removed end gaps foreach (GapBlock* gap, removed_end_gaps_) { static_cast(track->parent())->AddNode(gap); @@ -664,8 +668,6 @@ void TrackCleanGapsCommand::undo_internal() } removed_end_gaps_.clear(); - track->BlockInvalidateCache(); - for (int i=merged_gaps_.size()-1;i>=0;i--) { const MergedGap& merge_info = merged_gaps_.at(i);