evas gl - glx - sety current to NULL on free of window or context

hunting a mem leak i found we dont nuke the current context when
freeing it or the window bound to the current context. fix this.
This commit is contained in:
Carsten Haitzler 2014-08-07 19:34:13 +09:00
parent 657d973858
commit 01cd90b6c3
1 changed files with 15 additions and 1 deletions

View File

@ -447,9 +447,18 @@ eng_window_free(Outbuf *gw)
context = EGL_NO_CONTEXT;
}
#else
if (gw->glxwin) glXDestroyWindow(gw->disp, gw->glxwin);
if (gw->glxwin)
{
glXMakeContextCurrent(gw->disp, 0, 0, gw->context);
glXDestroyWindow(gw->disp, gw->glxwin);
}
if (ref == 0)
{
if (!gw->glxwin)
{
if (glXGetCurrentContext() == gw->context)
glXMakeCurrent(gw->disp, 0, NULL);
}
if (context) glXDestroyContext(gw->disp, context);
if (rgba_context) glXDestroyContext(gw->disp, rgba_context);
context = 0;
@ -457,6 +466,11 @@ eng_window_free(Outbuf *gw)
fbconf = 0;
rgba_fbconf = 0;
}
else if (!gw->glxwin)
{
if (glXGetCurrentDrawable() == gw->win)
glXMakeCurrent(gw->disp, 0, gw->context);
}
#endif
free(gw);
}