From cc8b3fc52e22aa007cf4fef69ccd526bb86df7a1 Mon Sep 17 00:00:00 2001 From: Jerome St-Louis Date: Sat, 16 Jan 2016 03:18:01 -0500 Subject: [PATCH] ecere/gfx/newFonts/drawManager: Avoiding crashes on VBO not available --- ecere/src/gfx/newFonts/drawManager.ec | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/ecere/src/gfx/newFonts/drawManager.ec b/ecere/src/gfx/newFonts/drawManager.ec index 85c9441..5f88f6b 100644 --- a/ecere/src/gfx/newFonts/drawManager.ec +++ b/ecere/src/gfx/newFonts/drawManager.ec @@ -1165,9 +1165,12 @@ public: drawBuffer->glType = GL_FLOAT; drawBuffer->vertexCount = 0; drawBuffer->vertexAlloc = DM_CONTEXT_DRAW_BUFFER_VERTEX_ALLOC; - glGenBuffers( 1, &drawBuffer->vbo ); - glBindBuffer( GL_ARRAY_BUFFER, drawBuffer->vbo ); - glBufferData( GL_ARRAY_BUFFER, drawBuffer->vertexAlloc * vertexSize, 0, GL_DYNAMIC_DRAW ); + if(vboAvailable) + { + glGenBuffers( 1, &drawBuffer->vbo ); + glBindBuffer( GL_ARRAY_BUFFER, drawBuffer->vbo ); + glBufferData( GL_ARRAY_BUFFER, drawBuffer->vertexAlloc * vertexSize, 0, GL_DYNAMIC_DRAW ); + } drawBuffer->vertexBuffer = new byte[drawBuffer->vertexAlloc * vertexSize]; } @@ -1184,7 +1187,8 @@ public: for( i = 0 ; i < DM_CONTEXT_DRAW_BUFFER_COUNT ; i++ ) { DMDrawBuffer *db = &drawBuffer[i]; - glDeleteBuffers( 1, &db->vbo ); + if(db->vbo) + glDeleteBuffers( 1, &db->vbo ); delete db->vertexBuffer; } @@ -1374,7 +1378,8 @@ public: else flushDrawImages( ); - glBindBuffer( GL_ARRAY_BUFFER, 0 ); + if(vboAvailable) + glBindBuffer( GL_ARRAY_BUFFER, 0 ); glabCurArrayBuffer = 0; if( !flags.prehistoricOpenGL ) glUseProgram( prevProgram ); -- 1.8.3.1