summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/lib/block_detail.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gnuradio-runtime/lib/block_detail.cc')
-rw-r--r--gnuradio-runtime/lib/block_detail.cc16
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;