Check GLEW functions exist before calling them
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6235
This commit is contained in:
parent
33385d0bb0
commit
fe415c4134
|
@ -67,7 +67,8 @@ CACHED_CONTAINER_GPU::~CACHED_CONTAINER_GPU()
|
|||
if( m_isMapped )
|
||||
Unmap();
|
||||
|
||||
glDeleteBuffers( 1, &m_glBufferHandle );
|
||||
if( glDeleteBuffers )
|
||||
glDeleteBuffers( 1, &m_glBufferHandle );
|
||||
}
|
||||
|
||||
|
||||
|
@ -75,6 +76,10 @@ void CACHED_CONTAINER_GPU::Map()
|
|||
{
|
||||
wxCHECK( !IsMapped(), /*void*/ );
|
||||
|
||||
// OpenGL version might suddenly stop being available in Windows when an RDP session is started
|
||||
if( !glBindBuffer )
|
||||
throw std::runtime_error( "OpenGL no longer available!" );
|
||||
|
||||
glBindBuffer( GL_ARRAY_BUFFER, m_glBufferHandle );
|
||||
m_vertices = static_cast<VERTEX*>( glMapBuffer( GL_ARRAY_BUFFER, GL_READ_WRITE ) );
|
||||
|
||||
|
|
|
@ -51,7 +51,9 @@ CACHED_CONTAINER_RAM::CACHED_CONTAINER_RAM( unsigned int aSize ) :
|
|||
|
||||
CACHED_CONTAINER_RAM::~CACHED_CONTAINER_RAM()
|
||||
{
|
||||
glDeleteBuffers( 1, &m_verticesBuffer );
|
||||
if( glDeleteBuffers )
|
||||
glDeleteBuffers( 1, &m_verticesBuffer );
|
||||
|
||||
free( m_vertices );
|
||||
}
|
||||
|
||||
|
|
|
@ -85,8 +85,11 @@ GPU_CACHED_MANAGER::~GPU_CACHED_MANAGER()
|
|||
{
|
||||
if( m_buffersInitialized )
|
||||
{
|
||||
glBindBuffer( GL_ARRAY_BUFFER, 0 );
|
||||
glDeleteBuffers( 1, &m_indicesBuffer );
|
||||
if( glBindBuffer )
|
||||
glBindBuffer( GL_ARRAY_BUFFER, 0 );
|
||||
|
||||
if( glDeleteBuffers )
|
||||
glDeleteBuffers( 1, &m_indicesBuffer );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -400,8 +400,11 @@ void OPENGL_COMPOSITOR::clean()
|
|||
|
||||
m_buffers.clear();
|
||||
|
||||
glDeleteFramebuffersEXT( 1, &m_mainFbo );
|
||||
glDeleteRenderbuffersEXT( 1, &m_depthBuffer );
|
||||
if( glDeleteFramebuffersEXT )
|
||||
glDeleteFramebuffersEXT( 1, &m_mainFbo );
|
||||
|
||||
if( glDeleteRenderbuffersEXT )
|
||||
glDeleteRenderbuffersEXT( 1, &m_depthBuffer );
|
||||
|
||||
m_initialized = false;
|
||||
}
|
||||
|
|
|
@ -59,20 +59,23 @@ SHADER::~SHADER()
|
|||
|
||||
if( isProgramCreated )
|
||||
{
|
||||
// Delete the shaders and the program
|
||||
for( std::deque<GLuint>::iterator it = shaderNumbers.begin();
|
||||
it != shaderNumbers.end(); ++it )
|
||||
if( glIsShader )
|
||||
{
|
||||
GLuint shader = *it;
|
||||
|
||||
if( glIsShader( shader ) )
|
||||
// Delete the shaders and the program
|
||||
for( std::deque<GLuint>::iterator it = shaderNumbers.begin(); it != shaderNumbers.end();
|
||||
++it )
|
||||
{
|
||||
glDetachShader( programNumber, shader );
|
||||
glDeleteShader( shader );
|
||||
}
|
||||
}
|
||||
GLuint shader = *it;
|
||||
|
||||
glDeleteProgram( programNumber );
|
||||
if( glIsShader( shader ) )
|
||||
{
|
||||
glDetachShader( programNumber, shader );
|
||||
glDeleteShader( shader );
|
||||
}
|
||||
}
|
||||
|
||||
glDeleteProgram( programNumber );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue