From: Carsten Haitzler (Rasterman) Date: Fri, 11 Dec 2015 06:10:53 +0000 (+0900) Subject: Revert "evas: trigger RENDER_FLUSH callbacks during async render" X-Git-Tag: upstream/1.20.0~7920 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=000beb2f17ff17c3ca600586457c0877af39579b;p=platform%2Fupstream%2Fefl.git Revert "evas: trigger RENDER_FLUSH callbacks during async render" This reverts commit cbb447c878ef779230ebf4470b615b8276c50fa2. 1. this is wrong because evas_render_pipe_wakeup() is being called IN THE RENDER THREAD. it... SENDS a wakeup back to the mainloop with evas_async_events_put(data, 0, NULL, evas_render_async_wakeup); and you can see that evas_render_async_wakeup() calls evas_render_wakeup() and in evas_render_wakeup() flush pre/post are called, but since the trhead does the flush we cant realyl call before/after, but it retains order... IF there are updates (haveup). so calling these callbacks FROM a thread is now leading to apps mysteriously exiting. this is mucho bad. just at random i now have my terminals exiting. --- diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index 249da38..1645ebc 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -3071,10 +3071,8 @@ evas_render_pipe_wakeup(void *data) } eina_evlog("+render_output_flush", e->evas, 0.0, NULL); eina_spinlock_release(&(e->render.lock)); - _cb_always_call(e->evas, EVAS_CALLBACK_RENDER_FLUSH_PRE, NULL); e->engine.func->output_flush(e->engine.data.output, EVAS_RENDER_MODE_ASYNC_END); - _cb_always_call(e->evas, EVAS_CALLBACK_RENDER_FLUSH_POST, NULL); eina_evlog("-render_output_flush", e->evas, 0.0, NULL); evas_async_events_put(data, 0, NULL, evas_render_async_wakeup); }