diff options
| author | Jason Sams <rjsams@android.com> | 2011-01-05 03:37:48 -0800 |
|---|---|---|
| committer | Jason Sams <rjsams@android.com> | 2011-01-05 03:37:48 -0800 |
| commit | 2cbfc4ca83ef045f004b52cd3a89934ae0318c12 (patch) | |
| tree | 22d7b500e13cb9115d990ff364d51a6e7573f136 /rsShaderCache.cpp | |
| parent | 59962077fed57ff81f91b53a6a965dd4276f3544 (diff) | |
| download | android_frameworks_rs-2cbfc4ca83ef045f004b52cd3a89934ae0318c12.tar.gz android_frameworks_rs-2cbfc4ca83ef045f004b52cd3a89934ae0318c12.tar.bz2 android_frameworks_rs-2cbfc4ca83ef045f004b52cd3a89934ae0318c12.zip | |
fix bug 3313505
Shader cache cleanup could occur in wrong thread
during RS teardown.
Change-Id: Iffed41de046147db30885e6815826e3b640020c1
Diffstat (limited to 'rsShaderCache.cpp')
| -rw-r--r-- | rsShaderCache.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/rsShaderCache.cpp b/rsShaderCache.cpp index 45384c98..b958021b 100644 --- a/rsShaderCache.cpp +++ b/rsShaderCache.cpp @@ -32,10 +32,7 @@ ShaderCache::ShaderCache() { } ShaderCache::~ShaderCache() { - for (uint32_t ct=0; ct < mEntries.size(); ct++) { - glDeleteProgram(mEntries[ct]->program); - free(mEntries[ct]); - } + cleanupAll(); } void ShaderCache::updateUniformArrayData(Context *rsc, Program *prog, uint32_t linkedID, @@ -251,5 +248,10 @@ void ShaderCache::cleanupFragment(uint32_t id) { } void ShaderCache::cleanupAll() { + for (uint32_t ct=0; ct < mEntries.size(); ct++) { + glDeleteProgram(mEntries[ct]->program); + free(mEntries[ct]); + } + mEntries.clear(); } |
