diff options
| author | pavelkproductengine <pavelkproductengine@lindenlab.com> | 2016-03-21 18:36:50 +0200 |
|---|---|---|
| committer | pavelkproductengine <pavelkproductengine@lindenlab.com> | 2016-03-21 18:36:50 +0200 |
| commit | 5bbf263c293286395730d969e0b9beec9d830f48 (patch) | |
| tree | 22b81dea68f728ec122de561cb8d77fe4fb14d94 /indra/llrender/llglslshader.cpp | |
| parent | 824deea265614b649e074d4702e8f4bf071cef68 (diff) | |
| parent | 4aae7b51616c0963af4668442bdb5bfaba8c5044 (diff) | |
Merge
Diffstat (limited to 'indra/llrender/llglslshader.cpp')
| -rwxr-xr-x | indra/llrender/llglslshader.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp index 0f260674ed..52b8de8365 100755 --- a/indra/llrender/llglslshader.cpp +++ b/indra/llrender/llglslshader.cpp @@ -325,14 +325,20 @@ LLGLSLShader::~LLGLSLShader() void LLGLSLShader::unload() { + mShaderFiles.clear(); + mDefines.clear(); + + unloadInternal(); +} + +void LLGLSLShader::unloadInternal() +{ sInstances.erase(this); stop_glerror(); mAttribute.clear(); mTexture.clear(); mUniform.clear(); - mShaderFiles.clear(); - mDefines.clear(); if (mProgramObject) { @@ -354,13 +360,13 @@ void LLGLSLShader::unload() mProgramObject = 0; } - + if (mTimerQuery) { glDeleteQueriesARB(1, &mTimerQuery); mTimerQuery = 0; } - + if (mSamplesQuery) { glDeleteQueriesARB(1, &mSamplesQuery); @@ -369,7 +375,7 @@ void LLGLSLShader::unload() //hack to make apple not complain glGetError(); - + stop_glerror(); } @@ -378,6 +384,8 @@ BOOL LLGLSLShader::createShader(std::vector<LLStaticHashedString> * attributes, U32 varying_count, const char** varyings) { + unloadInternal(); + sInstances.insert(this); //reloading, reset matrix hash values |
