<div dir="ltr"><div>The explanation and code snippet doesn't tell us enough of what is going on in your app to be able to guess what might be wrong.</div><div><br></div><div>The best thing I can do at this point is flag up a couple of issues in the code that could be improved, or flag up stuff that seems odd.</div><div><br></div><div>First up a memory leak:<br></div><div><br></div><div><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"> osg::</span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">Group</span><span style="font-size:9.5pt;font-family:Consolas;color:black">* model = </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">dynamic_cast</span><span style="font-size:9.5pt;font-family:Consolas;color:black"><osg::</span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">Group</span><span style="font-size:9.5pt;font-family:Consolas;color:black">*>(<wbr>osgDB::readNodeFile(</span><span style="font-size:9.5pt;font-family:Consolas;color:gray">fileName</span><span style="font-size:9.5pt;font-family:Consolas;color:black">, </span><span style="font-size:9.5pt;font-family:Consolas;color:gray">dbOptions</span><span style="font-size:9.5pt;font-family:Consolas;color:black">));</span></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">if</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> (model != </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">nullptr</span><span style="font-size:9.5pt;font-family:Consolas;color:black">)</span></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"> {...</span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">This code will only assign the loaded object the </span><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black">m_Root if the loaded model root node is a Group, if isn't then it'll just be leaked, never to be deleted.</span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black">The best way to do a read to a particular type in robust way is to use ref_ptr<> and the readFile<T>(..) method i.e.</span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"> auto model = osgDB::readRefFile<osg::Group>(</span></span><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:gray">fileName</span><span style="font-size:9.5pt;font-family:Consolas;color:black">, </span><span style="font-size:9.5pt;font-family:Consolas;color:gray">dbOptions</span><span style="font-size:9.5pt;font-family:Consolas;color:black">)); // return a ref_ptr<osg::Group> that internally uses an dynamic_cast<osg::Group*></span></span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></span></span></p><p class="MsoNormal"><br></p><p class="MsoNormal">The next odditiyr is that you have a CleanupModel method that removes the whole Viewer, but you call it a View:<br></p><p class="MsoNormal"><br></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:blue">void</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">OpenSceneGraphBitmap</span><span style="font-size:9.5pt;font-family:Consolas;color:black">::<wbr>CleanupModel()</span></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">{</span></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">
RemoveViews();</span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"></span></span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">...</span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">}</span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">This seems like your application is conflating various different features together, which is a red flag by itself and makes me wonder if you have mis-understood the intent of the various osgViewer class available.</span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">The new bit of related code is another sign of misuse of the how the OSG is intended to be used:<br></span></p><p class="MsoNormal"><br></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:blue">void</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">OpenSceneGraphBitmap</span><span style="font-size:9.5pt;font-family:Consolas;color:black">::<wbr>RemoveViews()</span></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">{</span></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">if</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> (m_nhiCompositeViewer
!= </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">nullptr</span><span style="font-size:9.5pt;font-family:Consolas;color:black">)</span></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"> {</span></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">
m_nhiCompositeViewer->setDone(</span><span style="font-size:9.5pt;font-family:Consolas;color:blue"><wbr>true</span><span style="font-size:9.5pt;font-family:Consolas;color:black">);</span></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span style="font-size:9.5pt;font-family:Consolas;color:blue">delete</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> m_nhiCompositeViewer;</span></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">
m_nhiCompositeViewer = </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">nullptr</span><span style="font-size:9.5pt;font-family:Consolas;color:black">;</span></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"> }</span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">The OSG has built in robust reference counting, it is almost never appropriate to directly delete a object, not in the scene graph, not in the viewer, not a whole viewer. I suspect your application at a higher level is not ideally organized so the following suggestion might just gloss over wider problems, any I say it here as understanding ref_ptr<> usage is important regardless...</span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">So your </span><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black">m_nhiCompositeViewer pointer should *always* be a ref_ptr<> and *never* a straight C pointer. If you want to delete a viewer you just set the ref_ptr<> to nullptr and it'll be automatically deleted for you if no other references exist t it. The above method could safely be replaced with a single line : </span></span><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black">m_nhiCompositeViewer = </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">nullptr</span><span style="font-size:9.5pt;font-family:Consolas;color:black">;</span></span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black">However, this doesn't fix the other problems in the code, it'd just fix a bad practice.</span></span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black">Next problem will need to look at is back to the </span></span></span><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">OpenSceneGraphBitmap</span><span style="font-size:9.5pt;font-family:Consolas;color:black">::<wbr>CleanupModel() method:</span></span></span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></span></span></span></p><p class="MsoNormal"><br></p><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:blue">void</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">OpenSceneGraphBitmap</span><span style="font-size:9.5pt;font-family:Consolas;color:black">::<wbr>CleanupModel()</span></p><div style="margin-left: 40px;">
</div><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black">{</span></p><div style="margin-left: 40px;">
</div><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black">
RemoveViews();</span></p><div style="margin-left: 40px;">
</div><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span></p><div style="margin-left: 40px;">
</div><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">if</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> (m_Root != </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">nullptr</span><span style="font-size:9.5pt;font-family:Consolas;color:black">)
</span><span style="font-size:9.5pt;font-family:Consolas;color:green">// if
root already exists (already loaded previous scene) remove children to clean up</span><span style="font-size:9.5pt;font-family:Consolas;color:black"></span></p><div style="margin-left: 40px;">
</div><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black"> {</span></p><div style="margin-left: 40px;">
</div><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black">
m_Root</span><span style="font-size:9.5pt;font-family:Consolas;color:teal">-></span><span style="font-size:9.5pt;font-family:Consolas;color:black">releaseGLObjects();</span></p><div style="margin-left: 40px;">
</div><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black">
m_Root</span><span style="font-size:9.5pt;font-family:Consolas;color:teal">-></span><span style="font-size:9.5pt;font-family:Consolas;color:black">removeChildren(0,
m_Root</span><span style="font-size:9.5pt;font-family:Consolas;color:teal">-></span><span style="font-size:9.5pt;font-family:Consolas;color:black">getNumChildren());</span></p><div style="margin-left: 40px;">
</div><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span></p><div style="margin-left: 40px;">
</div><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span style="font-size:9.5pt;font-family:Consolas;color:blue">void</span><span style="font-size:9.5pt;font-family:Consolas;color:black">* ptr =
m_Root.release();</span></p><div style="margin-left: 40px;">
</div><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span style="font-size:9.5pt;font-family:Consolas;color:blue">delete</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> ptr;</span></p><div style="margin-left: 40px;">
</div><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black">
m_Root </span><span style="font-size:9.5pt;font-family:Consolas;color:teal">=</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">nullptr</span><span style="font-size:9.5pt;font-family:Consolas;color:black">;</span></p><div style="margin-left: 40px;">
</div><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black"> }</span></p><div style="margin-left: 40px;">
</div><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black">}</span></p><div style="margin-left: 40px;">
</div><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">Here you call RemoveViews() which will delete the Viewer and all graphics contexts associated with it. The you try and do some manual clean up:</span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">if</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> (m_Root != </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">nullptr</span><span style="font-size:9.5pt;font-family:Consolas;color:black">)
</span><span style="font-size:9.5pt;font-family:Consolas;color:green">// if
root already exists (already loaded previous scene) remove children to clean up</span><span style="font-size:9.5pt;font-family:Consolas;color:black"></span></p><div style="margin-left: 40px;">
</div><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black"> {</span></p><div style="margin-left: 40px;">
</div><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black">
m_Root</span><span style="font-size:9.5pt;font-family:Consolas;color:teal">-></span><span style="font-size:9.5pt;font-family:Consolas;color:black">releaseGLObjects();</span></p><div style="margin-left: 40px;">
</div><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black">
m_Root</span><span style="font-size:9.5pt;font-family:Consolas;color:teal">-></span><span style="font-size:9.5pt;font-family:Consolas;color:black">removeChildren(0,
m_Root</span><span style="font-size:9.5pt;font-family:Consolas;color:teal">-></span><span style="font-size:9.5pt;font-family:Consolas;color:black">getNumChildren());</span></p><p class="MsoNormal" style="margin-left: 40px;"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">This suggest to me that you are keeping m_Root around as some form of global container and then trying to manage it's contents. The code snippets don't say how the node and it's children. Deleting a Viewer will delete all it's GraphicsContext and clean up all the scene graphs that are directly attached to it, but it you have scene graph elements that are detached from the scene graph then it can't clean up these. If these detached elements contain GL objects will have already been deleted by the graphics context deletion, so the handles are orphaned but the OSG itself doesn't know about it, and calling releaseGLObjects() will release the handles into containers that the OSG uses to schedule deletion or reuse of the GL objects. If the graphics contexts already deleted then you have to discard any GL handles via calling discardGLObjects() rather than releaseGLObjects().<br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">The osgViewer and scene graph are design to do all the automatic clean up and management of GL objects behind the scenes for you, for most applications there should never be a need to explicitly call </span><br><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black">releaseGLObjects(); The OSG can't track what you detach from viewers and then manipulate, in these cases you really need to think whether what you are doing is necessary and sensible. My strong recommendation is that users avoid doing this. <br></span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black">Finally we have another instance of manually an object:</span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span style="font-size:9.5pt;font-family:Consolas;color:blue">void</span><span style="font-size:9.5pt;font-family:Consolas;color:black">* ptr =
m_Root.release();</span></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span style="font-size:9.5pt;font-family:Consolas;color:blue">delete</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> ptr;</span></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">
m_Root </span><span style="font-size:9.5pt;font-family:Consolas;color:teal">=</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">nullptr</span><span style="font-size:9.5pt;font-family:Consolas;color:black">;</span></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">The code tells me that m_Root is likely a ref_ptr<Group> which rather than just do the sensible thing and call m_Root = nullptr and let the smart pointer do it's job in clean up you release the pointer and then manually delete it.</span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">It's painful to see such a combination a misuse of the OSG. I don't know where you have picked up this coding style, but it's never been part of the OSG usage, none of the OSG examples, none of books, never in it's near 20 year history has abusing ref_ptr<> in this way been advocated. <br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">I don't know the history of your application, it could be that you've inherited bad code and have been thrown in the deepened trying to learn and fix stuff at the same time. From this point, I am pretty sure that the regression you see in going from 3.6.0 to 3.6.4 is likely to mis-use of the OSG in your application code that make it's so fragile and dependent on accidental behaviors to function. Fixing bugs on the OSG then can easily break your application as it was relying on buggy behavior.</span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">From the little snippets I've picked up a number of problems, fixing these might work around the problems, but my guess is that there are major problem throughout the code. The good news is that if you learn to use the OSG a bit more appropriately your codebase will become smaller, cleaner, easier to maintain, more robust, more fun to work with.</span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">Spending a bit of time learning about how smart pointers work and how to use them will really help you. You have accesses to the full OSG source code so if you aren't sure about something just have a look at the code, put break points into the code, see what happens when smart pointers do there thing. Have a look through the examples, discussions online, have a look at the OSG books. This investment in learning more about the how thing work will make you much more productive.</span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">Best of luck,</span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">Robert.<br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"></span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></span></p><p class="MsoNormal"><br><span style="font-size:9.5pt;font-family:Consolas;color:black"></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"></span></span></span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black">}</span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"></span></p><p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black"><br></span></p><br><iframe style="padding: 0px; position: absolute; top: 0px; left: 0px; width: 1421px; height: 188px; visibility: hidden;" frameborder="0"></iframe></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups "OpenSceneGraph Users" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an email to <a href="mailto:osg-users+unsubscribe@googlegroups.com">osg-users+unsubscribe@googlegroups.com</a>.<br />
To view this discussion on the web visit <a href="https://groups.google.com/d/msgid/osg-users/56cb1ab8-754c-40a4-a9f4-dc47654e11f1%40googlegroups.com?utm_medium=email&utm_source=footer">https://groups.google.com/d/msgid/osg-users/56cb1ab8-754c-40a4-a9f4-dc47654e11f1%40googlegroups.com</a>.<br />