From a478b11fd002dc785a76e39cd87e8d376afc221b Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sat, 30 Nov 2019 23:24:01 +1100 Subject: [PATCH] removed "previous_input" param from block It was becoming inevitable to get rid of this, it was continuously an exception that had to be made to the DAG concept seeing as blocks are never really "dependents" on each other, i.e. the images they produce have nothing to do with other blocks. The only exception is a transition which will also be easier to accomplish with this slightly different design. --- app/node/block/block.cpp | 46 +++++---------------------------- app/node/block/block.h | 11 +------- app/node/output/track/track.cpp | 6 ++--- 3 files changed, 10 insertions(+), 53 deletions(-) diff --git a/app/node/block/block.cpp b/app/node/block/block.cpp index 5f02dd668..5686a099c 100644 --- a/app/node/block/block.cpp +++ b/app/node/block/block.cpp @@ -23,13 +23,9 @@ #include Block::Block() : + previous_(nullptr), next_(nullptr) { - previous_input_ = new NodeInput("prev_in"); - previous_input_->set_data_type(NodeParam::kBlock); - previous_input_->set_dependent(false); - AddParameter(previous_input_); - block_output_ = new NodeOutput("this_out"); AddParameter(block_output_); @@ -84,7 +80,7 @@ void Block::set_length_and_media_in(const rational &length) Block *Block::previous() { - return ValueToPtr(previous_input_->get_realtime_value_of_connected_output()); + return previous_; } Block *Block::next() @@ -92,11 +88,6 @@ Block *Block::next() return next_; } -NodeInput *Block::previous_input() -{ - return previous_input_; -} - QVariant Block::Value(NodeOutput *output) { if (output == block_output_) { @@ -107,31 +98,6 @@ QVariant Block::Value(NodeOutput *output) return 0; } -void Block::EdgeAddedSlot(NodeEdgePtr edge) -{ - if (edge->input() == previous_input()) { - // FIXME: No protection for if this connection is not a block - static_cast(edge->output()->parent())->next_ = this; - - // The blocks surrounding this one have changed, we need to Refresh() - Refresh(); - - // Entire track will have shifted, so the whole cache needs to be re-validated - SendInvalidateCache(0, RATIONAL_MAX); - } -} - -void Block::EdgeRemovedSlot(NodeEdgePtr edge) -{ - if (edge->input() == previous_input()) { - // FIXME: No protection for if this connection is not a block - static_cast(edge->output()->parent())->next_ = nullptr; - - // The blocks surrounding this one have changed, we need to Refresh() - Refresh(); - } -} - void Block::Refresh() { // Set in point to the out point of the previous Node @@ -161,14 +127,14 @@ NodeOutput *Block::block_output() return block_output_; } -void Block::ConnectBlocks(Block *previous, Block *next) +void Block::ConnectBlocks(Block *, Block *) { - NodeParam::ConnectEdge(previous->block_output(), next->previous_input()); + //NodeParam::ConnectEdge(previous->block_output(), next->previous_input()); } -void Block::DisconnectBlocks(Block *previous, Block *next) +void Block::DisconnectBlocks(Block *, Block *) { - NodeParam::DisconnectEdge(previous->block_output(), next->previous_input()); + //NodeParam::DisconnectEdge(previous->block_output(), next->previous_input()); } const rational &Block::media_in() diff --git a/app/node/block/block.h b/app/node/block/block.h index dd94bd32e..2e012d3fa 100644 --- a/app/node/block/block.h +++ b/app/node/block/block.h @@ -59,8 +59,6 @@ public: Block* previous(); Block* next(); - NodeInput* previous_input(); - NodeOutput* buffer_output(); NodeOutput* block_output(); @@ -116,29 +114,22 @@ protected: static void CopyParameters(Block* source, Block* dest); private: - NodeInput* previous_input_; NodeOutput* block_output_; - NodeOutput* buffer_output_; rational in_point_; rational out_point_; rational length_; - rational media_in_; + Block* previous_; Block* next_; QString block_name_; QVector linked_clips_; -private slots: - void EdgeAddedSlot(NodeEdgePtr edge); - - void EdgeRemovedSlot(NodeEdgePtr edge); - }; #endif // BLOCK_H diff --git a/app/node/output/track/track.cpp b/app/node/output/track/track.cpp index 43f3aabae..398678cd6 100644 --- a/app/node/output/track/track.cpp +++ b/app/node/output/track/track.cpp @@ -181,12 +181,12 @@ const QVector &TrackOutput::Blocks() void TrackOutput::InvalidateCache(const rational &start_range, const rational &end_range, NodeInput *from) { - // We intercept IC signals from Blocks since we may be performing several options and they may over-signal + /*// We intercept IC signals from Blocks since we may be performing several options and they may over-signal if (from == previous_input() && block_invalidate_cache_stack_ == 0) { Node::InvalidateCache(qMax(start_range, rational(0)), qMin(end_range, in()), from); } else { - Node::InvalidateCache(start_range, end_range, from); - } + }*/ + Node::InvalidateCache(start_range, end_range, from); } QVariant TrackOutput::Value(NodeOutput *output)