forked from enlightenment/efl
evas: prevent double tilebuf creation/destruction during window resize.
This commit is contained in:
parent
600a5fa76c
commit
8ffc0f2b9e
|
@ -810,20 +810,12 @@ eng_update(void *engine EINA_UNUSED, void *data, void *info, unsigned int w, uns
|
||||||
w, h,
|
w, h,
|
||||||
info->info.rotation,
|
info->info.rotation,
|
||||||
info->info.depth);
|
info->info.depth);
|
||||||
|
evas_render_engine_software_generic_update(&re->generic.software,
|
||||||
|
re->generic.software.ob,
|
||||||
|
w, h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (re->generic.software.tb)
|
|
||||||
evas_common_tilebuf_free(re->generic.software.tb);
|
|
||||||
re->generic.software.tb =
|
|
||||||
evas_common_tilebuf_new(w, h);
|
|
||||||
if (re->generic.software.tb)
|
|
||||||
evas_common_tilebuf_set_tile_size(re->generic.software.tb,
|
|
||||||
TILESIZE, TILESIZE);
|
|
||||||
|
|
||||||
if (re->generic.software.tb)
|
|
||||||
evas_render_engine_software_generic_tile_strict_set(&re->generic.software, EINA_TRUE);
|
|
||||||
|
|
||||||
evas_outbuf_use(eng_get_ob(re));
|
evas_outbuf_use(eng_get_ob(re));
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -1060,16 +1060,6 @@ eng_update(void *engine EINA_UNUSED, void *data, void *in, unsigned int w, unsig
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (re->generic.software.tb)
|
|
||||||
evas_common_tilebuf_free(re->generic.software.tb);
|
|
||||||
re->generic.software.tb = evas_common_tilebuf_new(w, h);
|
|
||||||
if (re->generic.software.tb)
|
|
||||||
evas_common_tilebuf_set_tile_size(re->generic.software.tb,
|
|
||||||
TILESIZE, TILESIZE);
|
|
||||||
|
|
||||||
if (re->generic.software.tb)
|
|
||||||
evas_render_engine_software_generic_tile_strict_set(&re->generic.software, EINA_TRUE);
|
|
||||||
|
|
||||||
evas_outbuf_use(eng_get_ob(re));
|
evas_outbuf_use(eng_get_ob(re));
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -1736,10 +1736,8 @@ eng_update(void *engine EINA_UNUSED, void *data, void *in, unsigned int w, unsig
|
||||||
(info->msaa_bits != eng_get_ob(re)->msaa_bits) ||
|
(info->msaa_bits != eng_get_ob(re)->msaa_bits) ||
|
||||||
(info->info.destination_alpha != eng_get_ob(re)->alpha))
|
(info->info.destination_alpha != eng_get_ob(re)->alpha))
|
||||||
{
|
{
|
||||||
Outbuf *ob, *ob_old;
|
Outbuf *ob;
|
||||||
|
|
||||||
ob_old = re->generic.software.ob;
|
|
||||||
re->generic.software.ob = NULL;
|
|
||||||
gl_wins--;
|
gl_wins--;
|
||||||
|
|
||||||
ob = eng_window_new(info,
|
ob = eng_window_new(info,
|
||||||
|
@ -1757,16 +1755,11 @@ eng_update(void *engine EINA_UNUSED, void *data, void *in, unsigned int w, unsig
|
||||||
info->depth_bits,
|
info->depth_bits,
|
||||||
info->stencil_bits,
|
info->stencil_bits,
|
||||||
info->msaa_bits);
|
info->msaa_bits);
|
||||||
if (!ob)
|
if (!ob) return 0;
|
||||||
{
|
|
||||||
if (ob_old) eng_window_free(ob_old);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
eng_window_use(ob);
|
eng_window_use(ob);
|
||||||
if (ob_old) eng_window_free(ob_old);
|
evas_render_engine_software_generic_update(&re->generic.software,
|
||||||
evas_render_engine_software_generic_update(&re->generic.software, ob,
|
ob, w, h);
|
||||||
w, h);
|
|
||||||
gl_wins++;
|
gl_wins++;
|
||||||
}
|
}
|
||||||
else if ((eng_get_ob(re)->w != w) ||
|
else if ((eng_get_ob(re)->w != w) ||
|
||||||
|
@ -1774,12 +1767,9 @@ eng_update(void *engine EINA_UNUSED, void *data, void *in, unsigned int w, unsig
|
||||||
(eng_get_ob(re)->info->info.rotation != eng_get_ob(re)->rot))
|
(eng_get_ob(re)->info->info.rotation != eng_get_ob(re)->rot))
|
||||||
{
|
{
|
||||||
eng_outbuf_reconfigure(eng_get_ob(re), w, h, eng_get_ob(re)->info->info.rotation, 0);
|
eng_outbuf_reconfigure(eng_get_ob(re), w, h, eng_get_ob(re)->info->info.rotation, 0);
|
||||||
if (re->generic.software.tb)
|
evas_render_engine_software_generic_update(&re->generic.software,
|
||||||
evas_common_tilebuf_free(re->generic.software.tb);
|
re->generic.software.ob,
|
||||||
re->generic.software.tb = evas_common_tilebuf_new(w, h);
|
w, h);
|
||||||
if (re->generic.software.tb)
|
|
||||||
evas_common_tilebuf_set_tile_size(re->generic.software.tb,
|
|
||||||
TILESIZE, TILESIZE);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -722,8 +722,6 @@ eng_update(void *engine EINA_UNUSED, void *data, void *info, unsigned int w, uns
|
||||||
|
|
||||||
eng_window_use(ob);
|
eng_window_use(ob);
|
||||||
|
|
||||||
evas_render_engine_software_generic_update(&re->generic.software,
|
|
||||||
ob, w, h);
|
|
||||||
gl_wins++;
|
gl_wins++;
|
||||||
}
|
}
|
||||||
else if ((ob->w != (int)w) || (ob->h != (int)h) ||
|
else if ((ob->w != (int)w) || (ob->h != (int)h) ||
|
||||||
|
@ -736,18 +734,8 @@ eng_update(void *engine EINA_UNUSED, void *data, void *info, unsigned int w, uns
|
||||||
|
|
||||||
if (!eng_get_ob(re)) goto ob_err;
|
if (!eng_get_ob(re)) goto ob_err;
|
||||||
|
|
||||||
if (re->generic.software.tb)
|
evas_render_engine_software_generic_update(&re->generic.software,
|
||||||
evas_common_tilebuf_free(re->generic.software.tb);
|
ob, w, h);
|
||||||
re->generic.software.tb = evas_common_tilebuf_new(w, h);
|
|
||||||
|
|
||||||
if (re->generic.software.tb)
|
|
||||||
{
|
|
||||||
evas_common_tilebuf_set_tile_size(re->generic.software.tb,
|
|
||||||
TILESIZE, TILESIZE);
|
|
||||||
evas_render_engine_software_generic_tile_strict_set
|
|
||||||
(&re->generic.software, EINA_TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
eng_window_use(eng_get_ob(re));
|
eng_window_use(eng_get_ob(re));
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|
Loading…
Reference in New Issue