summaryrefslogtreecommitdiff
path: root/gnuradio-core
diff options
context:
space:
mode:
authorjcorgan2009-04-17 17:24:17 +0000
committerjcorgan2009-04-17 17:24:17 +0000
commitf0282d9fdf1a5e18aa4f1717843befe4d147ffb7 (patch)
tree49b0527feb2c0320467e15cca8d2847dc0f524e8 /gnuradio-core
parent0c263e9d119ba94038679b172f4241f9d9dd7d59 (diff)
downloadgnuradio-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.cc8
-rwxr-xr-xgnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py12
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()