seoz pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=d4a3b9a233ed388e39bc437f3e28a05c28296160
commit d4a3b9a233ed388e39bc437f3e28a05c28296160 Author: Daniel Juyung Seo <[email protected]> Date: Sun Jan 12 17:22:40 2014 +0900 ecore_evas_x: Call _ecore_evas_x_sync_clear() after _ecore_evas_x_gl_window_new() to ensure eglDestroySurface is called before XDestroyWindow call. In case of gl engine, eglDestroySurface should be called before XDestroyWindow. Special thanks to Changwoo Kim <[email protected]> for the idea. --- src/modules/ecore_evas/engines/x/ecore_evas_x.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/modules/ecore_evas/engines/x/ecore_evas_x.c b/src/modules/ecore_evas/engines/x/ecore_evas_x.c index 0019128..979815f 100644 --- a/src/modules/ecore_evas/engines/x/ecore_evas_x.c +++ b/src/modules/ecore_evas/engines/x/ecore_evas_x.c @@ -2371,6 +2371,7 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha) if (ee->alpha == alpha) return; Evas_Engine_Info_GL_X11 *einfo; + Ecore_Window prev_win; einfo = (Evas_Engine_Info_GL_X11 *)evas_engine_info_get(ee->evas); if (!einfo) return; @@ -2380,8 +2381,7 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha) ee->shaped = 0; ee->alpha = alpha; _ecore_evas_x_sync_clear(ee); - ecore_x_window_free(ee->prop.window); - ecore_event_window_unregister(ee->prop.window); + prev_win = ee->prop.window; ee->prop.window = 0; einfo->info.destination_alpha = alpha; @@ -2416,6 +2416,9 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha) ee->prop.override, ee->alpha, NULL); } + ecore_x_window_free(prev_win); + ecore_event_window_unregister(prev_win); + if (!ee->prop.window) return; /* if (ee->alpha) --
