Evas filters: Fix crash when using the GL backend
Buffer management was broken, and we tried to free the GL texture as if it were a simple RGBA_Image.
This commit is contained in:
parent
637416d62e
commit
9917962ffb
|
@ -436,9 +436,11 @@ evas_filter_context_buffers_allocate_all(Evas_Filter_Context *ctx,
|
||||||
ie = fb->backing;
|
ie = fb->backing;
|
||||||
if (ie)
|
if (ie)
|
||||||
{
|
{
|
||||||
// Not checking for async. It's also safe for sync rendering.
|
if (ctx->async)
|
||||||
ie->references++;
|
{
|
||||||
evas_unref_queue_image_put(ctx->evas, ie);
|
ie->references++;
|
||||||
|
evas_unref_queue_image_put(ctx->evas, ie);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -648,10 +650,22 @@ evas_filter_buffer_backing_release(Evas_Filter_Context *ctx, void *stolen_buffer
|
||||||
}
|
}
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
else if (fb->glimage == stolen_buffer)
|
||||||
|
{
|
||||||
|
fb->stolen = EINA_FALSE;
|
||||||
|
if (fb->delete_me)
|
||||||
|
{
|
||||||
|
ENFN->image_free(ENDT, stolen_buffer);
|
||||||
|
free(fb);
|
||||||
|
}
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->async)
|
if (ctx->async)
|
||||||
evas_unref_queue_image_put(ctx->evas, ie);
|
evas_unref_queue_image_put(ctx->evas, ie);
|
||||||
|
else if (ctx->gl_engine)
|
||||||
|
ENFN->image_free(ENDT, stolen_buffer);
|
||||||
else
|
else
|
||||||
_backing_free(ctx, ie);
|
_backing_free(ctx, ie);
|
||||||
|
|
||||||
|
|
|
@ -34,9 +34,10 @@ evas_filter_buffer_scaled_get(Evas_Filter_Context *ctx,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Not supported on GL engine. HAHAHAHAHA
|
// FIXME: Not supported on GL engine.
|
||||||
|
// Yeah, we need to call the CPU scaling functions and not the engine.
|
||||||
if (ctx->gl_engine)
|
if (ctx->gl_engine)
|
||||||
CRI("Support not implemened yet. lol yeah");
|
CRI("Support for stretching not implemened yet for GL.");
|
||||||
|
|
||||||
if (!src->alpha_only)
|
if (!src->alpha_only)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue