raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e164d14208637b4f9d19457f59cf6edaa2935298
commit e164d14208637b4f9d19457f59cf6edaa2935298 Author: Carsten Haitzler (Rasterman) <[email protected]> Date: Tue Oct 28 20:09:33 2014 +0900 evas - fix new issue with segv when switching to alpha win with gl evas gl window was freed before new one was created getting shared ctx to 0 refcount thus freeing everything there - BAD. fix. new issue in git, not from release --- src/modules/evas/engines/gl_x11/evas_engine.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/modules/evas/engines/gl_x11/evas_engine.c b/src/modules/evas/engines/gl_x11/evas_engine.c index 1fe13be..a9f03eb 100644 --- a/src/modules/evas/engines/gl_x11/evas_engine.c +++ b/src/modules/evas/engines/gl_x11/evas_engine.c @@ -1433,9 +1433,9 @@ eng_setup(Evas *eo_e, void *in) (info->info.depth != eng_get_ob(re)->depth) || (info->info.destination_alpha != eng_get_ob(re)->alpha)) { - Outbuf *ob; + Outbuf *ob, *ob_old; - eng_window_free(eng_get_ob(re)); + ob_old = re->generic.software.ob; re->generic.software.ob = NULL; gl_wins--; @@ -1453,17 +1453,16 @@ eng_setup(Evas *eo_e, void *in) swap_mode); if (!ob) { + if (ob_old) eng_window_free(ob_old); free(re); return 0; } eng_window_use(ob); - if (ob) - { - evas_render_engine_software_generic_update(&re->generic.software, ob, - e->output.w, e->output.h); + if (ob_old) eng_window_free(ob_old); + evas_render_engine_software_generic_update(&re->generic.software, ob, + e->output.w, e->output.h); - gl_wins++; - } + gl_wins++; } else if ((eng_get_ob(re)->w != e->output.w) || (eng_get_ob(re)->h != e->output.h) || --
