From 925ea8bcdaef7ba9d169b46b2de659cb47165c4a Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Tue, 8 Mar 2016 13:30:58 -0800 Subject: [PATCH 1/2] Add Resource::isCacheable --- libraries/networking/src/ResourceCache.cpp | 8 ++++---- libraries/networking/src/ResourceCache.h | 3 +++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/libraries/networking/src/ResourceCache.cpp b/libraries/networking/src/ResourceCache.cpp index e5771401b9..b312067d49 100644 --- a/libraries/networking/src/ResourceCache.cpp +++ b/libraries/networking/src/ResourceCache.cpp @@ -278,20 +278,20 @@ void Resource::refresh() { } void Resource::allReferencesCleared() { - if (_cache) { + if (_cache && isCacheable()) { if (QThread::currentThread() != thread()) { QMetaObject::invokeMethod(this, "allReferencesCleared"); return; } - + // create and reinsert new shared pointer QSharedPointer self(this, &Resource::allReferencesCleared); setSelf(self); reinsert(); - + // add to the unused list _cache->addUnusedResource(self); - + } else { delete this; } diff --git a/libraries/networking/src/ResourceCache.h b/libraries/networking/src/ResourceCache.h index 97e46f088a..2a89ad9b92 100644 --- a/libraries/networking/src/ResourceCache.h +++ b/libraries/networking/src/ResourceCache.h @@ -192,6 +192,9 @@ protected slots: protected: virtual void init(); + /// Checks whether the resource is cacheable. + virtual bool isCacheable() const { return true; } + /// Called when the download has finished virtual void downloadFinished(const QByteArray& data); From 883d4ba006faefc08b253ed7a651098d2d0ac548 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Tue, 8 Mar 2016 13:31:23 -0800 Subject: [PATCH 2/2] Only cache processed textures --- .../model-networking/src/model-networking/TextureCache.cpp | 1 + libraries/model-networking/src/model-networking/TextureCache.h | 3 +++ 2 files changed, 4 insertions(+) diff --git a/libraries/model-networking/src/model-networking/TextureCache.cpp b/libraries/model-networking/src/model-networking/TextureCache.cpp index d49ff91abf..82a0b35cc9 100644 --- a/libraries/model-networking/src/model-networking/TextureCache.cpp +++ b/libraries/model-networking/src/model-networking/TextureCache.cpp @@ -344,6 +344,7 @@ void NetworkTexture::setImage(const QImage& image, void* voidTexture, int origin _width = _height = 0; } + _isCacheable = true; finishedLoading(true); emit networkTextureCreated(qWeakPointerCast (_self)); diff --git a/libraries/model-networking/src/model-networking/TextureCache.h b/libraries/model-networking/src/model-networking/TextureCache.h index af82d2a1ad..ee2279540b 100644 --- a/libraries/model-networking/src/model-networking/TextureCache.h +++ b/libraries/model-networking/src/model-networking/TextureCache.h @@ -132,6 +132,8 @@ signals: protected: + virtual bool isCacheable() const override { return _isCacheable; } + virtual void downloadFinished(const QByteArray& data) override; Q_INVOKABLE void loadContent(const QByteArray& content); @@ -146,6 +148,7 @@ private: int _originalHeight { 0 }; int _width { 0 }; int _height { 0 }; + bool _isCacheable { false }; }; #endif // hifi_TextureCache_h