summaryrefslogtreecommitdiffstats
path: root/src/gui/opengl/qopenglprogrambinarycache.cpp
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2016-11-25 13:56:57 +0100
committerLaszlo Agocs <laszlo.agocs@qt.io>2016-11-25 16:25:57 +0000
commitf0e60aefa48e2299c14918983ffa1016fb4677ba (patch)
treea585b6e9efeee235bb64c151d99088b56af96f1e /src/gui/opengl/qopenglprogrambinarycache.cpp
parent7cdc6c99422bd2591e9133ad3425e1a5a0494b17 (diff)
Use QSaveFile for more robust shader disk cache
Task-number: QTBUG-55496 Change-Id: Ie9bd4390e7bb7bf22dbe597a6a01fecec7a6b404 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/gui/opengl/qopenglprogrambinarycache.cpp')
-rw-r--r--src/gui/opengl/qopenglprogrambinarycache.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/gui/opengl/qopenglprogrambinarycache.cpp b/src/gui/opengl/qopenglprogrambinarycache.cpp
index 8598221c15..5c8e425e29 100644
--- a/src/gui/opengl/qopenglprogrambinarycache.cpp
+++ b/src/gui/opengl/qopenglprogrambinarycache.cpp
@@ -42,6 +42,7 @@
#include <QOpenGLExtraFunctions>
#include <QStandardPaths>
#include <QDir>
+#include <QSaveFile>
#include <QLoggingCategory>
#ifdef Q_OS_UNIX
@@ -322,11 +323,14 @@ void QOpenGLProgramBinaryCache::save(const QByteArray &cacheKey, uint programId)
return;
}
- QFile f(cacheFileName(cacheKey));
- if (f.open(QIODevice::WriteOnly | QIODevice::Truncate))
+ QSaveFile f(cacheFileName(cacheKey));
+ if (f.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
f.write(blob);
- else
- qCDebug(DBG_SHADER_CACHE, "Failed to write %s to shader cache", qPrintable(f.fileName()));
+ if (!f.commit())
+ qCDebug(DBG_SHADER_CACHE, "Failed to write %s to shader cache", qPrintable(f.fileName()));
+ } else {
+ qCDebug(DBG_SHADER_CACHE, "Failed to create %s in shader cache", qPrintable(f.fileName()));
+ }
}
QT_END_NAMESPACE