<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.5626" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Hi Again,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>We tried object cache  When Intersection 
Visitor loads PagedLOD through ReadCallback its used in vistor apply method 
local scope then ref counter drops to zero so object cache will also 
free the object just after it was used. (See IntersectionVisitor line 347). 
</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>It looks like we should attach loaded PagedLOD to 
some parent to prevent object cache flush. But IntersectVisitor::ReadCallback 
does not know the parent. One would need to override IntersectVisitor to allow 
for this. </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>On the other hand osgSim::DatabaseCacheReadCallback 
works like a local intersection only cache. DatabasePager does not know anything 
about it. So subsequent read request issued from Cull traversal will actually 
reload the file even if IntersectionVisitor just loaded it.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>So we figured out that using both Object cache with 
osgSim::DatabaseCacheReadCallback may do the trick. </FONT><FONT face=Arial 
size=2>There is a chance that DatabaseCacheReadCallback cache will keep 
PagedLOD for some time in memory making its ref counter non zero what 
will cause Object cache to keep it as well. Finally when Object cache will 
keep it, there is a chance that next DatabasePager request will 
find it in the cache and will not reload from disk. Funny scenario, isn't 
it ? I wish it was a bit simpler ;-)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Cheers,</FONT></DIV>
<DIV><FONT face=Arial size=2>Wojtek</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<BLOCKQUOTE 
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV 
  style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
  <A title=gwaldron@gmail.com href="mailto:gwaldron@gmail.com">Glenn Waldron</A> 
  </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A 
  title=osg-users@lists.openscenegraph.org 
  href="mailto:osg-users@lists.openscenegraph.org">OpenSceneGraph Users</A> 
  </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Wednesday, September 24, 2008 1:53 
  PM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [osg-users] Passing 
  explicitly loaded model to DatabasePagerfor expiry management</DIV>
  <DIV><BR></DIV>
  <DIV dir=ltr>On Wed, Sep 24, 2008 at 6:45 AM, Wojciech Lewandowski <SPAN 
  dir=ltr><<A 
  href="mailto:lewandowski@ai.com.pl">lewandowski@ai.com.pl</A>></SPAN> 
  wrote:<BR>
  <DIV class=gmail_quote>
  <BLOCKQUOTE class=gmail_quote 
  style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">
    <DIV bgcolor="#ffffff">
    <DIV><FONT face=Arial size=2>Hi Everyone,</FONT></DIV>
    <DIV><FONT face=Arial size=2></FONT> </DIV>
    <DIV><FONT face=Arial size=2>I have quick question. We have added simple 
    ReadCallback to osg::IntersectionVisitor to enforce loading of highest 
    PAgedLODs from our terrain.</FONT></DIV>
    <DIV><FONT face=Arial size=2>We simply call osgDB::readNodeFile( 
    PageLOD_file ). Intersection works, b</FONT><FONT face=Arial size=2>ut it 
    looks like these files are not stored in any cache nor they are actually 
    attached to parent PagedLOD. Is there a way we can add them to DatabasePager 
    loaded model list to avoid further loads of the same file ?</FONT></DIV>
    <DIV><FONT face=Arial size=2></FONT><BR></DIV></DIV></BLOCKQUOTE></DIV><BR>One 
  option is to implement a cache in the ReadCallback itself, as demonstrated in 
  osgSim/LineOfSight.cpp.<BR><BR>Glenn<BR clear=all><BR>-- <BR>Glenn Waldron : 
  Pelican Mapping : <A 
  href="http://pelicanmapping.com">http://pelicanmapping.com</A> : 
  +1.703.652.4791<BR></DIV>
  <P>
  <HR>

  <P></P>_______________________________________________<BR>osg-users mailing 
  list<BR>osg-users@lists.openscenegraph.org<BR>http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org<BR></BLOCKQUOTE></BODY></HTML>