diff --git a/CMakeModules/FindSvnClient.cmake b/CMakeModules/FindSvnClient.cmake index b238d3f56..717b8b04d 100644 --- a/CMakeModules/FindSvnClient.cmake +++ b/CMakeModules/FindSvnClient.cmake @@ -19,17 +19,7 @@ if(HAVE_APR_CONFIG) string(STRIP ${RAW_APR_LIBS} APR_LIBS) else(HAVE_APR_CONFIG) - FIND_LIBRARY(APR_LIBS - NAMES libapr-1 apr-1 - HINTS - PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 - PATHS - ~/Library/Frameworks - /Library/Frameworks - /usr/local - /usr - /opt - ) + message(STATUS "apr-1-config not found, implement manual search for APR") endif(HAVE_APR_CONFIG) find_path(LIBSVN_INCLUDE_DIR svn_client.h @@ -42,49 +32,17 @@ find_path(LIBSVN_INCLUDE_DIR svn_client.h /opt ) -FIND_LIBRARY(SVNCLIENT_LIBRARY - NAMES libsvn_client-1 svn_client-1 - HINTS - PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 - PATHS - ~/Library/Frameworks - /Library/Frameworks - /usr/local - /usr - /opt -) - -FIND_LIBRARY(SVNSUBR_LIBRARY - NAMES libsvn_subr-1 svn_subr-1 - HINTS - PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 - PATHS - ~/Library/Frameworks - /Library/Frameworks - /usr/local - /usr - /opt -) - -FIND_LIBRARY(SVNRA_LIBRARY - NAMES libsvn_ra-1 svn_ra-1 - HINTS - PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 - PATHS - ~/Library/Frameworks - /Library/Frameworks - /usr/local - /usr - /opt -) +check_library_exists(svn_client-1 svn_client_checkout "" HAVE_LIB_SVNCLIENT) +check_library_exists(svn_subr-1 svn_cmdline_init "" HAVE_LIB_SVNSUBR) +check_library_exists(svn_ra-1 svn_ra_initialize "" HAVE_LIB_SVNRA) include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBSVN DEFAULT_MSG - SVNSUBR_LIBRARY - SVNCLIENT_LIBRARY - SVNRA_LIBRARY + HAVE_LIB_SVNSUBR + HAVE_LIB_SVNCLIENT + HAVE_LIB_SVNRA LIBSVN_INCLUDE_DIR) if(LIBSVN_FOUND) - set(LIBSVN_LIBRARIES ${SVNCLIENT_LIBRARY} ${SVNSUBR_LIBRARY} ${SVNRA_LIBRARY} ${APR_LIBS}) + set(LIBSVN_LIBRARIES "svn_client-1" "svn_subr-1" "svn_ra-1" ${APR_LIBS}) endif(LIBSVN_FOUND) diff --git a/src/Scenery/SceneryPager.cxx b/src/Scenery/SceneryPager.cxx index 183511361..9328973ef 100644 --- a/src/Scenery/SceneryPager.cxx +++ b/src/Scenery/SceneryPager.cxx @@ -44,15 +44,12 @@ SceneryPager::~SceneryPager() { } +#if SG_PAGEDLOD_HAS_OPTIONS +#else void SceneryPager::requestNodeFile(const std::string& fileName, Group* group, float priority, const FrameStamp* framestamp, ref_ptr& 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(group); if(sgplod) @@ -64,6 +61,7 @@ void SceneryPager::requestNodeFile(const std::string& fileName, Group* group, databaseRequest, options); } +#endif void SceneryPager::queueRequest(const std::string& fileName, Group* group, float priority, FrameStamp* frameStamp, @@ -81,6 +79,35 @@ void SceneryPager::queueDeleteRequest(osg::ref_ptr& objptr) _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(_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; diff --git a/src/Scenery/SceneryPager.hxx b/src/Scenery/SceneryPager.hxx index ba018993c..04e6ef5c4 100644 --- a/src/Scenery/SceneryPager.hxx +++ b/src/Scenery/SceneryPager.hxx @@ -28,6 +28,7 @@ #include #include +#include namespace flightgear { @@ -39,16 +40,14 @@ public: // 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& 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& databaseRequest, @@ -77,15 +76,7 @@ protected: _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 _group; float _priority;