Index: trunk/src/plugins/rt_topo/crbs_cdt.c =================================================================== --- trunk/src/plugins/rt_topo/crbs_cdt.c (revision 1420) +++ trunk/src/plugins/rt_topo/crbs_cdt.c (revision 1421) @@ -34,7 +34,7 @@ #warning TODO: use libualloc for ctn static int add_c_edge_cnt; -#define ADD_C_EDGE(p1, p2) \ +#define ADD_C_EDGE(p1, p2, immut) \ do { \ e = cdt_insert_constrained_edge(cdt, p1, p2); \ e->data = obj; \ @@ -49,6 +49,7 @@ ctn->old = 1; \ gl = grbs_line_realize(&crbs->grbs, tn, cp1->gpt, cp2->gpt); \ gl->user_data = ctn; \ + gl->immutable = immut; \ printf("GT 2net_new _c_edge_%d %f %f from P%ld to P%ld\n", add_c_edge_cnt++, cop, clr, cp1->gpt->uid, cp2->gpt->uid); \ } \ } while(0) \ @@ -60,6 +61,7 @@ double dx = p2->pos.x - p1->pos.x, dy = p2->pos.y - p1->pos.y; double len2 = dx*dx + dy*dy; cdt_t *cdt = &crbs->cdt; + int immut = 1; /* because constrained in the cdt, we do not ever want these to move in grbs */ if (len2 > maxlen2) { double d, len, x, y; @@ -81,15 +83,15 @@ p = crbs_make_point(crbs, x, y, cop, clr, NULL, net); if (p == NULL) continue; - ADD_C_EDGE(lp, p); + ADD_C_EDGE(lp, p, immut); lp = p; } /* end */ - ADD_C_EDGE(lp, p2); + ADD_C_EDGE(lp, p2, immut); } else - ADD_C_EDGE(p1, p2); + ADD_C_EDGE(p1, p2, immut); } void rt_topo_crbs_cdt_init(rtrnd_t *ctx, crbs_t *crbs)