mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 13:49:12 +02:00
Put cache max size/count as class members
This commit is contained in:
parent
f18594cfdb
commit
5cdc76ad35
2 changed files with 8 additions and 12 deletions
|
@ -73,22 +73,18 @@ QSharedPointer<Resource> ResourceCache::getResource(const QUrl& url, const QUrl&
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResourceCache::addUnusedResource(const QSharedPointer<Resource>& resource) {
|
void ResourceCache::addUnusedResource(const QSharedPointer<Resource>& resource) {
|
||||||
static const int BYTES_PER_MEGABYTES = 1024 * 1024;
|
while (_unusedResourcesSize + resource->getBytesTotal() > _unusedResourcesMaxSize &&
|
||||||
const int RETAINED_RESOURCE_COUNT = 50;
|
|
||||||
const int RETAINED_RESOURCE_SIZE = 100 * BYTES_PER_MEGABYTES;
|
|
||||||
|
|
||||||
while (_unusedResourcesTotalBytes + resource->getBytesTotal() > RETAINED_RESOURCE_SIZE &&
|
|
||||||
!_unusedResources.empty()) {
|
!_unusedResources.empty()) {
|
||||||
// unload the oldest resource
|
// unload the oldest resource
|
||||||
QMap<int, QSharedPointer<Resource> >::iterator it = _unusedResources.begin();
|
QMap<int, QSharedPointer<Resource> >::iterator it = _unusedResources.begin();
|
||||||
|
|
||||||
_unusedResourcesTotalBytes -= it.value()->getBytesTotal();
|
_unusedResourcesSize -= it.value()->getBytesTotal();
|
||||||
it.value()->setCache(NULL);
|
it.value()->setCache(NULL);
|
||||||
_unusedResources.erase(it);
|
_unusedResources.erase(it);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (_unusedResources.size() > RETAINED_RESOURCE_COUNT) {
|
if (_unusedResources.size() > _unusedResourcesMaxCount) {
|
||||||
// unload the oldest resource
|
// unload the oldest resource
|
||||||
QMap<int, QSharedPointer<Resource> >::iterator it = _unusedResources.begin();
|
QMap<int, QSharedPointer<Resource> >::iterator it = _unusedResources.begin();
|
||||||
it.value()->setCache(NULL);
|
it.value()->setCache(NULL);
|
||||||
|
@ -96,13 +92,13 @@ void ResourceCache::addUnusedResource(const QSharedPointer<Resource>& resource)
|
||||||
}
|
}
|
||||||
resource->setLRUKey(++_lastLRUKey);
|
resource->setLRUKey(++_lastLRUKey);
|
||||||
_unusedResources.insert(resource->getLRUKey(), resource);
|
_unusedResources.insert(resource->getLRUKey(), resource);
|
||||||
_unusedResourcesTotalBytes += resource->getBytesTotal();
|
_unusedResourcesSize += resource->getBytesTotal();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResourceCache::removeUnusedResource(const QSharedPointer<Resource>& resource) {
|
void ResourceCache::removeUnusedResource(const QSharedPointer<Resource>& resource) {
|
||||||
if (_unusedResources.contains(resource->getLRUKey())) {
|
if (_unusedResources.contains(resource->getLRUKey())) {
|
||||||
_unusedResources.remove(resource->getLRUKey());
|
_unusedResources.remove(resource->getLRUKey());
|
||||||
_unusedResourcesTotalBytes -= resource->getBytesTotal();
|
_unusedResourcesSize -= resource->getBytesTotal();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,8 +45,9 @@ public:
|
||||||
void refresh(const QUrl& url);
|
void refresh(const QUrl& url);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
int _unusedResourcesMaxCount = 50;
|
||||||
qint64 _unusedResourcesTotalBytes = 0;
|
qint64 _unusedResourcesMaxSize = 100 * 1024 * 1024;
|
||||||
|
qint64 _unusedResourcesSize = 0;
|
||||||
QMap<int, QSharedPointer<Resource> > _unusedResources;
|
QMap<int, QSharedPointer<Resource> > _unusedResources;
|
||||||
|
|
||||||
/// Loads a resource from the specified URL.
|
/// Loads a resource from the specified URL.
|
||||||
|
@ -67,7 +68,6 @@ protected:
|
||||||
static void requestCompleted(Resource* resource);
|
static void requestCompleted(Resource* resource);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
friend class Resource;
|
friend class Resource;
|
||||||
|
|
||||||
QHash<QUrl, QWeakPointer<Resource> > _resources;
|
QHash<QUrl, QWeakPointer<Resource> > _resources;
|
||||||
|
|
Loading…
Reference in a new issue