From: jfa Date: Thu, 9 Apr 2009 09:08:39 +0000 (+0000) Subject: Bug 0020229: Perf of MakeSphere and RemoveObject. Allow to re-use empty label, follow... X-Git-Tag: V4_1_5rc1~6 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=136270a5cf0d57036b25ae18c301bca14983dc9d;p=modules%2Fgeom.git Bug 0020229: Perf of MakeSphere and RemoveObject. Allow to re-use empty label, following the _lastCleared one. --- diff --git a/src/GEOM/GEOM_Engine.cxx b/src/GEOM/GEOM_Engine.cxx index 101c994ea..3b700a01d 100644 --- a/src/GEOM/GEOM_Engine.cxx +++ b/src/GEOM/GEOM_Engine.cxx @@ -210,7 +210,13 @@ Handle(GEOM_Object) GEOM_Engine::AddObject(int theDocID, int theType) if (_lastCleared.Root() == aDoc->Main().Root()) { useExisting = true; aChild = _lastCleared; - _lastCleared.Nullify(); + // 0020229: if next label exists and is empty, try to reuse it + Standard_Integer aNextTag = aChild.Tag() + 1; + TDF_Label aNextL = aDoc->Main().FindChild(aNextTag, Standard_False); + if (!aNextL.IsNull() && !aNextL.HasAttribute()) + _lastCleared = aNextL; + else + _lastCleared.Nullify(); } } if (!useExisting) { @@ -250,7 +256,13 @@ Handle(GEOM_Object) GEOM_Engine::AddSubShape(Handle(GEOM_Object) theMainShape, if (_lastCleared.Root() == aDoc->Main().Root()) { useExisting = true; aChild = _lastCleared; - _lastCleared.Nullify(); + // 0020229: if next label exists and is empty, try to reuse it + Standard_Integer aNextTag = aChild.Tag() + 1; + TDF_Label aNextL = aDoc->Main().FindChild(aNextTag, Standard_False); + if (!aNextL.IsNull() && !aNextL.HasAttribute()) + _lastCleared = aNextL; + else + _lastCleared.Nullify(); } } if (!useExisting) {