X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FScenery%2FSceneryPager.hxx;h=d8f519a1bc3960255701c0ea058240060efddcb7;hb=f11201d3d93d70d610e32496e363dc7e851e86c5;hp=197202190d56bbec4e56865c668e45ac484f8868;hpb=616b2bf4f69a5cae8a12b4bf5007e2e2fecc9de1;p=flightgear.git diff --git a/src/Scenery/SceneryPager.hxx b/src/Scenery/SceneryPager.hxx index 197202190..d8f519a1b 100644 --- a/src/Scenery/SceneryPager.hxx +++ b/src/Scenery/SceneryPager.hxx @@ -19,6 +19,7 @@ // $Id$ #ifndef FLIGHTGEAR_SCENERYPAGERHXX +#define FLIGHTGEAR_SCENERYPAGERHXX 1 #include #include @@ -26,6 +27,8 @@ #include #include +#include + namespace flightgear { class SceneryPager : public osgDB::DatabasePager @@ -33,8 +36,12 @@ class SceneryPager : public osgDB::DatabasePager public: SceneryPager(); SceneryPager(const SceneryPager& rhs); + // Unhide DatabasePager::requestNodeFile + using osgDB::DatabasePager::requestNodeFile; void queueRequest(const std::string& fileName, osg::Group* node, - float priority, osg::FrameStamp* frameStamp); + float priority, osg::FrameStamp* frameStamp, + osg::ref_ptr& databaseRequest, + osgDB::ReaderWriter::Options* options); // This is passed a ref_ptr so that it can "take ownership" of the // node to delete and decrement its refcount while holding the // lock on the delete list. @@ -44,23 +51,28 @@ protected: // Queue up file requests until the end of the frame struct PagerRequest { - PagerRequest() {} + PagerRequest() : _priority(0.0f), _databaseRequest(0) {} PagerRequest(const PagerRequest& rhs) : _fileName(rhs._fileName), _group(rhs._group), - _priority(rhs._priority), _frameStamp(rhs._frameStamp) {} + _priority(rhs._priority), _frameStamp(rhs._frameStamp), + _options(rhs._options), _databaseRequest(rhs._databaseRequest) {} + PagerRequest(const std::string& fileName, osg::Group* group, - float priority, osg::FrameStamp* frameStamp) : + float priority, osg::FrameStamp* frameStamp, + osg::ref_ptr& databaseRequest, + osgDB::ReaderWriter::Options* options): _fileName(fileName), _group(group), _priority(priority), - _frameStamp(frameStamp) {} - void doRequest(SceneryPager* pager) - { - pager->requestNodeFile(_fileName, _group.get(), _priority, - _frameStamp.get()); - } + _frameStamp(frameStamp), _options(options), + _databaseRequest(&databaseRequest) + {} + + void doRequest(SceneryPager* pager); std::string _fileName; osg::ref_ptr _group; float _priority; osg::ref_ptr _frameStamp; + osg::ref_ptr _options; + osg::ref_ptr* _databaseRequest; }; typedef std::vector PagerRequestList; PagerRequestList _pagerRequests; @@ -69,5 +81,4 @@ protected: virtual ~SceneryPager(); }; } -#define FLIGHTGEAR_SCENERYPAGERHXX 1 #endif