ecere/gfx/drivers/OpenGL: Rebinding 0 buffers on making context current
authorJerome St-Louis <jerome@ecere.com>
Tue, 8 Sep 2015 20:58:27 +0000 (04:58 +0800)
committerJerome St-Louis <jerome@ecere.com>
Thu, 15 Oct 2015 00:26:37 +0000 (20:26 -0400)
- Solved crashes avoiding duplicate bind, when loadGraphics occured, coming back for render and skipping BindBuffer call
- e.g. crashed in Ecere Chess in GLES and SHADERS mode

ecere/src/gfx/drivers/OpenGLDisplayDriver.ec

index 0f58cad..1d57566 100644 (file)
@@ -666,6 +666,8 @@ class OpenGLDisplayDriver : DisplayDriver
       //previous = oglSystem.glContext;
    #endif
 #endif
+      GLABBindBuffer(GL_ARRAY_BUFFER, 0);
+      GLABBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
       return true;
    }
 
@@ -697,6 +699,8 @@ class OpenGLDisplayDriver : DisplayDriver
       glXMakeCurrent(xGlobalDisplay, (GLXDrawable)display.window, oglDisplay.glContext);
    #endif
 #endif
+      GLABBindBuffer(GL_ARRAY_BUFFER, 0);
+      GLABBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
       return true;
    }
 
@@ -1083,6 +1087,8 @@ class OpenGLDisplayDriver : DisplayDriver
          loadShaders("<:ecere>shaders/fixed.vertex", "<:ecere>shaders/fixed.frag");
          #endif
          glEnableClientState(GL_VERTEX_ARRAY);
+         GLABBindBuffer(GL_ARRAY_BUFFER, 0);
+         GLABBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
 
 #if defined(__WIN32__)
          if(glBlendFuncSeparate)