diff options
Diffstat (limited to 'lib/block_task.cpp')
-rw-r--r-- | lib/block_task.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/block_task.cpp b/lib/block_task.cpp index 114c073..a9b88bd 100644 --- a/lib/block_task.cpp +++ b/lib/block_task.cpp @@ -73,6 +73,10 @@ void ElementImpl::mark_done(const tsbe::TaskInterface &task_iface) void ElementImpl::handle_task(const tsbe::TaskInterface &task_iface) { + #ifdef WORK_DEBUG + WorkDebugPrinter(this->name); + #endif + //------------------------------------------------------------------ //-- Decide if its possible to continue any processing: //-- Handle task may get called for incoming buffers, @@ -83,7 +87,6 @@ void ElementImpl::handle_task(const tsbe::TaskInterface &task_iface) this->input_queues.all_ready() and this->output_queues.all_ready() )) return; - if (WORK) std::cout << "=== calling work on " << name << " ===" << std::endl; const size_t num_inputs = task_iface.get_num_inputs(); const size_t num_outputs = task_iface.get_num_outputs(); @@ -124,6 +127,7 @@ void ElementImpl::handle_task(const tsbe::TaskInterface &task_iface) this->work_input_items[i] = mem; this->work_ninput_items[i] = items; num_input_items = std::min(num_input_items, items); + this->consume_called[i] = false; //inline dealings, how and when input buffers can be inlined into output buffers //TODO, check that the buff.get_affinity() matches this block or we dont inline @@ -223,7 +227,7 @@ void ElementImpl::handle_task(const tsbe::TaskInterface &task_iface) for (size_t i = 0; i < num_inputs; i++) { ASSERT(enable_fixed_rate or work_ret != Block::WORK_CALLED_PRODUCE); - const size_t items = (enable_fixed_rate)? (myulround((noutput_items/this->relative_rate))) : this->consume_items[i]; + const size_t items = (this->consume_called[i])? this->consume_items[i] : (myulround((noutput_items/this->relative_rate))); this->consume_items[i] = 0; this->items_consumed[i] += items; |