[pkg-fgfs-crew] r142 - in /flightgear/trunk/src/Scenery: SceneryPager.cxx SceneryPager.hxx

ovek at users.alioth.debian.org ovek at users.alioth.debian.org
Thu Jul 21 20:07:20 UTC 2011


Author: ovek
Date: Thu Jul 21 20:07:19 2011
New Revision: 142

URL: http://svn.debian.org/wsvn/pkg-fgfs/?sc=1&rev=142
Log:
Apply upstream commit c5366cceb6d345d3526ab013b04eb815fe0a6845
"accomodate changes to osgDB::DatabasePager interface"

Modified:
    flightgear/trunk/src/Scenery/SceneryPager.cxx
    flightgear/trunk/src/Scenery/SceneryPager.hxx

Modified: flightgear/trunk/src/Scenery/SceneryPager.cxx
URL: http://svn.debian.org/wsvn/pkg-fgfs/flightgear/trunk/src/Scenery/SceneryPager.cxx?rev=142&op=diff
==============================================================================
--- flightgear/trunk/src/Scenery/SceneryPager.cxx (original)
+++ flightgear/trunk/src/Scenery/SceneryPager.cxx Thu Jul 21 20:07:19 2011
@@ -44,15 +44,12 @@
 {
 }
 
+#if SG_PAGEDLOD_HAS_OPTIONS
+#else
 void SceneryPager::requestNodeFile(const std::string& fileName, Group* group,
                                    float priority, const FrameStamp* framestamp,
                                    ref_ptr<Referenced>& databaseRequest,
-#if SG_OSG_MIN_VERSION_REQUIRED(2,9,5)
-                                   const osg::Referenced* options
-#else
-                                   osgDB::ReaderWriter::Options* options
-#endif
-                                   )
+                                   osgDB::ReaderWriter::Options* options)
 {
     simgear::SGPagedLOD *sgplod = dynamic_cast<simgear::SGPagedLOD*>(group);
     if(sgplod)
@@ -64,6 +61,7 @@
                                        databaseRequest,
                                        options);
 }
+#endif
 
 void SceneryPager::queueRequest(const std::string& fileName, Group* group,
                                 float priority, FrameStamp* frameStamp,
@@ -81,6 +79,35 @@
     _deleteRequests.push_back(objptr);
     objptr = 0;
 }
+
+// Work around interface change in
+// osgDB::DatabasePager::requestNodeFile
+namespace
+{
+struct NodePathProxy
+{
+    NodePathProxy(NodePath& nodePath)
+        : _nodePath(nodePath)
+    {
+    }
+    operator Group* () { return static_cast<Group*>(_nodePath.back()); }
+    operator NodePath& () { return _nodePath; }
+    NodePath& _nodePath;
+};
+}
+
+void SceneryPager::PagerRequest::doRequest(SceneryPager* pager)
+{
+    if (_group->getNumChildren() == 0) {
+        NodePath path;
+        path.push_back(_group.get());
+        pager->requestNodeFile(_fileName, NodePathProxy(path), _priority,
+                               _frameStamp.get(),
+                               *_databaseRequest,
+                               _options.get());
+    }
+}
+
 void SceneryPager::signalEndFrame()
 {
     using namespace std;

Modified: flightgear/trunk/src/Scenery/SceneryPager.hxx
URL: http://svn.debian.org/wsvn/pkg-fgfs/flightgear/trunk/src/Scenery/SceneryPager.hxx?rev=142&op=diff
==============================================================================
--- flightgear/trunk/src/Scenery/SceneryPager.hxx (original)
+++ flightgear/trunk/src/Scenery/SceneryPager.hxx Thu Jul 21 20:07:19 2011
@@ -28,6 +28,7 @@
 #include <osgDB/DatabasePager>
 
 #include <simgear/structure/OSGVersion.hxx>
+#include <simgear/scene/model/SGPagedLOD.hxx>
 
 namespace flightgear
 {
@@ -39,16 +40,14 @@
     // Unhide DatabasePager::requestNodeFile
     using osgDB::DatabasePager::requestNodeFile;
     // reimplement to add readerWriterOptions from SGPagedLOD
+#if SG_PAGEDLOD_HAS_OPTIONS
+#else
     virtual void requestNodeFile(const std::string& fileName, osg::Group* group,
                                  float priority,
                                  const osg::FrameStamp* framestamp,
                                  osg::ref_ptr<osg::Referenced>& databaseRequest,
-#if SG_OSG_MIN_VERSION_REQUIRED(2,9,5)
-                                 const osg::Referenced* options
-#else
-                                 osgDB::ReaderWriter::Options* options
+                                 osgDB::ReaderWriter::Options* options);
 #endif
-                                 );
     void queueRequest(const std::string& fileName, osg::Group* node,
                       float priority, osg::FrameStamp* frameStamp,
                       osg::ref_ptr<osg::Referenced>& databaseRequest,
@@ -77,15 +76,7 @@
             _databaseRequest(&databaseRequest)
         {}
 
-        void doRequest(SceneryPager* pager)
-        {
-            if (_group->getNumChildren() == 0)
-                pager->requestNodeFile(_fileName, _group.get(), _priority,
-                                       _frameStamp.get(),
-                                       *_databaseRequest,
-                                       _options.get());
-        }
-
+        void doRequest(SceneryPager* pager);
         std::string _fileName;
         osg::ref_ptr<osg::Group> _group;
         float _priority;




More information about the pkg-fgfs-crew mailing list