forked from enlightenment/efl
Evas filters: Fallback to normal rendering in case of error
If the filters fail to render at runtime (that is, parsing went fine but a command failed to run properly), fallback to normal rendering. This should prevent text from disappearing when using proxies and the OpenGL engine (for now).
This commit is contained in:
parent
c783b8d450
commit
e05885e0e3
|
@ -2130,7 +2130,7 @@ evas_object_text_render(Evas_Object *eo_obj EINA_UNUSED,
|
||||||
* remotely similar to its final form. You've been warned :)
|
* remotely similar to its final form. You've been warned :)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (o->cur.filter.chain || (o->cur.filter.code && !o->cur.filter.invalid))
|
if (!o->cur.filter.invalid && (o->cur.filter.chain || o->cur.filter.invalid))
|
||||||
{
|
{
|
||||||
int X, Y, W, H;
|
int X, Y, W, H;
|
||||||
Evas_Filter_Context *filter;
|
Evas_Filter_Context *filter;
|
||||||
|
@ -2245,11 +2245,20 @@ evas_object_text_render(Evas_Object *eo_obj EINA_UNUSED,
|
||||||
|
|
||||||
// Add post-run callback and run filter
|
// Add post-run callback and run filter
|
||||||
evas_filter_context_autodestroy(filter);
|
evas_filter_context_autodestroy(filter);
|
||||||
evas_filter_run(filter);
|
ok = evas_filter_run(filter);
|
||||||
o->cur.filter.changed = EINA_FALSE;
|
o->cur.filter.changed = EINA_FALSE;
|
||||||
|
|
||||||
DBG("Effect rendering done.");
|
if (ok)
|
||||||
return;
|
{
|
||||||
|
DBG("Effect rendering done.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ERR("Rendering failed");
|
||||||
|
o->cur.filter.invalid = EINA_TRUE;
|
||||||
|
goto normal_render;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* End of the EXPERIMENTAL code */
|
/* End of the EXPERIMENTAL code */
|
||||||
|
|
|
@ -1687,7 +1687,7 @@ static Eina_Bool
|
||||||
_filter_chain_run(Evas_Filter_Context *ctx)
|
_filter_chain_run(Evas_Filter_Context *ctx)
|
||||||
{
|
{
|
||||||
Evas_Filter_Command *cmd;
|
Evas_Filter_Command *cmd;
|
||||||
Eina_Bool ok = EINA_TRUE;
|
Eina_Bool ok = EINA_FALSE;
|
||||||
|
|
||||||
ctx->running = EINA_TRUE;
|
ctx->running = EINA_TRUE;
|
||||||
EINA_INLIST_FOREACH(ctx->commands, cmd)
|
EINA_INLIST_FOREACH(ctx->commands, cmd)
|
||||||
|
|
Loading…
Reference in New Issue