forked from enlightenment/efl
Evas masking: Simplify ref/unref code
Those masks are always render surfaces so we should treat them as such. Plus, there are proper functions to ref/unref GL images.
This commit is contained in:
parent
04ba5a3b99
commit
02594a2519
|
@ -1696,34 +1696,19 @@ eng_context_flush(void *data)
|
|||
}
|
||||
|
||||
static void
|
||||
eng_context_clip_image_unset(void *data, void *context)
|
||||
eng_context_clip_image_unset(void *data EINA_UNUSED, void *context)
|
||||
{
|
||||
RGBA_Draw_Context *ctx = context;
|
||||
Evas_GL_Image *im = ctx->clip.mask;
|
||||
|
||||
if (EINA_UNLIKELY(im && im->im))
|
||||
{
|
||||
#ifdef EVAS_CSERVE2
|
||||
if (evas_cserve2_use_get())
|
||||
evas_cache2_image_close(&im->im->cache_entry);
|
||||
else
|
||||
#endif
|
||||
evas_cache_image_drop(&im->im->cache_entry);
|
||||
// Is the above code safe? Hmmm...
|
||||
//evas_unref_queue_image_put(EVAS???, &ctx->clip.ie->cache_entry);
|
||||
}
|
||||
else if (im)
|
||||
{
|
||||
im->references--;
|
||||
if (!im->references)
|
||||
eng_image_free(data, im);
|
||||
}
|
||||
if (im)
|
||||
evas_gl_common_image_free(im);
|
||||
|
||||
ctx->clip.mask = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
eng_context_clip_image_set(void *data EINA_UNUSED, void *context, void *surface, int x, int y)
|
||||
eng_context_clip_image_set(void *data, void *context, void *surface, int x, int y)
|
||||
{
|
||||
RGBA_Draw_Context *ctx = context;
|
||||
Evas_GL_Image *im = surface;
|
||||
|
@ -1741,24 +1726,9 @@ eng_context_clip_image_set(void *data EINA_UNUSED, void *context, void *surface,
|
|||
ctx->clip.mask_x = x;
|
||||
ctx->clip.mask_y = y;
|
||||
|
||||
if (EINA_UNLIKELY(im && im->im))
|
||||
if (im)
|
||||
{
|
||||
// Unlikely to happen because masks are render surfaces.
|
||||
if (!noinc)
|
||||
{
|
||||
#ifdef EVAS_CSERVE2
|
||||
if (evas_cserve2_use_get())
|
||||
evas_cache2_image_ref(&im->im->cache_entry);
|
||||
else
|
||||
#endif
|
||||
evas_cache_image_ref(&im->im->cache_entry);
|
||||
}
|
||||
RECTS_CLIP_TO_RECT(ctx->clip.x, ctx->clip.y, ctx->clip.w, ctx->clip.h,
|
||||
x, y, im->im->cache_entry.w, im->im->cache_entry.h);
|
||||
}
|
||||
else if (im)
|
||||
{
|
||||
if (!noinc) im->references++;
|
||||
if (!noinc) evas_gl_common_image_ref(im);
|
||||
RECTS_CLIP_TO_RECT(ctx->clip.x, ctx->clip.y, ctx->clip.w, ctx->clip.h,
|
||||
x, y, im->w, im->h);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue