diff --git a/src/osgTerrain/GeometryTechnique.cpp b/src/osgTerrain/GeometryTechnique.cpp index 5495a1da5..82410bb13 100644 --- a/src/osgTerrain/GeometryTechnique.cpp +++ b/src/osgTerrain/GeometryTechnique.cpp @@ -35,6 +35,7 @@ GeometryTechnique::GeometryTechnique(): setFilterBias(0); setFilterWidth(0.1); setFilterMatrixAs(GAUSSIAN); + } GeometryTechnique::GeometryTechnique(const GeometryTechnique& gt,const osg::CopyOp& copyop): @@ -526,6 +527,8 @@ void GeometryTechnique::init() smoother.smooth(*buffer._geometry); } + if (buffer._transform.valid()) buffer._transform->setThreadSafeRefUnref(true); + _dirty = false; swapBuffers(); @@ -581,7 +584,11 @@ void GeometryTechnique::traverse(osg::NodeVisitor& nv) } - if (_dirty) init(); + if (_dirty) + { + osg::notify(osg::NOTICE)<<"******* Doing init ***********"<accept(nv); diff --git a/src/osgTerrain/TerrainNode.cpp b/src/osgTerrain/TerrainNode.cpp index 11f7d62ee..40f72acf6 100644 --- a/src/osgTerrain/TerrainNode.cpp +++ b/src/osgTerrain/TerrainNode.cpp @@ -21,6 +21,7 @@ TerrainNode::TerrainNode(): _treatBoundariesToValidDataAsDefaultValue(false) { setNumChildrenRequiringUpdateTraversal(1); + setThreadSafeRefUnref(true); } TerrainNode::TerrainNode(const TerrainNode& terrain,const osg::CopyOp& copyop): diff --git a/src/osgTerrain/TerrainTechnique.cpp b/src/osgTerrain/TerrainTechnique.cpp index ee90614b9..6fae30433 100644 --- a/src/osgTerrain/TerrainTechnique.cpp +++ b/src/osgTerrain/TerrainTechnique.cpp @@ -20,6 +20,7 @@ TerrainTechnique::TerrainTechnique(): _terrainNode(0), _dirty(true) { + setThreadSafeRefUnref(true); } TerrainTechnique::TerrainTechnique(const TerrainTechnique& TerrainTechnique,const osg::CopyOp& copyop):