Reorganized the static vector used for buffering extensions to prevent an crash on exit.

This commit is contained in:
Robert Osfield
2008-01-29 12:24:47 +00:00
parent c620786420
commit ae8713acde

View File

@@ -36,6 +36,8 @@
#include <vector>
typedef osg::buffered_value< osg::ref_ptr< osg::Drawable::Extensions > > OcclusionQueryBufferedExtensions;
static OcclusionQueryBufferedExtensions s_OQ_bufferedExtensions;
//
// Support classes, used by (and private to) OcclusionQueryNode.
@@ -260,19 +262,15 @@ struct RetrieveQueriesCallback : public osg::Camera::DrawCallback
osg::Drawable::Extensions* getExtensions( unsigned int contextID, bool createIfNotInitalized )
{
if (!s_extensions[ contextID ] && createIfNotInitalized)
s_extensions[ contextID ] = new osg::Drawable::Extensions( contextID );
return s_extensions[ contextID ].get();
if (!s_OQ_bufferedExtensions[ contextID ] && createIfNotInitalized)
s_OQ_bufferedExtensions[ contextID ] = new osg::Drawable::Extensions( contextID );
return s_OQ_bufferedExtensions[ contextID ].get();
}
typedef osg::buffered_value< osg::ref_ptr< osg::Drawable::Extensions > > BufferedExtensions;
static BufferedExtensions s_extensions;
osg::Drawable::Extensions* _extensionsFallback;
};
RetrieveQueriesCallback::BufferedExtensions RetrieveQueriesCallback::s_extensions;
// PreDraw callback; clears the list of Results from the PostDrawCallback (above).