mirror of
https://github.com/Open-Cascade-SAS/OCCT.git
synced 2026-06-27 07:27:11 +08:00
0024297: OpenGl_Texture::Release() might call OpenGL functions without active context
Add check to Release() method of OpenGl_Texture, OpenGl_ShaderObject, OpenGl_ShaderProgram
This commit is contained in:
@@ -139,7 +139,8 @@ void OpenGl_ShaderObject::Release (const OpenGl_Context* theCtx)
|
||||
Standard_ASSERT_RETURN (theCtx != NULL,
|
||||
"OpenGl_ShaderObject destroyed without GL context! Possible GPU memory leakage...",);
|
||||
|
||||
if (theCtx->core20 != NULL)
|
||||
if (theCtx->core20 != NULL
|
||||
&& theCtx->IsValid())
|
||||
{
|
||||
theCtx->core20->glDeleteShader (myShaderID);
|
||||
}
|
||||
|
||||
@@ -1120,7 +1120,8 @@ void OpenGl_ShaderProgram::Release (const OpenGl_Context* theCtx)
|
||||
anIter.ChangeValue().Nullify();
|
||||
}
|
||||
|
||||
if (theCtx->core20 != NULL)
|
||||
if (theCtx->core20 != NULL
|
||||
&& theCtx->IsValid())
|
||||
{
|
||||
theCtx->core20->glDeleteProgram (myProgramID);
|
||||
}
|
||||
|
||||
@@ -111,7 +111,10 @@ void OpenGl_Texture::Release (const OpenGl_Context* theGlCtx)
|
||||
Standard_ASSERT_RETURN (theGlCtx != NULL,
|
||||
"OpenGl_Texture destroyed without GL context! Possible GPU memory leakage...",);
|
||||
|
||||
glDeleteTextures (1, &myTextureId);
|
||||
if (theGlCtx->IsValid())
|
||||
{
|
||||
glDeleteTextures (1, &myTextureId);
|
||||
}
|
||||
myTextureId = NO_TEXTURE;
|
||||
mySizeX = mySizeY = 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user