forked from enlightenment/efl
1. clean up egl better on context shutdown
2. clean up pprograms/shaders on shared shutdown SVN revision: 47386
This commit is contained in:
parent
8126debb06
commit
3cf6e2fde7
|
@ -324,6 +324,7 @@ void evas_gl_common_shader_program_init(Evas_GL_Program *p,
|
|||
Evas_GL_Program_Source *vert,
|
||||
Evas_GL_Program_Source *frag,
|
||||
const char *name);
|
||||
void evas_gl_common_shader_program_shutdown(Evas_GL_Program *p);
|
||||
|
||||
void evas_gl_common_rect_draw(Evas_GL_Context *gc, int x, int y, int w, int h);
|
||||
|
||||
|
|
|
@ -393,7 +393,7 @@ evas_gl_common_context_new(void)
|
|||
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
|
||||
glEnableVertexAttribArray(SHAD_COLOR);
|
||||
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
|
||||
|
||||
|
||||
evas_gl_common_shader_program_init(&(shared->shader.rect),
|
||||
&(shader_rect_vert_src),
|
||||
&(shader_rect_frag_src),
|
||||
|
@ -485,6 +485,17 @@ evas_gl_common_context_free(Evas_GL_Context *gc)
|
|||
|
||||
if (gc->shared->references == 0)
|
||||
{
|
||||
evas_gl_common_shader_program_shutdown(&(gc->shared->shader.rect));
|
||||
evas_gl_common_shader_program_shutdown(&(gc->shared->shader.font));
|
||||
evas_gl_common_shader_program_shutdown(&(gc->shared->shader.img));
|
||||
evas_gl_common_shader_program_shutdown(&(gc->shared->shader.img_nomul));
|
||||
evas_gl_common_shader_program_shutdown(&(gc->shared->shader.img_bgra));
|
||||
evas_gl_common_shader_program_shutdown(&(gc->shared->shader.img_bgra_nomul));
|
||||
evas_gl_common_shader_program_shutdown(&(gc->shared->shader.yuv));
|
||||
evas_gl_common_shader_program_shutdown(&(gc->shared->shader.yuv_nomul));
|
||||
evas_gl_common_shader_program_shutdown(&(gc->shared->shader.tex));
|
||||
evas_gl_common_shader_program_shutdown(&(gc->shared->shader.tex_nomul));
|
||||
|
||||
while (gc->shared->images)
|
||||
{
|
||||
evas_gl_common_image_free(gc->shared->images->data);
|
||||
|
|
|
@ -492,3 +492,11 @@ evas_gl_common_shader_program_init(Evas_GL_Program *p,
|
|||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
evas_gl_common_shader_program_shutdown(Evas_GL_Program *p)
|
||||
{
|
||||
glDeleteShader(p->vert);
|
||||
glDeleteShader(p->frag);
|
||||
glDeleteProgram(p->prog);
|
||||
}
|
||||
|
|
|
@ -398,8 +398,9 @@ eng_window_free(Evas_GL_X11_Window *gw)
|
|||
eglDestroySurface(gw->egl_disp, gw->egl_surface[0]);
|
||||
if (win_count == 0)
|
||||
{
|
||||
if (context) eglDestroyContext(gw->disp, context);
|
||||
eglTerminate(gw->disp);
|
||||
if (context) eglDestroyContext(gw->egl_disp, context);
|
||||
eglMakeCurrent(gw->egl_disp, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
|
||||
eglTerminate(gw->egl_disp);
|
||||
context = EGL_NO_CONTEXT;
|
||||
}
|
||||
#else
|
||||
|
|
Loading…
Reference in New Issue