From 76932dcc9fdbf7da8a865f75048c3a5f37327f1d Mon Sep 17 00:00:00 2001 From: Paulo Alcantara Date: Wed, 19 Dec 2012 16:15:58 +0000 Subject: [PATCH] evas/engines: Introduce render mode The render mode should be useful for engines other than software one. Signed-off-by: Paulo Alcantara SVN revision: 81384 --- src/lib/evas/canvas/evas_render.c | 29 +++++++++++-------- src/lib/evas/include/evas_common.h | 9 ++++++ src/lib/evas/include/evas_private.h | 4 +-- src/modules/evas/engines/buffer/evas_engine.c | 13 ++++++--- src/modules/evas/engines/fb/evas_engine.c | 10 ++++--- .../evas/engines/gl_cocoa/evas_engine.c | 8 +++-- src/modules/evas/engines/gl_sdl/evas_engine.c | 8 +++-- src/modules/evas/engines/gl_x11/evas_engine.c | 8 +++-- .../evas/engines/psl1ght/evas_engine.c | 10 ++++--- .../evas/engines/software_ddraw/evas_engine.c | 8 +++-- .../evas/engines/software_gdi/evas_engine.c | 8 +++-- .../evas/engines/software_x11/evas_engine.c | 12 +++++--- .../evas/engines/wayland_egl/evas_engine.c | 8 +++-- .../evas/engines/wayland_shm/evas_engine.c | 11 ++++--- 14 files changed, 100 insertions(+), 46 deletions(-) diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index 9ba0fade87..a4fa3bbf83 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -1328,6 +1328,7 @@ evas_render_updates_internal(Evas *eo_e, unsigned int i, j; int redraw_all = 0; Eina_Bool haveup = 0; + Evas_Render_Mode render_mode = EVAS_RENDER_MODE_UNDEF; MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS); return EINA_FALSE; @@ -1692,10 +1693,13 @@ evas_render_updates_internal(Evas *eo_e, } } - if (!do_async) - e->engine.func->output_redraws_next_update_push(e->engine.data.output, - surface, - ux, uy, uw, uh); + if (!do_async) render_mode = EVAS_RENDER_MODE_SYNC; + else render_mode = EVAS_RENDER_MODE_ASYNC_INIT; + + e->engine.func->output_redraws_next_update_push(e->engine.data.output, + surface, + ux, uy, uw, uh, + render_mode); /* free obscuring objects list */ eina_array_clean(&e->temporary_objects); @@ -1709,7 +1713,8 @@ evas_render_updates_internal(Evas *eo_e, else if (haveup) { evas_event_callback_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_PRE, NULL); - e->engine.func->output_flush(e->engine.data.output); + e->engine.func->output_flush(e->engine.data.output, + EVAS_RENDER_MODE_SYNC); evas_event_callback_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_POST, NULL); } } @@ -1831,12 +1836,11 @@ evas_render_wakeup(Evas *eo_e) EINA_LIST_FREE(e->render.updates, ru) { /* punch rect out */ - e->engine.func->output_redraws_next_update_push(e->engine.data.output, - ru->surface, - ru->area->x, - ru->area->y, - ru->area->w, - ru->area->h); + e->engine.func->output_redraws_next_update_push + (e->engine.data.output, ru->surface, + ru->area->x, ru->area->y, ru->area->w, ru->area->h, + EVAS_RENDER_MODE_ASYNC_END); + if (e->render.updates_cb) ret_updates = eina_list_append(ret_updates, ru->area); else @@ -1850,7 +1854,8 @@ evas_render_wakeup(Evas *eo_e) if (haveup) { evas_event_callback_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_PRE, NULL); - e->engine.func->output_flush(e->engine.data.output); + e->engine.func->output_flush(e->engine.data.output, + EVAS_RENDER_MODE_ASYNC_END); evas_event_callback_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_POST, NULL); } diff --git a/src/lib/evas/include/evas_common.h b/src/lib/evas/include/evas_common.h index 15c1d3a5f9..b83b3e8ffd 100644 --- a/src/lib/evas/include/evas_common.h +++ b/src/lib/evas/include/evas_common.h @@ -1274,6 +1274,15 @@ void evas_thread_init(void); void evas_thread_shutdown(void); EAPI void evas_thread_cmd_enqueue(Evas_Thread_Command_Cb cb, void *data, size_t size); EAPI void evas_thread_queue_flush(Evas_Thread_Command_Cb cb, void *data, size_t size); + +typedef enum _Evas_Render_Mode +{ + EVAS_RENDER_MODE_UNDEF, + EVAS_RENDER_MODE_SYNC, + EVAS_RENDER_MODE_ASYNC_INIT, + EVAS_RENDER_MODE_ASYNC_END, +} Evas_Render_Mode; + /****/ /*****************************************************************************/ diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index 56ddc4c9d7..c53601b872 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -769,8 +769,8 @@ struct _Evas_Func void (*output_redraws_rect_del) (void *data, int x, int y, int w, int h); void (*output_redraws_clear) (void *data); void *(*output_redraws_next_update_get) (void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch); - void (*output_redraws_next_update_push) (void *data, void *surface, int x, int y, int w, int h); - void (*output_flush) (void *data); + void (*output_redraws_next_update_push) (void *data, void *surface, int x, int y, int w, int h, Evas_Render_Mode render_mode); + void (*output_flush) (void *data, Evas_Render_Mode render_mode); void (*output_idle_flush) (void *data); void (*output_dump) (void *data); diff --git a/src/modules/evas/engines/buffer/evas_engine.c b/src/modules/evas/engines/buffer/evas_engine.c index f492ba9ae1..036fb4b3ba 100644 --- a/src/modules/evas/engines/buffer/evas_engine.c +++ b/src/modules/evas/engines/buffer/evas_engine.c @@ -42,8 +42,8 @@ static void eng_output_redraws_rect_add(void *data, int x, int y, int w, int h); static void eng_output_redraws_rect_del(void *data, int x, int y, int w, int h); static void eng_output_redraws_clear(void *data); static void *eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch); -static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h); -static void eng_output_flush(void *data); +static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h, Evas_Render_Mode render_mode); +static void eng_output_flush(void *data, Evas_Render_Mode render_mode); static void eng_output_idle_flush(void *data); /* internal engine routines */ @@ -345,10 +345,12 @@ eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, i } static void -eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h) +eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h, Evas_Render_Mode render_mode) { Render_Engine *re; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + re = (Render_Engine *)data; #ifdef BUILD_PIPE_RENDER evas_common_pipe_map_begin(surface); @@ -359,9 +361,12 @@ eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int } static void -eng_output_flush(void *data) +eng_output_flush(void *data, Evas_Render_Mode render_mode) { Render_Engine *re = (Render_Engine *)data; + + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + evas_buffer_outbuf_buf_switch_buffer(re->ob); } diff --git a/src/modules/evas/engines/fb/evas_engine.c b/src/modules/evas/engines/fb/evas_engine.c index 6c934c586f..3121c90948 100644 --- a/src/modules/evas/engines/fb/evas_engine.c +++ b/src/modules/evas/engines/fb/evas_engine.c @@ -33,8 +33,8 @@ static void eng_output_redraws_rect_add(void *data, int x, int y, int w, int h); static void eng_output_redraws_rect_del(void *data, int x, int y, int w, int h); static void eng_output_redraws_clear(void *data); static void *eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch); -static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h); -static void eng_output_flush(void *data); +static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h, Evas_Render_Mode render_mode); +static void eng_output_flush(void *data, Evas_Render_Mode render_mode); static void eng_output_idle_flush(void *data); /* internal engine routines */ @@ -217,10 +217,12 @@ eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, i } static void -eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h) +eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h, Evas_Render_Mode render_mode) { Render_Engine *re; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + re = (Render_Engine *)data; #ifdef BUILD_PIPE_RENDER evas_common_pipe_map_begin(surface); @@ -231,7 +233,7 @@ eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int } static void -eng_output_flush(void *data EINA_UNUSED) +eng_output_flush(void *data EINA_UNUSED, Evas_Render_Mode render_mode EINA_UNUSED) { } diff --git a/src/modules/evas/engines/gl_cocoa/evas_engine.c b/src/modules/evas/engines/gl_cocoa/evas_engine.c index df3f6ac7ef..9d07c7da60 100644 --- a/src/modules/evas/engines/gl_cocoa/evas_engine.c +++ b/src/modules/evas/engines/gl_cocoa/evas_engine.c @@ -278,10 +278,12 @@ eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, i } static void -eng_output_redraws_next_update_push(void *data, void *surface EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED) +eng_output_redraws_next_update_push(void *data, void *surface EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED, Evas_Render_Mode render_mode) { Render_Engine *re; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + re = (Render_Engine *)data; /* put back update surface.. in this case just unflag redraw */ re->win->draw.redraw = 0; @@ -290,10 +292,12 @@ eng_output_redraws_next_update_push(void *data, void *surface EINA_UNUSED, int x } static void -eng_output_flush(void *data) +eng_output_flush(void *data, Evas_Render_Mode render_mode) { Render_Engine *re; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + re = (Render_Engine *)data; if (!re->win->draw.drew) return; diff --git a/src/modules/evas/engines/gl_sdl/evas_engine.c b/src/modules/evas/engines/gl_sdl/evas_engine.c index a2ed13fa16..407d513321 100644 --- a/src/modules/evas/engines/gl_sdl/evas_engine.c +++ b/src/modules/evas/engines/gl_sdl/evas_engine.c @@ -222,10 +222,12 @@ eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, i } static void -eng_output_redraws_next_update_push(void *data, void *surface EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED) +eng_output_redraws_next_update_push(void *data, void *surface EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED, Evas_Render_Mode render_mode) { Render_Engine *re; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + re = (Render_Engine *)data; /* put back update surface.. in this case just unflag redraw */ re->draw.redraw = 0; @@ -235,10 +237,12 @@ eng_output_redraws_next_update_push(void *data, void *surface EINA_UNUSED, int x } static void -eng_output_flush(void *data) +eng_output_flush(void *data, Evas_Render_Mode render_mode) { Render_Engine *re; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + re = (Render_Engine *)data; if (!re->draw.drew) return; //x// printf("frame -> flush\n"); diff --git a/src/modules/evas/engines/gl_x11/evas_engine.c b/src/modules/evas/engines/gl_x11/evas_engine.c index 63dd9196ca..e6e76b119e 100644 --- a/src/modules/evas/engines/gl_x11/evas_engine.c +++ b/src/modules/evas/engines/gl_x11/evas_engine.c @@ -1124,10 +1124,12 @@ eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, i static int safe_native = -1; static void -eng_output_redraws_next_update_push(void *data, void *surface EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED) +eng_output_redraws_next_update_push(void *data, void *surface EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED, Evas_Render_Mode render_mode) { Render_Engine *re; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + re = (Render_Engine *)data; /* put back update surface.. in this case just unflag redraw */ if (!_re_wincheck(re)) return; @@ -1165,10 +1167,12 @@ eng_output_redraws_next_update_push(void *data, void *surface EINA_UNUSED, int x } static void -eng_output_flush(void *data) +eng_output_flush(void *data, Evas_Render_Mode render_mode) { Render_Engine *re; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + re = (Render_Engine *)data; if (!_re_wincheck(re)) return; if (!re->win->draw.drew) return; diff --git a/src/modules/evas/engines/psl1ght/evas_engine.c b/src/modules/evas/engines/psl1ght/evas_engine.c index 64fe8ea863..ff506bbbaf 100644 --- a/src/modules/evas/engines/psl1ght/evas_engine.c +++ b/src/modules/evas/engines/psl1ght/evas_engine.c @@ -59,9 +59,9 @@ static void eng_output_redraws_clear(void *data); static void *eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch); static void - eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h); + eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h, Evas_Render_Mode render_mode); static void - eng_output_flush(void *data); + eng_output_flush(void *data, Evas_Render_Mode render_mode); static void eng_output_idle_flush(void *data); @@ -346,19 +346,21 @@ eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, i } static void -eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h) +eng_output_redraws_next_update_push(void *data EINA_UNUSED, void *surface EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED, Evas_Render_Mode render_mode EINA_UNUSED) { /* Don't do anything, we'll just coy the whole buffer when it's time to flush */ } static void -eng_output_flush(void *data) +eng_output_flush(void *data, Evas_Render_Mode render_mode) { Render_Engine *re; rsxBuffer *buffer; int width; int height; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + //printf ("eng_output_flush called\n"); re = (Render_Engine *)data; buffer = &re->buffers[re->currentBuffer]; diff --git a/src/modules/evas/engines/software_ddraw/evas_engine.c b/src/modules/evas/engines/software_ddraw/evas_engine.c index 75564a93cf..db9023dd71 100644 --- a/src/modules/evas/engines/software_ddraw/evas_engine.c +++ b/src/modules/evas/engines/software_ddraw/evas_engine.c @@ -282,10 +282,12 @@ eng_output_redraws_next_update_get(void *data, } static void -eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h) +eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h, Evas_Render_Mode render_mode) { Render_Engine *re; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + re = (Render_Engine *)data; #ifdef BUILD_PIPE_RENDER evas_common_pipe_map_begin(surface); @@ -296,10 +298,12 @@ eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int } static void -eng_output_flush(void *data) +eng_output_flush(void *data, Evas_Render_Mode render_mode) { Render_Engine *re; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + re = (Render_Engine *)data; evas_software_ddraw_outbuf_flush(re->ob); } diff --git a/src/modules/evas/engines/software_gdi/evas_engine.c b/src/modules/evas/engines/software_gdi/evas_engine.c index 8a72b67789..fc2b5c2ea2 100644 --- a/src/modules/evas/engines/software_gdi/evas_engine.c +++ b/src/modules/evas/engines/software_gdi/evas_engine.c @@ -288,10 +288,12 @@ eng_output_redraws_next_update_get(void *data, } static void -eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h) +eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h, Evas_Render_Mode render_mode) { Render_Engine *re; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + re = (Render_Engine *)data; #ifdef BUILD_PIPE_RENDER evas_common_pipe_map_begin(surface); @@ -302,10 +304,12 @@ eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int } static void -eng_output_flush(void *data) +eng_output_flush(void *data, Evas_Render_Mode render_mode) { Render_Engine *re; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + re = (Render_Engine *)data; evas_software_gdi_outbuf_flush(re->ob); } diff --git a/src/modules/evas/engines/software_x11/evas_engine.c b/src/modules/evas/engines/software_x11/evas_engine.c index a7dc5d3597..1c245a73e1 100644 --- a/src/modules/evas/engines/software_x11/evas_engine.c +++ b/src/modules/evas/engines/software_x11/evas_engine.c @@ -71,8 +71,8 @@ static void eng_output_redraws_rect_add(void *data, int x, int y, int w, int h); static void eng_output_redraws_rect_del(void *data, int x, int y, int w, int h); static void eng_output_redraws_clear(void *data); static void *eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch); -static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h); -static void eng_output_flush(void *data); +static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h, Evas_Render_Mode render_mode); +static void eng_output_flush(void *data, Evas_Render_Mode render_mode); static void eng_output_idle_flush(void *data); /* internal engine routines */ @@ -880,10 +880,12 @@ eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, i } static void -eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h) +eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h, Evas_Render_Mode render_mode) { Render_Engine *re; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + re = (Render_Engine *)data; #if defined(BUILD_PIPE_RENDER) evas_common_pipe_map_begin(surface); @@ -894,10 +896,12 @@ eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int } static void -eng_output_flush(void *data) +eng_output_flush(void *data, Evas_Render_Mode render_mode) { Render_Engine *re; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + re = (Render_Engine *)data; re->outbuf_flush(re->ob); if (re->rects) diff --git a/src/modules/evas/engines/wayland_egl/evas_engine.c b/src/modules/evas/engines/wayland_egl/evas_engine.c index 93dda1d797..cfcaaf1007 100644 --- a/src/modules/evas/engines/wayland_egl/evas_engine.c +++ b/src/modules/evas/engines/wayland_egl/evas_engine.c @@ -1018,7 +1018,7 @@ get_time(void) static int safe_native = -1; static void -eng_output_redraws_next_update_push(void *data, void *surface EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED) +eng_output_redraws_next_update_push(void *data, void *surface EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED, Evas_Render_Mode render_mode) { Render_Engine *re; #ifdef FRAMECOUNT @@ -1026,6 +1026,8 @@ eng_output_redraws_next_update_push(void *data, void *surface EINA_UNUSED, int x double ta, tb; #endif + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + re = (Render_Engine *)data; /* put back update surface.. in this case just unflag redraw */ if (!_re_wincheck(re)) return; @@ -1071,10 +1073,12 @@ eng_output_redraws_next_update_push(void *data, void *surface EINA_UNUSED, int x } static void -eng_output_flush(void *data) +eng_output_flush(void *data, Evas_Render_Mode render_mode) { Render_Engine *re; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + re = (Render_Engine *)data; if (!_re_wincheck(re)) return; if (!re->win->draw.drew) return; diff --git a/src/modules/evas/engines/wayland_shm/evas_engine.c b/src/modules/evas/engines/wayland_shm/evas_engine.c index e58ecc7f31..defecea4aa 100644 --- a/src/modules/evas/engines/wayland_shm/evas_engine.c +++ b/src/modules/evas/engines/wayland_shm/evas_engine.c @@ -41,8 +41,8 @@ static void eng_output_redraws_rect_add(void *data, int x, int y, int w, int h); static void eng_output_redraws_rect_del(void *data, int x, int y, int w, int h); static void eng_output_redraws_clear(void *data); static void *eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch); -static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h); -static void eng_output_flush(void *data); +static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h, Evas_Render_Mode render_mode); +static void eng_output_flush(void *data, Evas_Render_Mode render_mode); static void eng_output_idle_flush(void *data); static Eina_Bool eng_canvas_alpha_get(void *data, void *context EINA_UNUSED); @@ -274,10 +274,12 @@ eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, i } static void -eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h) +eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h, Evas_Render_Mode render_mode) { Render_Engine *re = NULL; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; + if (!(re = (Render_Engine *)data)) return; #ifdef BUILD_PIPE_RENDER evas_common_pipe_map_begin(surface); @@ -291,10 +293,11 @@ eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int } static void -eng_output_flush(void *data) +eng_output_flush(void *data, Evas_Render_Mode render_mode) { Render_Engine *re = NULL; + if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return; if (!(re = (Render_Engine *)data)) return; }