From c3e394ba3e3ad10634850e628c84f30216201086 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Mon, 4 Aug 2008 12:48:31 +0000 Subject: [PATCH] Merged multi-threaded crash fix to PrecipitationEffect, using "svn merge -r 8715:8716 http://www.openscenegraph.org/svn/osg/OpenSceneGraph/trunk ." --- src/osgParticle/PrecipitationEffect.cpp | 38 ++++++++++++------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/osgParticle/PrecipitationEffect.cpp b/src/osgParticle/PrecipitationEffect.cpp index 7fa2d0edc..38e3f0f42 100644 --- a/src/osgParticle/PrecipitationEffect.cpp +++ b/src/osgParticle/PrecipitationEffect.cpp @@ -244,27 +244,27 @@ void PrecipitationEffect::traverse(osg::NodeVisitor& nv) { OpenThreads::ScopedLock lock(_mutex); precipitationDrawableSet = &(_viewDrawableMap[viewIndentifier]); - } - if (!precipitationDrawableSet->_quadPrecipitationDrawable) - { - precipitationDrawableSet->_quadPrecipitationDrawable = new PrecipitationDrawable; - precipitationDrawableSet->_quadPrecipitationDrawable->setRequiresPreviousMatrix(true); - precipitationDrawableSet->_quadPrecipitationDrawable->setGeometry(_quadGeometry.get()); - precipitationDrawableSet->_quadPrecipitationDrawable->setStateSet(_quadStateSet.get()); - precipitationDrawableSet->_quadPrecipitationDrawable->setDrawType(GL_QUADS); - - precipitationDrawableSet->_linePrecipitationDrawable = new PrecipitationDrawable; - precipitationDrawableSet->_linePrecipitationDrawable->setRequiresPreviousMatrix(true); - precipitationDrawableSet->_linePrecipitationDrawable->setGeometry(_lineGeometry.get()); - precipitationDrawableSet->_linePrecipitationDrawable->setStateSet(_lineStateSet.get()); - precipitationDrawableSet->_linePrecipitationDrawable->setDrawType(GL_LINES); + if (!precipitationDrawableSet->_quadPrecipitationDrawable) + { + precipitationDrawableSet->_quadPrecipitationDrawable = new PrecipitationDrawable; + precipitationDrawableSet->_quadPrecipitationDrawable->setRequiresPreviousMatrix(true); + precipitationDrawableSet->_quadPrecipitationDrawable->setGeometry(_quadGeometry.get()); + precipitationDrawableSet->_quadPrecipitationDrawable->setStateSet(_quadStateSet.get()); + precipitationDrawableSet->_quadPrecipitationDrawable->setDrawType(GL_QUADS); - precipitationDrawableSet->_pointPrecipitationDrawable = new PrecipitationDrawable; - precipitationDrawableSet->_pointPrecipitationDrawable->setRequiresPreviousMatrix(false); - precipitationDrawableSet->_pointPrecipitationDrawable->setGeometry(_pointGeometry.get()); - precipitationDrawableSet->_pointPrecipitationDrawable->setStateSet(_pointStateSet.get()); - precipitationDrawableSet->_pointPrecipitationDrawable->setDrawType(GL_POINTS); + precipitationDrawableSet->_linePrecipitationDrawable = new PrecipitationDrawable; + precipitationDrawableSet->_linePrecipitationDrawable->setRequiresPreviousMatrix(true); + precipitationDrawableSet->_linePrecipitationDrawable->setGeometry(_lineGeometry.get()); + precipitationDrawableSet->_linePrecipitationDrawable->setStateSet(_lineStateSet.get()); + precipitationDrawableSet->_linePrecipitationDrawable->setDrawType(GL_LINES); + + precipitationDrawableSet->_pointPrecipitationDrawable = new PrecipitationDrawable; + precipitationDrawableSet->_pointPrecipitationDrawable->setRequiresPreviousMatrix(false); + precipitationDrawableSet->_pointPrecipitationDrawable->setGeometry(_pointGeometry.get()); + precipitationDrawableSet->_pointPrecipitationDrawable->setStateSet(_pointStateSet.get()); + precipitationDrawableSet->_pointPrecipitationDrawable->setDrawType(GL_POINTS); + } } cull(*precipitationDrawableSet, cv);