summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/lib/buffer.cc
diff options
context:
space:
mode:
authorJohnathan Corgan <johnathan@corganlabs.com>2013-05-12 09:46:25 +1000
committerJohnathan Corgan <johnathan@corganlabs.com>2013-05-12 09:46:25 +1000
commit792302fbdfa37cf680234353dbe973886c4b2898 (patch)
treee999bcf6dbfe12cf19ae49b1762cd71d724aa8ae /gnuradio-runtime/lib/buffer.cc
parenta7adf4689b58d91bd88d0dc948b017e1d42bff01 (diff)
parent9851f2377d099ffe72312375e7f761f66b664aa6 (diff)
Merge branch 'next' into runtime_pimpl
Catches up runtime_pimpl branch with changes on next since the initial branch start. Conflicts: gnuradio-runtime/include/gnuradio/constants.h gnuradio-runtime/include/gnuradio/tags.h gnuradio-runtime/include/gr_block_detail.h gnuradio-runtime/include/gr_buffer.h gnuradio-runtime/lib/CMakeLists.txt gnuradio-runtime/lib/gr_block.cc gnuradio-runtime/lib/gr_block_detail.cc gnuradio-runtime/lib/gr_block_executor.cc gnuradio-runtime/lib/gr_buffer.cc gnuradio-runtime/lib/gr_realtime.cc gr-blocks/lib/interleaved_short_to_complex_impl.cc
Diffstat (limited to 'gnuradio-runtime/lib/buffer.cc')
-rw-r--r--gnuradio-runtime/lib/buffer.cc17
1 files changed, 11 insertions, 6 deletions
diff --git a/gnuradio-runtime/lib/buffer.cc b/gnuradio-runtime/lib/buffer.cc
index 1bcfc2a6e4..cd6feefe34 100644
--- a/gnuradio-runtime/lib/buffer.cc
+++ b/gnuradio-runtime/lib/buffer.cc
@@ -228,13 +228,12 @@ namespace gr {
}
void
- buffer::remove_item_tag(const tag_t &tag)
+ buffer::remove_item_tag(const tag_t &tag, long id)
{
gr::thread::scoped_lock guard(*mutex());
for(std::deque<tag_t>::iterator it = d_item_tags.begin(); it != d_item_tags.end(); ++it) {
if(*it == tag) {
- d_item_tags.erase(it);
- break;
+ (*it).marked_deleted.push_back(id);
}
}
}
@@ -315,7 +314,8 @@ namespace gr {
void
buffer_reader::get_tags_in_range(std::vector<tag_t> &v,
uint64_t abs_start,
- uint64_t abs_end)
+ uint64_t abs_end,
+ long id)
{
gr::thread::scoped_lock guard(*mutex());
@@ -327,9 +327,14 @@ namespace gr {
item_time = (*itr).offset;
if((item_time >= abs_start) && (item_time < abs_end)) {
- v.push_back(*itr);
+ std::vector<long>::iterator id_itr;
+ id_itr = std::find(itr->marked_deleted.begin(), itr->marked_deleted.end(), id);
+ if (id_itr == itr->marked_deleted.end()) { // If id is not in the vector of marked blocks
+ v.push_back(*itr);
+ v.back().marked_deleted.clear();
+ }
}
-
+
itr++;
}
}