evas - fix leak because cutouts_fre .. doesnt free - it just resets to 0
this works with7166e6b859
and fixes a leak added because ... free does not free! evas_common_draw_context_cutouts_real_free(0 now actually frees the rects, but evas_common_draw_context_cutouts_free() before did not. @fix (follow on from7166e6b859
)
This commit is contained in:
parent
e438bd09b2
commit
b132ce65ec
|
@ -23,6 +23,7 @@ EAPI void evas_common_draw_context_set_multiplier (RGBA_D
|
|||
EAPI void evas_common_draw_context_unset_multiplier (RGBA_Draw_Context *dc);
|
||||
EAPI Cutout_Rects *evas_common_draw_context_cutouts_new (void);
|
||||
EAPI void evas_common_draw_context_cutouts_free (Cutout_Rects* rects);
|
||||
EAPI void evas_common_draw_context_cutouts_real_free (Cutout_Rects* rects);
|
||||
EAPI void evas_common_draw_context_cutouts_del (Cutout_Rects* rects, int idx);
|
||||
EAPI void evas_common_draw_context_add_cutout (RGBA_Draw_Context *dc, int x, int y, int w, int h);
|
||||
EAPI void evas_common_draw_context_clear_cutouts (RGBA_Draw_Context *dc);
|
||||
|
|
|
@ -35,6 +35,14 @@ evas_common_draw_context_cutouts_free(Cutout_Rects* rects)
|
|||
rects->last_add.w = 0;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
evas_common_draw_context_cutouts_real_free(Cutout_Rects* rects)
|
||||
{
|
||||
if (!rects) return;
|
||||
free(rects->rects);
|
||||
free(rects);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
evas_common_draw_context_cutouts_del(Cutout_Rects* rects, int idx)
|
||||
{
|
||||
|
|
|
@ -421,11 +421,12 @@ evas_common_font_draw_cb(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, E
|
|||
rects_used++;
|
||||
if (rects_used >= 4096)
|
||||
{
|
||||
evas_common_draw_context_cutouts_free(rects);
|
||||
evas_common_draw_context_cutouts_real_free(rects);
|
||||
rects = NULL;
|
||||
rects_used = 0;
|
||||
}
|
||||
#else
|
||||
evas_common_draw_context_cutouts_free(rects);
|
||||
evas_common_draw_context_cutouts_real_free(rects);
|
||||
#endif
|
||||
}
|
||||
dc->clip.use = c; dc->clip.x = cx; dc->clip.y = cy; dc->clip.w = cw; dc->clip.h = ch;
|
||||
|
|
|
@ -793,11 +793,12 @@ evas_common_map_rgba_cb(RGBA_Image *src, RGBA_Image *dst,
|
|||
rects_used++;
|
||||
if (rects_used >= 4096)
|
||||
{
|
||||
evas_common_draw_context_cutouts_free(rects);
|
||||
evas_common_draw_context_cutouts_real_free(rects);
|
||||
rects = NULL;
|
||||
rects_used = 0;
|
||||
}
|
||||
#else
|
||||
evas_common_draw_context_cutouts_free(rects);
|
||||
evas_common_draw_context_cutouts_real_free(rects);
|
||||
#endif
|
||||
/* restore clip info */
|
||||
dc->clip.use = c; dc->clip.x = cx; dc->clip.y = cy; dc->clip.w = cw; dc->clip.h = ch;
|
||||
|
@ -857,11 +858,12 @@ evas_common_map_thread_rgba_cb(RGBA_Image *src, RGBA_Image *dst, RGBA_Draw_Conte
|
|||
rects_used++;
|
||||
if (rects_used >= 4096)
|
||||
{
|
||||
evas_common_draw_context_cutouts_free(rects);
|
||||
evas_common_draw_context_cutouts_real_free(rects);
|
||||
rects = NULL;
|
||||
rects_used = 0;
|
||||
}
|
||||
#else
|
||||
evas_common_draw_context_cutouts_free(rects);
|
||||
evas_common_draw_context_cutouts_real_free(rects);
|
||||
#endif
|
||||
/* restore clip info */
|
||||
dc->clip.use = c; dc->clip.x = cx; dc->clip.y = cy; dc->clip.w = cw; dc->clip.h = ch;
|
||||
|
|
|
@ -51,11 +51,12 @@ evas_common_rectangle_draw_cb(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int
|
|||
rects_used++;
|
||||
if (rects_used >= 4096)
|
||||
{
|
||||
evas_common_draw_context_cutouts_free(rects);
|
||||
evas_common_draw_context_cutouts_real_free(rects);
|
||||
rects = NULL;
|
||||
rects_used = 0;
|
||||
}
|
||||
#else
|
||||
evas_common_draw_context_cutouts_free(rects);
|
||||
evas_common_draw_context_cutouts_real_free(rects);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
|
@ -89,11 +89,12 @@ evas_common_scale_rgba_in_to_out_clip_cb(RGBA_Image *src, RGBA_Image *dst,
|
|||
rects_used++;
|
||||
if (rects_used >= 4096)
|
||||
{
|
||||
evas_common_draw_context_cutouts_free(rects);
|
||||
evas_common_draw_context_cutouts_real_free(rects);
|
||||
rects = NULL;
|
||||
rects_used = 0;
|
||||
}
|
||||
#else
|
||||
evas_common_draw_context_cutouts_free(rects);
|
||||
evas_common_draw_context_cutouts_real_free(rects);
|
||||
#endif
|
||||
/* restore clip info */
|
||||
dc->clip.use = c; dc->clip.x = cx; dc->clip.y = cy; dc->clip.w = cw; dc->clip.h = ch;
|
||||
|
|
Loading…
Reference in New Issue