minor fix to ModelRegistry and syntax changes for Windows

Create the local path in the right order in OptionsPusher. When
OptionsPusher is used, put it inside a new code block so the order of
destruction with respect to the mutex on reader functions id clear.

Add #include <algorithm> to top of ModelRegistry.cxx.

Change include syntax in PathOptions.cxx
This commit is contained in:
timoore
2007-12-11 11:07:21 +00:00
parent e683b5fdec
commit 1159784538
2 changed files with 26 additions and 22 deletions

View File

@@ -19,7 +19,7 @@
#include <osgDB/Registry>
#include <PathOptions.hxx>
#include "PathOptions.hxx"
using namespace simgear;

View File

@@ -18,6 +18,8 @@
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "ModelRegistry.hxx"
#include <algorithm>
#include <OpenThreads/ScopedLock>
#include <osg/observer_ptr>
@@ -219,7 +221,7 @@ struct OptionsPusher {
++iter) {
if (find(regPathList.begin(), regPathList.end(), *iter)
== regPathList.end())
localPathList.push_front(*iter);
localPathList.push_back(*iter);
}
// Save the current Registry path list and install the augmented one.
localPathList.swap(registry->getDataFilePathList());
@@ -242,27 +244,29 @@ ModelRegistry::readImage(const string& fileName,
CallbackMap::iterator iter
= imageCallbackMap.find(getFileExtension(fileName));
// XXX Workaround for OSG plugin bug
OptionsPusher pusher(opt);
if (iter != imageCallbackMap.end() && iter->second.valid())
return iter->second->readImage(fileName, opt);
string absFileName = findDataFile(fileName);
if (!fileExists(absFileName)) {
SG_LOG(SG_IO, SG_ALERT, "Cannot find image file \""
<< fileName << "\"");
return ReaderWriter::ReadResult::FILE_NOT_FOUND;
{
OptionsPusher pusher(opt);
if (iter != imageCallbackMap.end() && iter->second.valid())
return iter->second->readImage(fileName, opt);
string absFileName = findDataFile(fileName);
if (!fileExists(absFileName)) {
SG_LOG(SG_IO, SG_ALERT, "Cannot find image file \""
<< fileName << "\"");
return ReaderWriter::ReadResult::FILE_NOT_FOUND;
}
Registry* registry = Registry::instance();
ReaderWriter::ReadResult res;
res = registry->readImageImplementation(absFileName, opt);
if (res.loadedFromCache())
SG_LOG(SG_IO, SG_INFO, "Returning cached image \""
<< res.getImage()->getFileName() << "\"");
else
SG_LOG(SG_IO, SG_INFO, "Reading image \""
<< res.getImage()->getFileName() << "\"");
return res;
}
Registry* registry = Registry::instance();
ReaderWriter::ReadResult res;
res = registry->readImageImplementation(absFileName, opt);
if (res.loadedFromCache())
SG_LOG(SG_IO, SG_INFO, "Returning cached image \""
<< res.getImage()->getFileName() << "\"");
else
SG_LOG(SG_IO, SG_INFO, "Reading image \""
<< res.getImage()->getFileName() << "\"");
return res;
}