Add proper disposing to colered triangle graphics example

This commit is contained in:
Mario Hüttel 2020-07-10 21:36:47 +02:00
parent c4291dcc20
commit 97ac18d3d2
1 changed files with 27 additions and 0 deletions

View File

@ -69,14 +69,41 @@ static void draw_with_model_matrix(ShimattaOpenglGraphics *self, mat4 m, mat4 n)
draw(self);
}
static void shimatta_opengl_colored_triangle_dispose(GObject *obj)
{
ShimattaOpenglColoredTriangle *self;
ShimattaOpenglColoredTrianglePrivate *priv;
self = SHIMATTA_OPENGL_COLORED_TRIANGLE(obj);
priv = shimatta_opengl_colored_triangle_get_instance_private(self);
if (priv->vao) {
glDeleteVertexArrays(1, &priv->vao);
priv->vao = 0;
}
if (priv->vbo) {
glDeleteBuffers(1, &priv->vbo);
priv->vbo = 0;
}
g_clear_object(&priv->prog);
G_OBJECT_CLASS(shimatta_opengl_colored_triangle_parent_class)->dispose(obj);
}
void shimatta_opengl_colored_triangle_class_init(ShimattaOpenglColoredTriangleClass *klass)
{
ShimattaOpenglGraphicsClass *gclass;
GObjectClass *oclass;
gclass = SHIMATTA_OPENGL_GRAPHICS_CLASS(klass);
oclass = G_OBJECT_CLASS(klass);
gclass->draw = draw;
gclass->realize = realize;
gclass->draw_with_model_matrix = draw_with_model_matrix;
oclass->dispose = shimatta_opengl_colored_triangle_dispose;
}
void shimatta_opengl_colored_triangle_init(ShimattaOpenglColoredTriangle *self)