From f20b010d4137961f080f53a43fb4c590182d96fb Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Thu, 29 Jul 2010 06:21:51 +0000 Subject: [PATCH] now work? SVN revision: 50635 --- legacy/evas/src/modules/engines/gl_x11/evas_engine.c | 4 ++-- legacy/evas/src/modules/engines/gl_x11/evas_x_main.c | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/legacy/evas/src/modules/engines/gl_x11/evas_engine.c b/legacy/evas/src/modules/engines/gl_x11/evas_engine.c index dcb4d49802..5ca45f3b30 100644 --- a/legacy/evas/src/modules/engines/gl_x11/evas_engine.c +++ b/legacy/evas/src/modules/engines/gl_x11/evas_engine.c @@ -330,7 +330,7 @@ eng_setup(Evas *e, void *in) if (re->win) { - re->win->gl_context->shared->references++; + re->win->gl_context->references++; eng_window_free(re->win); inc = 1; gl_wins--; @@ -348,7 +348,7 @@ eng_setup(Evas *e, void *in) info->info.rotation); if (re->win) gl_wins++; if ((re->win) && (inc)) - re->win->gl_context->shared->references--; + re->win->gl_context->references--; } else if ((re->win->w != e->output.w) || (re->win->h != e->output.h)) diff --git a/legacy/evas/src/modules/engines/gl_x11/evas_x_main.c b/legacy/evas/src/modules/engines/gl_x11/evas_x_main.c index bd67a48670..02cceb93b6 100644 --- a/legacy/evas/src/modules/engines/gl_x11/evas_x_main.c +++ b/legacy/evas/src/modules/engines/gl_x11/evas_x_main.c @@ -395,14 +395,19 @@ eng_window_new(Display *disp, void eng_window_free(Evas_GL_X11_Window *gw) { + int ref = 0; win_count--; eng_window_use(gw); if (gw == _evas_gl_x11_window) _evas_gl_x11_window = NULL; - if (gw->gl_context) evas_gl_common_context_free(gw->gl_context); + if (gw->gl_context) + { + ref = gw->gl_context->references; + evas_gl_common_context_free(gw->gl_context); + } #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) if (gw->egl_surface[0] != EGL_NO_SURFACE) eglDestroySurface(gw->egl_disp, gw->egl_surface[0]); - if (win_count == 0) + if (ref == 0) { if (context) eglDestroyContext(gw->egl_disp, context); eglTerminate(gw->egl_disp); @@ -411,7 +416,7 @@ eng_window_free(Evas_GL_X11_Window *gw) eglMakeCurrent(gw->egl_disp, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); #else if (gw->glxwin) glXDestroyWindow(gw->disp, gw->glxwin); - if (win_count == 0) + if (ref == 0) { if (context) glXDestroyContext(gw->disp, context); if (rgba_context) glXDestroyContext(gw->disp, rgba_context);