diff options
Diffstat (limited to 'gnuradio-runtime/lib/block_detail.cc')
-rw-r--r-- | gnuradio-runtime/lib/block_detail.cc | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/gnuradio-runtime/lib/block_detail.cc b/gnuradio-runtime/lib/block_detail.cc index a3ab4b3f7b..293412f513 100644 --- a/gnuradio-runtime/lib/block_detail.cc +++ b/gnuradio-runtime/lib/block_detail.cc @@ -171,14 +171,14 @@ namespace gr { } void - block_detail::remove_item_tag(unsigned int which_input, const tag_t &tag) + block_detail::remove_item_tag(unsigned int which_input, const tag_t &tag, long id) { if(!pmt::is_symbol(tag.key)) { throw pmt::wrong_type("block_detail::add_item_tag key", tag.key); } else { // Add tag to gr_buffer's deque tags - d_input[which_input]->buffer()->remove_item_tag(tag); + d_input[which_input]->buffer()->remove_item_tag(tag, id); } } @@ -186,10 +186,11 @@ namespace gr { block_detail::get_tags_in_range(std::vector<tag_t> &v, unsigned int which_input, uint64_t abs_start, - uint64_t abs_end) + uint64_t abs_end, + long id) { // get from gr_buffer_reader's deque of tags - d_input[which_input]->get_tags_in_range(v, abs_start, abs_end); + d_input[which_input]->get_tags_in_range(v, abs_start, abs_end, id); } void @@ -197,14 +198,15 @@ namespace gr { unsigned int which_input, uint64_t abs_start, uint64_t abs_end, - const pmt::pmt_t &key) + const pmt::pmt_t &key, + long id) { std::vector<tag_t> found_items; v.resize(0); // get from gr_buffer_reader's deque of tags - d_input[which_input]->get_tags_in_range(found_items, abs_start, abs_end); + d_input[which_input]->get_tags_in_range(found_items, abs_start, abs_end, id); // Filter further by key name pmt::pmt_t itemkey; @@ -261,6 +263,7 @@ namespace gr { d_avg_noutput_items = noutput_items; d_var_noutput_items = 0; for(size_t i=0; i < d_input.size(); i++) { + gr::thread::scoped_lock guard(*d_output[i]->mutex()); float pfull = static_cast<float>(d_input[i]->items_available()) / static_cast<float>(d_input[i]->max_possible_items_available()); d_ins_input_buffers_full[i] = pfull; @@ -268,6 +271,7 @@ namespace gr { d_var_input_buffers_full[i] = 0; } for(size_t i=0; i < d_output.size(); i++) { + gr::thread::scoped_lock guard(*d_output[i]->mutex()); float pfull = 1.0f - static_cast<float>(d_output[i]->space_available()) / static_cast<float>(d_output[i]->bufsize()); d_ins_output_buffers_full[i] = pfull; |