From 8415098fc2ef0a22735d7662af3c6d1ae4c287e2 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Mon, 12 Jan 2015 15:36:36 -0800 Subject: [PATCH] Set different caches size depending on cache type --- libraries/animation/src/AnimationCache.cpp | 5 ++++- libraries/audio/src/SoundCache.cpp | 3 ++- libraries/metavoxels/src/ScriptCache.cpp | 7 +++++-- libraries/networking/src/ResourceCache.cpp | 4 +++- libraries/networking/src/ResourceCache.h | 7 +++++++ libraries/render-utils/src/GeometryCache.cpp | 2 ++ libraries/render-utils/src/TextureCache.cpp | 2 ++ 7 files changed, 25 insertions(+), 5 deletions(-) diff --git a/libraries/animation/src/AnimationCache.cpp b/libraries/animation/src/AnimationCache.cpp index 1a68aeb908..6c02ccbd2b 100644 --- a/libraries/animation/src/AnimationCache.cpp +++ b/libraries/animation/src/AnimationCache.cpp @@ -17,7 +17,10 @@ static int animationPointerMetaTypeId = qRegisterMetaType(); AnimationCache::AnimationCache(QObject* parent) : - ResourceCache(parent) { + ResourceCache(parent) +{ + const qint64 ANIMATION_DEFAULT_UNUSED_MAX_SIZE = 50 * BYTES_PER_MEGABYTES; + setUnusedResourceCacheSize(ANIMATION_DEFAULT_UNUSED_MAX_SIZE); } AnimationPointer AnimationCache::getAnimation(const QUrl& url) { diff --git a/libraries/audio/src/SoundCache.cpp b/libraries/audio/src/SoundCache.cpp index 4fbd98fea0..fe05372ce5 100644 --- a/libraries/audio/src/SoundCache.cpp +++ b/libraries/audio/src/SoundCache.cpp @@ -23,7 +23,8 @@ SoundCache& SoundCache::getInstance() { SoundCache::SoundCache(QObject* parent) : ResourceCache(parent) { - + const qint64 SOUND_DEFAULT_UNUSED_MAX_SIZE = 50 * BYTES_PER_MEGABYTES; + setUnusedResourceCacheSize(SOUND_DEFAULT_UNUSED_MAX_SIZE); } SharedSoundPointer SoundCache::getSound(const QUrl& url) { diff --git a/libraries/metavoxels/src/ScriptCache.cpp b/libraries/metavoxels/src/ScriptCache.cpp index ffd5200a2e..7e8dbc4bae 100644 --- a/libraries/metavoxels/src/ScriptCache.cpp +++ b/libraries/metavoxels/src/ScriptCache.cpp @@ -109,9 +109,12 @@ ScriptCache* ScriptCache::getInstance() { } ScriptCache::ScriptCache() : - _engine(NULL) { - + _engine(NULL) +{ setEngine(new QScriptEngine(this)); + + const qint64 SCRIPT_DEFAULT_UNUSED_MAX_SIZE = 50 * BYTES_PER_MEGABYTES; + setUnusedResourceCacheSize(SCRIPT_DEFAULT_UNUSED_MAX_SIZE); } void ScriptCache::setEngine(QScriptEngine* engine) { diff --git a/libraries/networking/src/ResourceCache.cpp b/libraries/networking/src/ResourceCache.cpp index 1187b311fc..f4d9a2909d 100644 --- a/libraries/networking/src/ResourceCache.cpp +++ b/libraries/networking/src/ResourceCache.cpp @@ -16,6 +16,8 @@ #include #include +#include + #include "NetworkAccessManager.h" #include "ResourceCache.h" @@ -70,7 +72,7 @@ QSharedPointer ResourceCache::getResource(const QUrl& url, const QUrl& } void ResourceCache::setUnusedResourceCacheSize(qint64 unusedResourcesMaxSize) { - _unusedResourcesMaxSize = unusedResourcesMaxSize; + _unusedResourcesMaxSize = glm::clamp(unusedResourcesMaxSize, MIN_UNUSED_MAX_SIZE, MAX_UNUSED_MAX_SIZE); reserveUnusedResource(0); } diff --git a/libraries/networking/src/ResourceCache.h b/libraries/networking/src/ResourceCache.h index 0c2b6d2ce8..7b8ffc392b 100644 --- a/libraries/networking/src/ResourceCache.h +++ b/libraries/networking/src/ResourceCache.h @@ -29,7 +29,14 @@ class Resource; static constexpr qint64 BYTES_PER_MEGABYTES = 1024 * 1024; static constexpr qint64 BYTES_PER_GIGABYTES = 1024 * BYTES_PER_MEGABYTES; + +// Windows can have troubles allocating that much memory in ram sometimes +// so default cache size at 100 MB on windows (1GB otherwise) +#ifdef Q_OS_WIN32 static constexpr qint64 DEFAULT_UNUSED_MAX_SIZE = 100 * BYTES_PER_MEGABYTES; +#else +static constexpr qint64 DEFAULT_UNUSED_MAX_SIZE = 1024 * BYTES_PER_MEGABYTES; +#endif static constexpr qint64 MIN_UNUSED_MAX_SIZE = 0; static constexpr qint64 MAX_UNUSED_MAX_SIZE = 10 * BYTES_PER_GIGABYTES; diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 553e460a5c..25f988472f 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -30,6 +30,8 @@ const int GeometryCache::UNKNOWN_ID = -1; GeometryCache::GeometryCache() : _nextID(0) { + const qint64 GEOMETRY_DEFAULT_UNUSED_MAX_SIZE = DEFAULT_UNUSED_MAX_SIZE; + setUnusedResourceCacheSize(GEOMETRY_DEFAULT_UNUSED_MAX_SIZE); } GeometryCache::~GeometryCache() { diff --git a/libraries/render-utils/src/TextureCache.cpp b/libraries/render-utils/src/TextureCache.cpp index 0f34282162..3bd05a14ee 100644 --- a/libraries/render-utils/src/TextureCache.cpp +++ b/libraries/render-utils/src/TextureCache.cpp @@ -39,6 +39,8 @@ TextureCache::TextureCache() : _frameBufferSize(100, 100), _associatedWidget(NULL) { + const qint64 TEXTURE_DEFAULT_UNUSED_MAX_SIZE = DEFAULT_UNUSED_MAX_SIZE; + setUnusedResourceCacheSize(TEXTURE_DEFAULT_UNUSED_MAX_SIZE); } TextureCache::~TextureCache() {