Hi James, The swaps are in their to prevent the local object cache from being populated for the case when useObjectCache is false.
Reviewing the code now it's clear that the code isn't robust in the presence of multi-threading. Removing the local cache and the swaps wouldn't solve anything as it would simple may that the cache is used even when you've asked for it not to be used. As to solution it's not going to be straight forward, it'll require the cache to be managed differently, and most likely attached to the ReaderWriter::Options object. Robert. On Thu, Mar 19, 2009 at 2:38 PM, James Killian <[email protected]>wrote: > > Behaviours: > > Cache management is delegate to osgDB::Registry, but cache > > coherence (load a file with option then reuse it, deactivate the > > cache when load a specific file or don't cached the loaded file) > > is user's responsibility. > > I actually ran into a similar issue... let me explain here: > > Looking at the latest rev 9884 of Registry.cpp around line 1641 in the > readImplementation() we see > else > { > ObjectCache tmpObjectCache > swap > read > swap > return > } > > I would dare to submit to remove the swaps, but first ask if they were > removed what would be broken as this has been this way for a long time. > > Stress that breaks _objectCache: > As of now if I have 2 threads loading where some object types are cached > and > others are not (e.g. cached images but not nodes)... what happens is that > the line 1631 addEntry() adds to the tmpOjectCache, and therefore the real > _objectCache never gets populated. :( > > If someone can at least explain why the swaps were added I would be > eternally grateful. > > > > ----- Original Message ----- > From: "David Callu" <[email protected]> > To: "OpenSceneGraph Submissions" <[email protected] > > > Sent: Friday, February 27, 2009 8:47 AM > Subject: [osg-submissions] Text3D fix > > > > Hi Robert > > > > Problem: > > osgText::Text and osgText::Text3D use the same font file. > > The first really load the file and obtain an osgText::Font object, > > the second use the cache created during the first load of the > > font file, and so obtain an osgText::Font object instead of > > osgText::Font3D object. To obtain an osgText::Font3D object, > > osgText::Text3D call osgDB::readObjectFile(...) with an option > > to specify the plugin we want an osgText::Font3D instead of > > osgText::Font. > > > > Generalised Problem: > > In osgDB::Registry, loaded file cache is referenced by the name > > of this file, so if I load a file with some options, and the cache > > already contain object for this filename, I obtain an object > > potentially not loaded with my options. > > > > Behaviours: > > Cache management is delegate to osgDB::Registry, but cache > > coherence (load a file with option then reuse it, deactivate the > > cache when load a specific file or don't cached the loaded file) > > is user's responsibility. > > > > Text3D solution: > > Postfix the font file name by .text3d or something similar and then > have > > the freetype plugin return > > osgText::Font3D when it detects this. > > This operation is done by osgText::readFont3DFile() which unsure the > > filename have .text3d as extension. > > This is totaly transparent for user, and backward compatible. > > > > > > BTW, I fix the bug about the Normal of 3D text. Currently, the front and > > wall face have > > the same normal (0,0,1) in the Text3D object coordinate. Now the wall > face > > have its own > > normal array computed by the plugin. > > > > BTW 2, I implement > > - void Text3D::accept(osg::Drawable::ConstAttributeFunctor& af) const > > - void Text3D::accept(osg::PrimitiveFunctor& pf) const > > so now statistics are well reported. > > > > I join modified file in osgText3D.tgz and a the original test in > > testText3D.tgz > > > > Cheers > > David Callu > > > > > > ---------------------------------------------------------------------------- > ---- > > > > _______________________________________________ > > osg-submissions mailing list > > [email protected] > > > > http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org > > > > _______________________________________________ > osg-submissions mailing list > [email protected] > > http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org >
_______________________________________________ osg-submissions mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
