From ae8713acde79c3cb72e00ee409943b0a7260f9c4 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 29 Jan 2008 12:24:47 +0000 Subject: [PATCH] Reorganized the static vector used for buffering extensions to prevent an crash on exit. --- src/osg/OcclusionQueryNode.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/osg/OcclusionQueryNode.cpp b/src/osg/OcclusionQueryNode.cpp index aa9b8a39b..054100e84 100644 --- a/src/osg/OcclusionQueryNode.cpp +++ b/src/osg/OcclusionQueryNode.cpp @@ -36,6 +36,8 @@ #include +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).