openmw-tes3coop/components/resource/resourcemanager.cpp
scrawl df57d4bfba Use a common base class for resource managers
Implement updateCache to delete unreferenced cached objects when they have not been referenced for a while.
2016-02-06 17:22:17 +01:00

34 lines
890 B
C++

#include "resourcemanager.hpp"
#include "objectcache.hpp"
namespace Resource
{
ResourceManager::ResourceManager(const VFS::Manager *vfs, const double expiryDelay)
: mVFS(vfs)
, mCache(new osgDB::ObjectCache)
, mExpiryDelay(expiryDelay)
{
}
void ResourceManager::updateCache(double referenceTime)
{
// NOTE: we could clear the cache from the background thread if the deletion proves too much of an overhead
// idea: customize objectCache to not hold a lock while doing the actual deletion
mCache->updateTimeStampOfObjectsInCacheWithExternalReferences(referenceTime);
mCache->removeExpiredObjectsInCache(referenceTime - mExpiryDelay);
}
void ResourceManager::clearCache()
{
mCache->clear();
}
const VFS::Manager* ResourceManager::getVFS() const
{
return mVFS;
}
}