forked from enlightenment/efl
evas: avoid unecessary Eina_Cow GC during image destruction.
If the stretch zone are NULL to start with, there is no reason to modify them and this should avoid us a trip to the GC. Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de> Differential Revision: https://phab.enlightenment.org/D10816
This commit is contained in:
parent
119cb085fa
commit
939b0f1a9c
|
@ -753,18 +753,22 @@ _efl_canvas_image_internal_efl_gfx_image_stretch_region_set(Eo *eo_obj, Evas_Ima
|
||||||
// we do change it, we have to make sure nobody is accessing them anymore by
|
// we do change it, we have to make sure nobody is accessing them anymore by
|
||||||
// blocking rendering.
|
// blocking rendering.
|
||||||
evas_object_async_block(obj);
|
evas_object_async_block(obj);
|
||||||
EINA_COW_IMAGE_STATE_WRITE_BEGIN(pd, state_write)
|
if (pd->cur->stretch.horizontal.region ||
|
||||||
{
|
pd->cur->stretch.vertical.region)
|
||||||
if (state_write->free_stretch) free(state_write->stretch.horizontal.region);
|
{
|
||||||
state_write->stretch.horizontal.region = NULL;
|
EINA_COW_IMAGE_STATE_WRITE_BEGIN(pd, state_write)
|
||||||
|
{
|
||||||
|
if (state_write->free_stretch) free(state_write->stretch.horizontal.region);
|
||||||
|
state_write->stretch.horizontal.region = NULL;
|
||||||
|
|
||||||
if (state_write->free_stretch) free(state_write->stretch.vertical.region);
|
if (state_write->free_stretch) free(state_write->stretch.vertical.region);
|
||||||
state_write->stretch.vertical.region = NULL;
|
state_write->stretch.vertical.region = NULL;
|
||||||
|
|
||||||
state_write->free_stretch = EINA_FALSE;
|
state_write->free_stretch = EINA_FALSE;
|
||||||
state_write->stretch_loaded = EINA_FALSE;
|
state_write->stretch_loaded = EINA_FALSE;
|
||||||
}
|
}
|
||||||
EINA_COW_IMAGE_STATE_WRITE_END(pd, state_write);
|
EINA_COW_IMAGE_STATE_WRITE_END(pd, state_write);
|
||||||
|
}
|
||||||
|
|
||||||
if (!horizontal && !vertical) return 0;
|
if (!horizontal && !vertical) return 0;
|
||||||
if (!horizontal || !vertical) goto on_error;
|
if (!horizontal || !vertical) goto on_error;
|
||||||
|
|
Loading…
Reference in New Issue