Hi,

On Mon, 2010-06-28 at 17:50 -0500, Carsten Neumann wrote: 
>       Hello Gerrit,
> 
> Gerrit Voß wrote:
> > after making two minor changes, remove the artificial node level
> > the osg loader introduces and to handle the name attachment correctly
> > while writing, I get the attached diff when reading and writing the
> > file (w1.osg) with testWindowGLUT (r2449). I will push the changes to
> > the latest version. Assuming still have the problems could you run your
> > test program with OSG_LOG_LEVEL=10 and sent me the output. And maybe
> > try it with testWindowGLUT (the writing is disabled by default with 
> > #if 0).
> > 
> > That the beacons have a node but no core is a bug inside the writer
> > which can access and object even if there is only a weak reference
> > left. While running the system itself sees no beacon.
> 
> urgh, this is a nasty side effect of the pointer fields' magic to make 
> them 'usable' as SF/MFFieldContainerPtr independent of what concrete 
> container type they point to or what ref counting is used. Wish I had 
> noticed that gap earlier... :(
>
> The question is how to plug that hole without making it 
> impossible/inconvenient to write generic code that just follows pointers 
> to other containers? One (rather big) solution would be to remove the 
> Pointer{S|M}FieldBase types and operator-> from FieldHandle and instead 
> expand FieldHandle's interface a bit so that it allows accessing pointer 
> fields through virtual functions that take/return FieldContainer*.

hmm, I was thinking about that, but I don't like it that much.

> Hm, would be nice if there was a way to avoid all that, but especially 
> for MFields it seems difficult, because PointerMFieldBase hands out 
> iterators which know nothing about ref counting (they are plain 
> std::vector<FieldContainer*>::iterator, not the ref counting aware 
> wrappers used by the actual PointerMField<> template). Any ideas?

I planned to add custom iterators, all other pointer fields have them
anyway. I fixed the SField part already so that should cover most of
the use cases (I actually don't remember having a weak mfield
somewhere). I just have to find the time ;)

kind regards
  gerrit







------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Opensg-users mailing list
Opensg-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to