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)

-- 


Reply via email to