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
This commit is contained in:
Carsten Haitzler 2014-10-28 20:09:33 +09:00
parent 782c896f5a
commit e164d14208
1 changed files with 7 additions and 8 deletions

View File

@ -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) ||