diff options
author | Josh Blum | 2012-09-15 13:25:55 -0400 |
---|---|---|
committer | Josh Blum | 2012-09-15 13:25:55 -0400 |
commit | 8ada8872c0b036e0c4faf778e2020ec0f8c4935e (patch) | |
tree | 9f3b198abdafe600061641873957a7a64f2bf28b /lib | |
parent | 052d953abfe9183b1ac5384d0ca494c1162b2cef (diff) | |
download | sandhi-8ada8872c0b036e0c4faf778e2020ec0f8c4935e.tar.gz sandhi-8ada8872c0b036e0c4faf778e2020ec0f8c4935e.tar.bz2 sandhi-8ada8872c0b036e0c4faf778e2020ec0f8c4935e.zip |
fix how we check IO done (must or, add was buggy)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/block_task.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/lib/block_task.cpp b/lib/block_task.cpp index 3b7e0e9..bfdc49d 100644 --- a/lib/block_task.cpp +++ b/lib/block_task.cpp @@ -109,11 +109,11 @@ void ElementImpl::handle_task(const tsbe::TaskInterface &task_iface) //-- initialize input buffers before work //------------------------------------------------------------------ size_t num_input_items = REALLY_BIG; //so big that it must std::min - size_t input_tokens_count = 0; + bool inputs_done = false; size_t output_inline_index = 0; for (size_t i = 0; i < num_inputs; i++) { - input_tokens_count += this->input_tokens[i].use_count(); + inputs_done = inputs_done or this->input_tokens[i].unique(); ASSERT(this->input_queues.ready(i)); bool potential_inline; @@ -144,16 +144,15 @@ void ElementImpl::handle_task(const tsbe::TaskInterface &task_iface) output_inline_index++; //done do this output port again } } - const bool inputs_done = num_inputs != 0 and input_tokens_count == num_inputs; //------------------------------------------------------------------ //-- initialize output buffers before work //------------------------------------------------------------------ size_t num_output_items = REALLY_BIG; //so big that it must std::min - size_t output_tokens_count = 0; + bool outputs_done = false; for (size_t i = 0; i < num_outputs; i++) { - output_tokens_count += this->output_tokens[i].use_count(); + outputs_done = outputs_done or this->output_tokens[i].unique(); ASSERT(this->output_queues.ready(i)); const SBuffer &buff = this->output_queues.front(i); @@ -167,7 +166,6 @@ void ElementImpl::handle_task(const tsbe::TaskInterface &task_iface) this->work_output_items[i] = mem; num_output_items = std::min(num_output_items, items); } - const bool outputs_done = num_outputs != 0 and output_tokens_count == num_outputs; //if we have outputs and at least one port has no downstream subscibers, mark done if (outputs_done) |