repairs to ShaderCache for Resource changes

This commit is contained in:
Stephen Birarda 2015-09-08 08:58:35 -07:00
parent 25aeda2e18
commit 9878143661
4 changed files with 11 additions and 10 deletions

View file

@ -93,7 +93,7 @@ bool RenderableProceduralItem::ProceduralInfo::ready() {
void RenderableProceduralItem::ProceduralInfo::prepare(gpu::Batch& batch) { void RenderableProceduralItem::ProceduralInfo::prepare(gpu::Batch& batch) {
if (_shaderUrl.isLocalFile()) { if (_shaderUrl.isLocalFile()) {
auto lastModified = QFileInfo(_shaderPath).lastModified().toMSecsSinceEpoch(); auto lastModified = (quint64) QFileInfo(_shaderPath).lastModified().toMSecsSinceEpoch();
if (lastModified > _shaderModified) { if (lastModified > _shaderModified) {
QFile file(_shaderPath); QFile file(_shaderPath);
file.open(QIODevice::ReadOnly); file.open(QIODevice::ReadOnly);

View file

@ -173,6 +173,7 @@ public:
Q_INVOKABLE void allReferencesCleared(); Q_INVOKABLE void allReferencesCleared();
const QUrl& getURL() const { return _url; } const QUrl& getURL() const { return _url; }
const QByteArray& getData() const { return _data; }
signals: signals:
/// Fired when the resource has been loaded. /// Fired when the resource has been loaded.
@ -190,7 +191,7 @@ protected slots:
protected: protected:
virtual void init(); virtual void init();
/// Called when the download has finished. The recipient should delete the reply when done with it. /// Called when the download has finished
virtual void downloadFinished(const QByteArray& data); virtual void downloadFinished(const QByteArray& data);
/// Should be called by subclasses when all the loading that will be done has been done. /// Should be called by subclasses when all the loading that will be done has been done.

View file

@ -8,13 +8,13 @@
#include "ShaderCache.h" #include "ShaderCache.h"
NetworkShader::NetworkShader(const QUrl& url, bool delayLoad) NetworkShader::NetworkShader(const QUrl& url, bool delayLoad)
: Resource(url, delayLoad) {}; : Resource(url, delayLoad)
{
void NetworkShader::downloadFinished(QNetworkReply* reply) { }
if (reply) {
_source = reply->readAll(); void NetworkShader::downloadFinished(const QByteArray& data) {
reply->deleteLater(); _source = QString::fromUtf8(data);
}
} }
ShaderCache& ShaderCache::instance() { ShaderCache& ShaderCache::instance() {

View file

@ -14,9 +14,9 @@
class NetworkShader : public Resource { class NetworkShader : public Resource {
public: public:
NetworkShader(const QUrl& url, bool delayLoad); NetworkShader(const QUrl& url, bool delayLoad);
virtual void downloadFinished(QNetworkReply* reply) override; virtual void downloadFinished(const QByteArray& data) override;
QByteArray _source; QString _source;
}; };
using NetworkShaderPointer = QSharedPointer<NetworkShader>; using NetworkShaderPointer = QSharedPointer<NetworkShader>;