fix leak in loadSDF in case of visuals with duplicate/identical names that have a material.

fix GUI performance issue on Mac OSX
fix issue introduced in previous commit (in btConvexHullComputer.cpp)
This commit is contained in:
erwincoumans
2017-08-11 17:14:52 -07:00
parent c67a70cb09
commit 457312f94f
3 changed files with 24 additions and 15 deletions

View File

@@ -569,6 +569,15 @@ bool UrdfParser::parseVisual(UrdfModel& model, UrdfVisual& visual, TiXmlElement*
matPtr->m_name = "mat"; matPtr->m_name = "mat";
if (name_char) if (name_char)
matPtr->m_name = name_char; matPtr->m_name = name_char;
UrdfMaterial** oldMatPtrPtr = model.m_materials[matPtr->m_name.c_str()];
if (oldMatPtrPtr)
{
UrdfMaterial* oldMatPtr = *oldMatPtrPtr;
model.m_materials.remove(matPtr->m_name.c_str());
if (oldMatPtr)
delete oldMatPtr;
}
model.m_materials.insert(matPtr->m_name.c_str(),matPtr); model.m_materials.insert(matPtr->m_name.c_str(),matPtr);
{ {
TiXmlElement *diffuse = mat->FirstChildElement("diffuse"); TiXmlElement *diffuse = mat->FirstChildElement("diffuse");

View File

@@ -53,13 +53,13 @@ public:
} }
} }
{ {
//unsigned long int ms = m_clock.getTimeMilliseconds(); unsigned long int ms = m_clock.getTimeMilliseconds();
//if (ms>2) if (ms>2)
{ {
// B3_PROFILE("m_clock.reset()"); B3_PROFILE("m_clock.reset()");
// m_clock.reset(); btUpdateInProcessExampleBrowserMainThread(m_data);
btUpdateInProcessExampleBrowserMainThread(m_data); m_clock.reset();
} }
} }
{ {

View File

@@ -1277,21 +1277,21 @@ void btConvexHullInternal::computeInternal(int start, int end, IntermediateHull&
return; return;
} }
} {
{ Vertex* v = originalVertices[start];
Vertex* v = originalVertices[start]; v->edges = NULL;
v->edges = NULL; v->next = v;
v->next = v; v->prev = v;
v->prev = v;
result.minXy = v; result.minXy = v;
result.maxXy = v; result.maxXy = v;
result.minYx = v; result.minYx = v;
result.maxYx = v; result.maxYx = v;
} }
return; return;
} }
case 1: case 1:
{ {
Vertex* v = originalVertices[start]; Vertex* v = originalVertices[start];