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 *vert,
|
||||||
Evas_GL_Program_Source *frag,
|
Evas_GL_Program_Source *frag,
|
||||||
const char *name);
|
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);
|
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__, "");
|
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
|
||||||
glEnableVertexAttribArray(SHAD_COLOR);
|
glEnableVertexAttribArray(SHAD_COLOR);
|
||||||
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
|
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
|
||||||
|
|
||||||
evas_gl_common_shader_program_init(&(shared->shader.rect),
|
evas_gl_common_shader_program_init(&(shared->shader.rect),
|
||||||
&(shader_rect_vert_src),
|
&(shader_rect_vert_src),
|
||||||
&(shader_rect_frag_src),
|
&(shader_rect_frag_src),
|
||||||
|
@ -485,6 +485,17 @@ evas_gl_common_context_free(Evas_GL_Context *gc)
|
||||||
|
|
||||||
if (gc->shared->references == 0)
|
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)
|
while (gc->shared->images)
|
||||||
{
|
{
|
||||||
evas_gl_common_image_free(gc->shared->images->data);
|
evas_gl_common_image_free(gc->shared->images->data);
|
||||||
|
|
|
@ -492,3 +492,11 @@ evas_gl_common_shader_program_init(Evas_GL_Program *p,
|
||||||
return;
|
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]);
|
eglDestroySurface(gw->egl_disp, gw->egl_surface[0]);
|
||||||
if (win_count == 0)
|
if (win_count == 0)
|
||||||
{
|
{
|
||||||
if (context) eglDestroyContext(gw->disp, context);
|
if (context) eglDestroyContext(gw->egl_disp, context);
|
||||||
eglTerminate(gw->disp);
|
eglMakeCurrent(gw->egl_disp, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
|
||||||
|
eglTerminate(gw->egl_disp);
|
||||||
context = EGL_NO_CONTEXT;
|
context = EGL_NO_CONTEXT;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
|
Loading…
Reference in New Issue