diff options
author | Anders Hafreager <andershaf@gmail.com> | 2018-02-19 14:07:40 +0100 |
---|---|---|
committer | Anders Hafreager <andershaf@gmail.com> | 2018-02-28 16:32:10 +0000 |
commit | f7e01ffeb3626432cabe3d1ad245827e4217375c (patch) | |
tree | 1e7215ec003257684142f6e608fa9a613e2ff113 /src/render/materialsystem | |
parent | eedad5e4737072b99b112a51e08b35b4038dbf95 (diff) |
Prevent readded shaders to be purged from cache
In ShaderCache::removeRef, the shader DNA is added to m_pendingRemoval.
Previously, if the shader was readded before ShaderCache::purge was
called, ShaderCache::purge would still remove it even if it was in use.
This change removes a readded shader DNA from m_pendingRemoval.
Task-number: QTBUG-66498
Change-Id: If18b28273cccfd2a8cba2c7bc6379d983ce6ecb9
Reviewed-by: Svenn-Arne Dragly <svenn-arne.dragly@qt.io>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/materialsystem')
-rw-r--r-- | src/render/materialsystem/shadercache.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/render/materialsystem/shadercache.cpp b/src/render/materialsystem/shadercache.cpp index ce29622ad..78193755f 100644 --- a/src/render/materialsystem/shadercache.cpp +++ b/src/render/materialsystem/shadercache.cpp @@ -80,6 +80,8 @@ QOpenGLShaderProgram *ShaderCache::getShaderProgramAndAddRef(ProgramDNA dna, Qt3 if (*it != shaderPeerId) programRefs.insert(it, shaderPeerId); + m_pendingRemoval.removeOne(dna); + return *shaderProgram; } |