diff --git a/app/node/output/track/track.cpp b/app/node/output/track/track.cpp index 723d97003..28f12558e 100644 --- a/app/node/output/track/track.cpp +++ b/app/node/output/track/track.cpp @@ -300,7 +300,7 @@ void TrackOutput::PrependBlock(Block *block) EndOperation(); // Everything has shifted at this point - InvalidateCache(TimeRange(0, track_length()), block_input_, block_input_); + Node::InvalidateCache(TimeRange(0, track_length()), block_input_, block_input_); } void TrackOutput::InsertBlockAtIndex(Block *block, int index) @@ -314,7 +314,7 @@ void TrackOutput::InsertBlockAtIndex(Block *block, int index) EndOperation(); - InvalidateCache(TimeRange(block->in(), track_length()), block_input_, block_input_); + Node::InvalidateCache(TimeRange(block->in(), track_length()), block_input_, block_input_); } void TrackOutput::AppendBlock(Block *block) @@ -327,7 +327,7 @@ void TrackOutput::AppendBlock(Block *block) EndOperation(); // Invalidate area that block was added to - InvalidateCache(TimeRange(block->in(), track_length()), block_input_, block_input_); + Node::InvalidateCache(TimeRange(block->in(), track_length()), block_input_, block_input_); } void TrackOutput::RippleRemoveBlock(Block *block) @@ -335,12 +335,13 @@ void TrackOutput::RippleRemoveBlock(Block *block) BeginOperation(); rational remove_in = block->in(); + rational remove_out = block->out(); block_input_->RemoveAt(GetInputIndexFromCacheIndex(block)); EndOperation(); - InvalidateCache(TimeRange(remove_in, track_length()), block_input_, block_input_); + Node::InvalidateCache(TimeRange(remove_in, qMax(track_length(), remove_out)), block_input_, block_input_); } void TrackOutput::ReplaceBlock(Block *old, Block *replace) @@ -358,9 +359,9 @@ void TrackOutput::ReplaceBlock(Block *old, Block *replace) EndOperation(); if (old->length() == replace->length()) { - InvalidateCache(TimeRange(replace->in(), replace->out()), block_input_, block_input_); + Node::InvalidateCache(TimeRange(replace->in(), replace->out()), block_input_, block_input_); } else { - InvalidateCache(TimeRange(replace->in(), RATIONAL_MAX), block_input_, block_input_); + Node::InvalidateCache(TimeRange(replace->in(), RATIONAL_MAX), block_input_, block_input_); } } @@ -434,7 +435,7 @@ void TrackOutput::Hash(QCryptographicHash &hash, const rational &time) const void TrackOutput::SetMuted(bool e) { muted_input_->set_standard_value(e); - InvalidateCache(TimeRange(0, track_length()), block_input_, block_input_); + Node::InvalidateCache(TimeRange(0, track_length()), block_input_, block_input_); } void TrackOutput::SetLocked(bool e) @@ -489,9 +490,9 @@ void TrackOutput::SetLengthInternal(const rational &r, bool invalidate) emit TrackLengthChanged(); if (invalidate) { - InvalidateCache(invalidate_range, - block_input_, - block_input_); + Node::InvalidateCache(invalidate_range, + block_input_, + block_input_); } } } @@ -594,7 +595,7 @@ void TrackOutput::BlockLengthChanged() TimeRange invalidate_region(qMin(old_out, new_out), track_length()); - InvalidateCache(invalidate_region, block_input_, block_input_); + Node::InvalidateCache(invalidate_region, block_input_, block_input_); } void TrackOutput::MutedInputValueChanged() diff --git a/app/widget/timelinewidget/undo/undo.cpp b/app/widget/timelinewidget/undo/undo.cpp index 6de8941d2..349eb0390 100644 --- a/app/widget/timelinewidget/undo/undo.cpp +++ b/app/widget/timelinewidget/undo/undo.cpp @@ -284,9 +284,9 @@ void TrackRippleRemoveAreaCommand::redo_internal() track_->EndOperation(); - track_->InvalidateCache(TimeRange(in_, insert_ ? out_ : RATIONAL_MAX), - track_->block_input(), - track_->block_input()); + track_->Node::InvalidateCache(TimeRange(in_, insert_ ? out_ : RATIONAL_MAX), + track_->block_input(), + track_->block_input()); } void TrackRippleRemoveAreaCommand::undo_internal() @@ -342,7 +342,8 @@ void TrackRippleRemoveAreaCommand::undo_internal() track_->EndOperation(); - track_->InvalidateCache(TimeRange(in_, insert_ ? out_ : RATIONAL_MAX), track_->block_input(), track_->block_input()); + track_->Node::InvalidateCache(TimeRange(in_, insert_ ? out_ : RATIONAL_MAX), + track_->block_input(), track_->block_input()); } TrackPlaceBlockCommand::TrackPlaceBlockCommand(TrackList *timeline, int track, Block *block, rational in, QUndoCommand *parent) : @@ -1092,7 +1093,7 @@ void TrackReplaceBlockWithGapCommand::redo_internal() track_->EndOperation(); - track_->InvalidateCache(invalidate_range, track_->block_input(), track_->block_input()); + track_->Node::InvalidateCache(invalidate_range, track_->block_input(), track_->block_input()); } void TrackReplaceBlockWithGapCommand::undo_internal() @@ -1137,20 +1138,20 @@ void TrackReplaceBlockWithGapCommand::undo_internal() // required no gap extension/replacement // However, we may have removed an unnecessary gap that preceded it - if (existing_merged_gap_) { - static_cast(track_->parent())->AddNode(existing_merged_gap_); - track_->AppendBlock(existing_merged_gap_); - existing_merged_gap_ = nullptr; - } + if (existing_merged_gap_) { + static_cast(track_->parent())->AddNode(existing_merged_gap_); + track_->AppendBlock(existing_merged_gap_); + existing_merged_gap_ = nullptr; + } - // Restore block - track_->AppendBlock(block_); + // Restore block + track_->AppendBlock(block_); } track_->EndOperation(); - track_->InvalidateCache(TimeRange(block_->in(), block_->out()), track_->block_input(), track_->block_input()); + track_->Node::InvalidateCache(TimeRange(block_->in(), block_->out()), track_->block_input(), track_->block_input()); } TrackSlideCommand::TrackSlideCommand(TrackOutput* track, const QList& moving_blocks, Block *in_adjacent, Block *out_adjacent, const rational& movement, QUndoCommand* parent) :