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>
Tue, 22 Dec 2015 06:45:23 +0000 (01:45 -0500)
- 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 0adae0f..c83a824 100644 (file)
@@ -1656,6 +1656,8 @@ class OpenGLDisplayDriver : DisplayDriver
       //previous = oglSystem.glContext;
    #endif
 #endif
+      GLBindBuffer(GL_ARRAY_BUFFER, 0);
+      GLBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
       return true;
    }
 
@@ -1687,6 +1689,8 @@ class OpenGLDisplayDriver : DisplayDriver
       glXMakeCurrent(xGlobalDisplay, (GLXDrawable)display.window, oglDisplay.glContext);
    #endif
 #endif
+      GLBindBuffer(GL_ARRAY_BUFFER, 0);
+      GLBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
       return true;
    }
 
@@ -2063,6 +2067,9 @@ class OpenGLDisplayDriver : DisplayDriver
 #endif
       if(result)
       {
+         GLBindBuffer(GL_ARRAY_BUFFER, 0);
+         GLBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+
 #if defined(__WIN32__)
          if(glBlendFuncSeparate)
             glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);