Revision: 73153
http://sourceforge.net/p/brlcad/code/73153
Author: starseeker
Date: 2019-05-23 13:23:09 +0000 (Thu, 23 May 2019)
Log Message:
-----------
Don't want to re-copy each time we refine, so stash once up front and delete on
destroy.
Modified Paths:
--------------
brlcad/trunk/src/libbrep/cdt.cpp
brlcad/trunk/src/libbrep/cdt.h
brlcad/trunk/src/libbrep/cdt_util.cpp
Modified: brlcad/trunk/src/libbrep/cdt.cpp
===================================================================
--- brlcad/trunk/src/libbrep/cdt.cpp 2019-05-23 13:17:58 UTC (rev 73152)
+++ brlcad/trunk/src/libbrep/cdt.cpp 2019-05-23 13:23:09 UTC (rev 73153)
@@ -355,7 +355,10 @@
ON_wString wstr;
ON_TextLog tl(wstr);
- ON_Brep* brep = new ON_Brep(*s_cdt->brep);
+ if (!s_cdt->brep) {
+ s_cdt->brep = new ON_Brep(*s_cdt->orig_brep);
+ }
+ ON_Brep* brep = s_cdt->brep;
brep->ShrinkSurfaces();
@@ -363,7 +366,6 @@
ON_wString wonstr;
ON_TextLog vout(wonstr);
if (!brep->IsValid(&vout)) {
- delete brep;
bu_log("brep is NOT valid, cannot produce watertight mesh\n");
//return -1;
}
@@ -372,7 +374,6 @@
for (int index = 0; index < brep->m_E.Count(); index++) {
ON_BrepEdge& edge = brep->m_E[index];
if (edge.TrimCount() != 2) {
- delete brep;
bu_log("Edge %d trim count: %d - can't (yet) do watertight
meshing\n", edge.m_edge_index, edge.TrimCount());
return -1;
}
@@ -754,7 +755,6 @@
cdt_done:
bu_free(valid_faces, "faces");
bu_free(valid_vertices, "vertices");
- delete brep;
if (invalid) {
return 1;
Modified: brlcad/trunk/src/libbrep/cdt.h
===================================================================
--- brlcad/trunk/src/libbrep/cdt.h 2019-05-23 13:17:58 UTC (rev 73152)
+++ brlcad/trunk/src/libbrep/cdt.h 2019-05-23 13:23:09 UTC (rev 73153)
@@ -86,6 +86,7 @@
struct ON_Brep_CDT_State {
int status;
+ ON_Brep *orig_brep;
ON_Brep *brep;
/* Tolerances */
Modified: brlcad/trunk/src/libbrep/cdt_util.cpp
===================================================================
--- brlcad/trunk/src/libbrep/cdt_util.cpp 2019-05-23 13:17:58 UTC (rev
73152)
+++ brlcad/trunk/src/libbrep/cdt_util.cpp 2019-05-23 13:23:09 UTC (rev
73153)
@@ -163,7 +163,8 @@
{
ON_Brep *brep = (ON_Brep *)bv;
struct ON_Brep_CDT_State *cdt = new struct ON_Brep_CDT_State;
- cdt->brep = brep;
+ cdt->orig_brep = brep;
+ cdt->brep = NULL;
cdt->w3dpnts = new std::vector<ON_3dPoint *>;
cdt->vert_pnts = new std::map<int, ON_3dPoint *>;
@@ -243,6 +244,10 @@
delete s_cdt->edge_pnts;
delete s_cdt->p2t_extra_faces;
+ if (s_cdt->brep) {
+ delete s_cdt->brep;
+ }
+
bu_free(s_cdt->brep_face_loop_points, "flp array");
bu_free(s_cdt->face_degen_pnts, "degen pnts");
// TODO - delete p2t data
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits