From b44e81d9c3c7a1597ba825997622d93033025aab Mon Sep 17 00:00:00 2001 From: wm4 Date: Tue, 15 Aug 2017 18:45:22 +0200 Subject: vo_opengl: fix dangling pointers when VAOs are not available This is for legacy GL: if VAOs are not available, the helper has to specify vertex attributes again on every rendering. gl_vao_init() keeps the vertex array for this purpose. Unfortunately, a temporary argument was passed to the function, instead of the permanent copy. Also, it didn't use num_entries (instead expected the array being terminated by a {0} entry). Fix that source code indentation too. --- video/out/opengl/gl_utils.c | 4 ++-- video/out/opengl/ra_gl.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/video/out/opengl/gl_utils.c b/video/out/opengl/gl_utils.c index ab34eea2e5..6c0537febc 100644 --- a/video/out/opengl/gl_utils.c +++ b/video/out/opengl/gl_utils.c @@ -139,7 +139,7 @@ static void gl_vao_enable_attribs(struct gl_vao *vao) GLenum type = 0; bool normalized = false; switch (e->type) { - case RA_VARTYPE_INT: + case RA_VARTYPE_INT: type = GL_INT; break; case RA_VARTYPE_FLOAT: @@ -221,7 +221,7 @@ static void gl_vao_unbind(struct gl_vao *vao) if (gl->BindVertexArray) { gl->BindVertexArray(0); } else { - for (int n = 0; vao->entries[n].name; n++) + for (int n = 0; n < vao->num_entries; n++) gl->DisableVertexAttribArray(n); } } diff --git a/video/out/opengl/ra_gl.c b/video/out/opengl/ra_gl.c index 5f8c525f5b..7dd3a43d13 100644 --- a/video/out/opengl/ra_gl.c +++ b/video/out/opengl/ra_gl.c @@ -810,8 +810,8 @@ static struct ra_renderpass *gl_renderpass_create(struct ra *ra, } gl->UseProgram(0); - gl_vao_init(&pass_gl->vao, gl, params->vertex_stride, params->vertex_attribs, - params->num_vertex_attribs); + gl_vao_init(&pass_gl->vao, gl, pass->params.vertex_stride, + pass->params.vertex_attribs, pass->params.num_vertex_attribs); return pass; } -- cgit v1.2.3