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. */
|
/** Get the ObjectWrapperManager that is used to store all the ObjectWrappers. */
|
||||||
DeprecatedDotOsgWrapperManager* getDeprecatedDotOsgObjectWrapperManager() { return _deprecatedDotOsgWrapperManager.get(); }
|
DeprecatedDotOsgWrapperManager* getDeprecatedDotOsgObjectWrapperManager() { return _deprecatedDotOsgWrapperManager.get(); }
|
||||||
|
|
||||||
|
typedef std::vector< std::string> ArchiveExtensionList;
|
||||||
|
const ArchiveExtensionList& getArchiveExtensions() const { return _archiveExtList; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
virtual ~Registry();
|
virtual ~Registry();
|
||||||
@ -492,7 +495,6 @@ class OSGDB_EXPORT Registry : public osg::Referenced
|
|||||||
typedef std::vector< osg::ref_ptr<DynamicLibrary> > DynamicLibraryList;
|
typedef std::vector< osg::ref_ptr<DynamicLibrary> > DynamicLibraryList;
|
||||||
typedef std::map< std::string, std::string> ExtensionAliasMap;
|
typedef std::map< std::string, std::string> ExtensionAliasMap;
|
||||||
typedef std::map< std::string, std::string> MimeTypeExtensionMap;
|
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::pair<osg::ref_ptr<osg::Object>, double > ObjectTimeStampPair;
|
||||||
typedef std::map<std::string, ObjectTimeStampPair > ObjectCache;
|
typedef std::map<std::string, ObjectTimeStampPair > ObjectCache;
|
||||||
|
@ -1036,7 +1036,12 @@ ReaderWriter::ReadResult Registry::read(const ReadFunctor& readFunctor)
|
|||||||
|
|
||||||
osgDB::Archive* archive = result.getArchive();
|
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);
|
options->setDatabasePath(archiveName);
|
||||||
|
|
||||||
return archive->readObject(fileName,options.get());
|
return archive->readObject(fileName,options.get());
|
||||||
|
Loading…
Reference in New Issue
Block a user