diff options
author | Tom Rondeau <tom@trondeau.com> | 2016-01-27 06:46:16 -0500 |
---|---|---|
committer | Tom Rondeau <tom@trondeau.com> | 2016-01-28 09:37:20 -0500 |
commit | cf95377ae162c6145e954d7c29c9814e6465f9fc (patch) | |
tree | f6bfba5dc5109937ab60da97c7663545b81c53ea /gnuradio-runtime/lib/flat_flowgraph.cc | |
parent | 4ce1d4991f41173d6e2e6469f6b61e205b7172a5 (diff) |
runtime: addresses issue #713.
When disconnecting and reconnecting, buffers can change and new
buffers will have their item counters zeroed out. Buffers held over
will keep their current item counters at some value >> 0. In the case
of the pfb_arb_resampler of issue #713, the rate update in the
scheduler was getting confusing numbers and setting the rates to
ridiculous values. Also, tags emitted from these new blocks will have
offsets meaningless to the other blocks that held on to their buffers.
This patch tells the scheduler to reset all buffer item counters (read
and write) to 0 when connections are merged and also makes sure all
tags are cleared from each block's input buffers. So upon a
lock/unlock and reset event, all buffers' counters and tag containers
are reset/cleared.
Diffstat (limited to 'gnuradio-runtime/lib/flat_flowgraph.cc')
-rw-r--r-- | gnuradio-runtime/lib/flat_flowgraph.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gnuradio-runtime/lib/flat_flowgraph.cc b/gnuradio-runtime/lib/flat_flowgraph.cc index 479943353b..1e9a682527 100644 --- a/gnuradio-runtime/lib/flat_flowgraph.cc +++ b/gnuradio-runtime/lib/flat_flowgraph.cc @@ -225,9 +225,10 @@ namespace gr { std::cout << "merge: allocating new detail for block " << (*p) << std::endl; block->set_detail(allocate_block_detail(block)); } - else + else { if(FLAT_FLOWGRAPH_DEBUG) std::cout << "merge: reusing original detail for block " << (*p) << std::endl; + } } // Calculate the old edges that will be going away, and clear the @@ -311,6 +312,9 @@ namespace gr { // Now deal with the fact that the block details might have // changed numbers of inputs and outputs vs. in the old // flowgraph. + + block->detail()->reset_nitem_counters(); + block->detail()->clear_tags(); } } |