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
devs/devilhorns/wayland_egl
Ulisses Furquim 11 years ago committed by Lucas De Marchi
parent 4079b164b7
commit 5f493f2c38
  1. 16
      src/lib/evas/canvas/evas_render.c

@ -1337,15 +1337,7 @@ evas_render_updates_internal(Evas *eo_e,
e = eo_data_get(eo_e, EVAS_CLASS);
if (!e->changed) return EINA_FALSE;
if (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;
}
if (do_async && e->rendering) return EINA_FALSE;
#ifdef EVAS_CSERVE2
if (evas_cserve2_use_get())
@ -1708,6 +1700,11 @@ evas_render_updates_internal(Evas *eo_e,
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);
}
else if (haveup)
@ -1934,7 +1931,6 @@ evas_render_updates_internal_wait(Evas *eo_e,
ret = e->render.updates;
e->render.updates = NULL;
e->rendering = EINA_FALSE;
return ret;
}

Loading…
Cancel
Save