I'm using osgSim::LineOfSight to answer line-of-sight questions for a larger 
application.  I'm seeding my osgSim::DatabaseCacheReadCallback with the 
appropriate files before I start, and then sending quite a few requests at the 
same time, processed through a thread pool.  If two threads end up in 
osgTerrain::TerrainTile::init() for the same tile at nearly the same time 
(which has happened more than once), the following happens.  The first thread 
in creates a GeometryTechnique and starts calling init() on it.  The second 
thread replaces that GeometryTechnique with a new one, and unref() deletes the 
first one.  The first thread, currently in init() on the now-deleted 
GeometryTechnique, proceeds to crash the app.

OK, on to my assorted questions:


1)      I've currently fixed this by adding a mutex to every TerrainTile, and 
locking it on init().  Is this the best solution?

2)      Is there a way to force the creation of TerrainTiles and GeometryTiles 
at startup?

3)      Is there a way to tell VirtualPlanetBuilder to create shorter trees?  
osgSim::LineOfSight only uses leaf nodes, so I want to minimize branch nodes as 
much as possible.

Thank you for any help you can provide.

    keith.stei...@plexsys.com<mailto:keith.stei...@plexsys.com>
    (who is still working to understand this code)

_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to