[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r8269 - gnuradio/branches/developers/jcorgan/merge-fix
From: |
jcorgan |
Subject: |
[Commit-gnuradio] r8269 - gnuradio/branches/developers/jcorgan/merge-fix/gnuradio-core/src/lib/runtime |
Date: |
Thu, 24 Apr 2008 14:20:20 -0600 (MDT) |
Author: jcorgan
Date: 2008-04-24 14:20:20 -0600 (Thu, 24 Apr 2008)
New Revision: 8269
Modified:
gnuradio/branches/developers/jcorgan/merge-fix/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
Log:
Fix reconfiguration bug by removing old buffer readers not reused in
reconfigured flowgraph.
Modified:
gnuradio/branches/developers/jcorgan/merge-fix/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/merge-fix/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
2008-04-24 17:44:37 UTC (rev 8268)
+++
gnuradio/branches/developers/jcorgan/merge-fix/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc
2008-04-24 20:20:20 UTC (rev 8269)
@@ -161,6 +161,33 @@
std::cout << "merge: reusing original detail for block " << (*p) <<
std::endl;
}
+ // Calculate the old edges that will be going away, and clear the buffer
readers
+ // on the RHS.
+ for (gr_edge_viter_t old_edge = old_ffg->d_edges.begin(); old_edge !=
old_ffg->d_edges.end(); old_edge++) {
+ if (GR_FLAT_FLOWGRAPH_DEBUG)
+ std::cout << "merge: testing old edge " << (*old_edge) << "...";
+
+ gr_edge_viter_t new_edge;
+ for (new_edge = d_edges.begin(); new_edge != d_edges.end(); new_edge++)
+ if (new_edge->src() == old_edge->src() &&
+ new_edge->dst() == old_edge->dst())
+ break;
+
+ if (new_edge == d_edges.end()) { // not found in new edge list
+ if (GR_FLAT_FLOWGRAPH_DEBUG)
+ std::cout << "not in new edge list" << std::endl;
+ // zero the buffer reader on RHS of old edge
+ gr_block_sptr block(make_gr_block_sptr(old_edge->dst().block()));
+ int port = old_edge->dst().port();
+ block->detail()->set_input(port, gr_buffer_reader_sptr());
+ }
+ else {
+ if (GR_FLAT_FLOWGRAPH_DEBUG)
+ std::cout << "found in new edge list" << std::endl;
+ }
+ }
+
+ // Now connect inputs to outputs, reusing old buffer readers if they exist
for (gr_basic_block_viter_t p = d_blocks.begin(); p != d_blocks.end(); p++) {
gr_block_sptr block = make_gr_block_sptr(*p);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r8269 - gnuradio/branches/developers/jcorgan/merge-fix/gnuradio-core/src/lib/runtime,
jcorgan <=