From Bradley Anderegg, "The first change just exposes the archive extension list so that
external applications can determine if an archive extension is valid. The second change is a bug fix in Registry::read(const ReadFunctor&) where if you pass in valid options they get wiped out after the archive is loaded but before being passed along to the plugin."
This commit is contained in:
parent
3c4180d982
commit
cfb19182e6
@ -485,6 +485,9 @@ class OSGDB_EXPORT Registry : public osg::Referenced
|
||||
/** Get the ObjectWrapperManager that is used to store all the ObjectWrappers. */
|
||||
DeprecatedDotOsgWrapperManager* getDeprecatedDotOsgObjectWrapperManager() { return _deprecatedDotOsgWrapperManager.get(); }
|
||||
|
||||
typedef std::vector< std::string> ArchiveExtensionList;
|
||||
const ArchiveExtensionList& getArchiveExtensions() const { return _archiveExtList; }
|
||||
|
||||
protected:
|
||||
|
||||
virtual ~Registry();
|
||||
@ -492,7 +495,6 @@ class OSGDB_EXPORT Registry : public osg::Referenced
|
||||
typedef std::vector< osg::ref_ptr<DynamicLibrary> > DynamicLibraryList;
|
||||
typedef std::map< std::string, std::string> ExtensionAliasMap;
|
||||
typedef std::map< std::string, std::string> MimeTypeExtensionMap;
|
||||
typedef std::vector< std::string> ArchiveExtensionList;
|
||||
|
||||
typedef std::pair<osg::ref_ptr<osg::Object>, double > ObjectTimeStampPair;
|
||||
typedef std::map<std::string, ObjectTimeStampPair > ObjectCache;
|
||||
|
@ -1036,7 +1036,12 @@ ReaderWriter::ReadResult Registry::read(const ReadFunctor& readFunctor)
|
||||
|
||||
osgDB::Archive* archive = result.getArchive();
|
||||
|
||||
osg::ref_ptr<Options> options = new Options;
|
||||
//if valid options were passed through the read functor clone them
|
||||
//otherwise make new options
|
||||
osg::ref_ptr<osgDB::ReaderWriter::Options> options = readFunctor._options ?
|
||||
readFunctor._options->cloneOptions() :
|
||||
new osgDB::ReaderWriter::Options;
|
||||
|
||||
options->setDatabasePath(archiveName);
|
||||
|
||||
return archive->readObject(fileName,options.get());
|
||||
|
Loading…
Reference in New Issue
Block a user