summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/block.cpp1
-rw-r--r--lib/gras_impl/block_actor.hpp4
2 files changed, 4 insertions, 1 deletions
diff --git a/lib/block.cpp b/lib/block.cpp
index 0015f10..75af20c 100644
--- a/lib/block.cpp
+++ b/lib/block.cpp
@@ -14,6 +14,7 @@ InputPortConfig::InputPortConfig(void)
maximum_items = 0;
inline_buffer = false;
preload_items = 0;
+ force_done = true;
}
OutputPortConfig::OutputPortConfig(void)
diff --git a/lib/gras_impl/block_actor.hpp b/lib/gras_impl/block_actor.hpp
index 5444bb0..e5dbaac 100644
--- a/lib/gras_impl/block_actor.hpp
+++ b/lib/gras_impl/block_actor.hpp
@@ -182,7 +182,9 @@ GRAS_FORCE_INLINE void BlockActor::update_input_avail(const size_t i)
GRAS_FORCE_INLINE bool BlockActor::is_input_done(const size_t i)
{
- return this->inputs_done[i] and not this->inputs_available[i];
+ const bool force_done = this->input_configs[i].force_done;
+ if GRAS_LIKELY(force_done) return this->inputs_done[i] and not this->inputs_available[i];
+ return this->inputs_done.all() and this->inputs_available.none();
}
GRAS_FORCE_INLINE bool BlockActor::is_work_allowed(void)