Fixes ticket:374
authorjcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>
Fri, 17 Apr 2009 17:24:17 +0000 (17:24 +0000)
committerjcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>
Fri, 17 Apr 2009 17:24:17 +0000 (17:24 +0000)
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@10865 221aa14e-8319-0410-a670-987f0aec2ac5

gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc
gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py

index 123d5c3cd9db7796fc3a9682a9a768cd36f22cce..c6cbd5b31d83a28ecf1ccf0653f8dc0504ee69e3 100644 (file)
@@ -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);
 }
 
index 9c31dc177325d19a636b13f79d6147174890baf5..a0b3810a661de289b383e1e4ea57e1dc32083fe0 100755 (executable)
@@ -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()