Revert "evas: trigger RENDER_FLUSH callbacks during async render"
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Fri, 11 Dec 2015 06:10:53 +0000 (15:10 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Fri, 11 Dec 2015 06:15:36 +0000 (15:15 +0900)
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.

src/lib/evas/canvas/evas_render.c

index 249da38..1645ebc 100644 (file)
@@ -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);
 }