Chris 'Xenon' Hanson wrote:
> I'm just wondering -- other than myself, are there any others (excluding
> Robert,
> obviously) who have delved into the code for PagedLOD and DatabasePager and
> actually done
> any coding in there?
I'll throw out an item that I think should be discussed from my recent work:
DatabasePager.cpp, capped_removeExpiredSubgraphs() has a line of coding that
says:
MarkPagedLODsVisitor markerVistor("NeedToRemove");
This visitor, when applied, goes through the _inactivePagedLODList, and
renames a
certain number of the contents to "NeedToRemove". Later, if you are NOT using
the
_deleteRemovedSubgraphsInDatabaseThread option, it removes PagedLOD nodes that
have this name.
This seems to me to be a dangerous usage of the node name. Granted, it's very
unlikely
that you'd have a node named "NeedToRemove", but it underscores that the
practice of
assigning special meaning to the node name isn't especially safe. I think it
would be wise
to clean the node names as the nodes are added to the _inactivePagedLODList so
that none
of them could ever possibly enter into the list already bearing the name
"NeedToRemove".
What I haven't figured out is if there's ever a situation where a node _leaves_
the
inactive list and returns to the active scenegraph without being deleted. In
this case,
any tampering of the node name would have undesirable results.
It does raise another question -- is this a common practice and is there
anywhere else
in OSG where node name has a special meaning during specific phases of
operation? This
particular one is not documented anywhere I know of. In this case, the failure
mode would
be pretty benign -- the DatabasePager could accidentally destroy too many
inactive
PagedLOD nodes in one frame-idle period. Normally this is constrained by the
_targetMaximumNumberOfPageLOD. So, maybe this failure could cause the redraw to
break
framerate. Nothing fatal.
And finally, is there a better extensible way to go about marking arbitrary
nodes for
later processing (while potentially still in the scenegraph, even though this
case has
them removed from the scenegraph by this point)? Any fast boolean flag will be
immediately
overwhelmed because everyone will want to use it and they'll collide. But any
extensible
method would seem to involve allocating and attaching some sort of dynamic
marker, which
is not especially efficient.
Any thoughts?
--
Chris 'Xenon' Hanson, omo sanza lettere Xenon AlphaPixel.com
PixelSense Landsat processing now available! http://www.alphapixel.com/demos/
"There is no Truth. There is only Perception. To Perceive is to Exist." - Xen
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org