diff options
author | jcorgan | 2009-04-17 17:24:17 +0000 |
---|---|---|
committer | jcorgan | 2009-04-17 17:24:17 +0000 |
commit | f0282d9fdf1a5e18aa4f1717843befe4d147ffb7 (patch) | |
tree | 49b0527feb2c0320467e15cca8d2847dc0f524e8 /gnuradio-core | |
parent | 0c263e9d119ba94038679b172f4241f9d9dd7d59 (diff) | |
download | gnuradio-f0282d9fdf1a5e18aa4f1717843befe4d147ffb7.tar.gz gnuradio-f0282d9fdf1a5e18aa4f1717843befe4d147ffb7.tar.bz2 gnuradio-f0282d9fdf1a5e18aa4f1717843befe4d147ffb7.zip |
Fixes ticket:374
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@10865 221aa14e-8319-0410-a670-987f0aec2ac5
Diffstat (limited to 'gnuradio-core')
-rw-r--r-- | gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc | 8 | ||||
-rwxr-xr-x | gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py | 12 |
2 files changed, 20 insertions, 0 deletions
diff --git a/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc b/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc index 123d5c3cd..c6cbd5b31 100644 --- a/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc +++ b/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc @@ -76,6 +76,14 @@ gr_hier_block2_detail::connect(gr_basic_block_sptr block) throw std::invalid_argument(msg.str()); } + gr_hier_block2_sptr hblock(cast_to_hier_block2_sptr(block)); + + if (hblock && hblock.get() != d_owner) { + if (GR_HIER_BLOCK2_DETAIL_DEBUG) + std::cout << "connect: block is hierarchical, setting parent to " << this << std::endl; + hblock->d_detail->d_parent_detail = this; + } + d_blocks.push_back(block); } diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py b/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py index 9c31dc177..a0b3810a6 100755 --- a/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py +++ b/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py @@ -251,6 +251,18 @@ class test_hier_block2(gr_unittest.TestCase): self.assertRaises(RuntimeError, lambda: tb.run()) + def test_028_singleton_reconfigure(self): + tb = gr.top_block() + hb = gr.hier_block2("block", + gr.io_signature(0, 0, 0), gr.io_signature(0, 0, 0)) + src = gr.vector_source_b([1, ]) + dst = gr.vector_sink_b() + hb.connect(src, dst) + tb.connect(hb) # Singleton connect + tb.lock() + tb.disconnect_all() + tb.connect(src, dst) + tb.unlock() if __name__ == "__main__": gr_unittest.main() |