diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2016-11-25 13:56:57 +0100 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2016-11-25 16:25:57 +0000 |
commit | f0e60aefa48e2299c14918983ffa1016fb4677ba (patch) | |
tree | a585b6e9efeee235bb64c151d99088b56af96f1e /src/gui/opengl/qopenglprogrambinarycache.cpp | |
parent | 7cdc6c99422bd2591e9133ad3425e1a5a0494b17 (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.cpp | 12 |
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 |