forked from enlightenment/efl
evas/evas_render: use rendering flag only when async rendering
Also postpone marking the rendering flag until we know we will have the draw thread do its work. This way we avoid waiting forever at evas_render_rendering_wait() when the draw thread is also blocked. Patch by: Ulisses Furquim <ulisses@profusion.mobi> SVN revision: 81798
This commit is contained in:
parent
4079b164b7
commit
5f493f2c38
|
@ -1337,15 +1337,7 @@ evas_render_updates_internal(Evas *eo_e,
|
||||||
e = eo_data_get(eo_e, EVAS_CLASS);
|
e = eo_data_get(eo_e, EVAS_CLASS);
|
||||||
if (!e->changed) return EINA_FALSE;
|
if (!e->changed) return EINA_FALSE;
|
||||||
|
|
||||||
if (e->rendering) return EINA_FALSE;
|
if (do_async && e->rendering) return EINA_FALSE;
|
||||||
e->rendering = EINA_TRUE;
|
|
||||||
|
|
||||||
if (do_async)
|
|
||||||
{
|
|
||||||
eo_ref(eo_e);
|
|
||||||
e->render.data = updates_data;
|
|
||||||
e->render.updates_cb = updates_func;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef EVAS_CSERVE2
|
#ifdef EVAS_CSERVE2
|
||||||
if (evas_cserve2_use_get())
|
if (evas_cserve2_use_get())
|
||||||
|
@ -1708,6 +1700,11 @@ evas_render_updates_internal(Evas *eo_e,
|
||||||
|
|
||||||
if (do_async)
|
if (do_async)
|
||||||
{
|
{
|
||||||
|
eo_ref(eo_e);
|
||||||
|
e->rendering = EINA_TRUE;
|
||||||
|
e->render.data = updates_data;
|
||||||
|
e->render.updates_cb = updates_func;
|
||||||
|
|
||||||
evas_thread_queue_flush((Evas_Thread_Command_Cb)done_func, done_data, 0);
|
evas_thread_queue_flush((Evas_Thread_Command_Cb)done_func, done_data, 0);
|
||||||
}
|
}
|
||||||
else if (haveup)
|
else if (haveup)
|
||||||
|
@ -1934,7 +1931,6 @@ evas_render_updates_internal_wait(Evas *eo_e,
|
||||||
|
|
||||||
ret = e->render.updates;
|
ret = e->render.updates;
|
||||||
e->render.updates = NULL;
|
e->render.updates = NULL;
|
||||||
e->rendering = EINA_FALSE;
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue