diff --git a/clutter/cogl/cogl/cogl-buffer.c b/clutter/cogl/cogl/cogl-buffer.c index a63e171f9..35234d9af 100644 --- a/clutter/cogl/cogl/cogl-buffer.c +++ b/clutter/cogl/cogl/cogl-buffer.c @@ -299,8 +299,15 @@ _cogl_buffer_initialize (CoglBuffer *buffer, void _cogl_buffer_fini (CoglBuffer *buffer) { + _COGL_GET_CONTEXT (ctx, NO_RETVAL); + g_return_if_fail (!(buffer->flags & COGL_BUFFER_FLAG_MAPPED)); g_return_if_fail (buffer->immutable_ref == 0); + + if (buffer->flags & COGL_BUFFER_FLAG_BUFFER_OBJECT) + GE( glDeleteBuffers (1, &buffer->gl_handle) ); + else + g_free (buffer->data); } /* OpenGL ES 1.1 and 2 have a GL_OES_mapbuffer extension that is able to map diff --git a/clutter/cogl/cogl/cogl-pixel-array.c b/clutter/cogl/cogl/cogl-pixel-array.c index 3f5e10a18..1ac9b08a8 100644 --- a/clutter/cogl/cogl/cogl-pixel-array.c +++ b/clutter/cogl/cogl/cogl-pixel-array.c @@ -147,8 +147,6 @@ _cogl_pixel_array_free (CoglPixelArray *buffer) /* parent's destructor */ _cogl_buffer_fini (COGL_BUFFER (buffer)); - GE( glDeleteBuffers (1, &(COGL_BUFFER (buffer)->gl_handle)) ); - g_slice_free (CoglPixelArray, buffer); }