diff options
author | Derek Foreman <derekf@osg.samsung.com> | 2016-09-06 17:01:37 -0500 |
---|---|---|
committer | Derek Foreman <derekf@osg.samsung.com> | 2016-09-08 13:55:24 -0500 |
commit | 5eec34812efa5b73ed18d71871e87a997928d214 (patch) | |
tree | 049f2913255120a1de9b6aac5fea202580b58282 | |
parent | ce7991b9934d469419d3a3982d30329184cc287e (diff) | |
download | efl-5eec34812efa5b73ed18d71871e87a997928d214.tar.gz |
evas_engines: Add a redraws_clear callback
This gives us a callback from the main thread after outbuf_flush occurs -
this is useful to get timing right on the drm and wayland engines.
16 files changed, 22 insertions, 0 deletions
diff --git a/src/modules/evas/engines/buffer/evas_engine.c b/src/modules/evas/engines/buffer/evas_engine.c index 021f7c5540..bef4a4549c 100644 --- a/src/modules/evas/engines/buffer/evas_engine.c +++ b/src/modules/evas/engines/buffer/evas_engine.c @@ -103,6 +103,7 @@ _output_setup(int w, evas_buffer_outbuf_buf_free_region_for_update, NULL, evas_buffer_outbuf_buf_switch_buffer, + NULL, evas_buffer_outbuf_buf_free, w, h)) goto on_error; diff --git a/src/modules/evas/engines/drm/evas_engine.c b/src/modules/evas/engines/drm/evas_engine.c index 0499a96895..e28037d4fe 100644 --- a/src/modules/evas/engines/drm/evas_engine.c +++ b/src/modules/evas/engines/drm/evas_engine.c @@ -32,6 +32,7 @@ _render_engine_setup(Evas_Engine_Info_Drm *info, int w, int h) _outbuf_update_region_free, NULL, _outbuf_flush, + NULL, _outbuf_free, ob->w, ob->h)) goto init_err; diff --git a/src/modules/evas/engines/eglfs/evas_engine.c b/src/modules/evas/engines/eglfs/evas_engine.c index 630cd9c5fb..c881f29238 100644 --- a/src/modules/evas/engines/eglfs/evas_engine.c +++ b/src/modules/evas/engines/eglfs/evas_engine.c @@ -793,6 +793,7 @@ eng_setup(Evas *evas, void *in) evas_outbuf_update_region_free, NULL, evas_outbuf_flush, + NULL, evas_outbuf_free, evas_outbuf_use, evas_outbuf_gl_context_get, diff --git a/src/modules/evas/engines/fb/evas_engine.c b/src/modules/evas/engines/fb/evas_engine.c index f78e7a19da..9457485dd9 100644 --- a/src/modules/evas/engines/fb/evas_engine.c +++ b/src/modules/evas/engines/fb/evas_engine.c @@ -53,6 +53,7 @@ _output_setup(int w, int h, int rot, int vt, int dev, int refresh) evas_fb_outbuf_fb_free_region_for_update, NULL, NULL, + NULL, evas_fb_outbuf_fb_free, evas_fb_outbuf_fb_get_width(ob), evas_fb_outbuf_fb_get_height(ob))) diff --git a/src/modules/evas/engines/gl_cocoa/evas_engine.c b/src/modules/evas/engines/gl_cocoa/evas_engine.c index 20311669d1..585323afcb 100644 --- a/src/modules/evas/engines/gl_cocoa/evas_engine.c +++ b/src/modules/evas/engines/gl_cocoa/evas_engine.c @@ -202,6 +202,7 @@ eng_setup(Evas *evas, void *in) evas_outbuf_update_region_free, NULL, evas_outbuf_flush, + NULL, evas_outbuf_free, evas_outbuf_use, evas_outbuf_gl_context_get, diff --git a/src/modules/evas/engines/gl_drm/evas_engine.c b/src/modules/evas/engines/gl_drm/evas_engine.c index 6b4122f98b..ae19d1a518 100644 --- a/src/modules/evas/engines/gl_drm/evas_engine.c +++ b/src/modules/evas/engines/gl_drm/evas_engine.c @@ -915,6 +915,7 @@ eng_setup(Evas *evas, void *in) evas_outbuf_update_region_free, NULL, evas_outbuf_flush, + NULL, evas_outbuf_free, evas_outbuf_use, evas_outbuf_gl_context_get, diff --git a/src/modules/evas/engines/gl_generic/Evas_Engine_GL_Generic.h b/src/modules/evas/engines/gl_generic/Evas_Engine_GL_Generic.h index 811881231f..ace326dd5d 100644 --- a/src/modules/evas/engines/gl_generic/Evas_Engine_GL_Generic.h +++ b/src/modules/evas/engines/gl_generic/Evas_Engine_GL_Generic.h @@ -51,6 +51,7 @@ evas_render_engine_gl_generic_init(Render_Engine_GL_Generic *re, Outbuf_Free_Region_For_Update outbuf_free_region_for_update, Outbuf_Idle_Flush outbuf_idle_flush, Outbuf_Flush outbuf_flush, + Outbuf_Redraws_Clear outbuf_redraws_clear, Outbuf_Free outbuf_free, Window_Use window_use, Window_GL_Context_Get window_gl_context_get, @@ -71,6 +72,7 @@ evas_render_engine_gl_generic_init(Render_Engine_GL_Generic *re, outbuf_free_region_for_update, outbuf_idle_flush, outbuf_flush, + outbuf_redraws_clear, outbuf_free, w, h)) return EINA_FALSE; diff --git a/src/modules/evas/engines/gl_sdl/evas_engine.c b/src/modules/evas/engines/gl_sdl/evas_engine.c index 99ebf13584..c2c340094c 100644 --- a/src/modules/evas/engines/gl_sdl/evas_engine.c +++ b/src/modules/evas/engines/gl_sdl/evas_engine.c @@ -316,6 +316,7 @@ eng_setup(Evas *eo_e, void *in) _outbuf_free_region_for_update, NULL, _outbuf_flush, + NULL, _outbuf_free, _window_use, _window_gl_context_get, diff --git a/src/modules/evas/engines/gl_x11/evas_engine.c b/src/modules/evas/engines/gl_x11/evas_engine.c index 8842a472ca..e0938c151f 100644 --- a/src/modules/evas/engines/gl_x11/evas_engine.c +++ b/src/modules/evas/engines/gl_x11/evas_engine.c @@ -1727,6 +1727,7 @@ eng_setup(Evas *eo_e, void *in) eng_outbuf_push_free_region_for_update, eng_outbuf_idle_flush, eng_outbuf_flush, + NULL, eng_window_free, eng_window_use, eng_outbuf_gl_context_get, diff --git a/src/modules/evas/engines/software_ddraw/evas_engine.c b/src/modules/evas/engines/software_ddraw/evas_engine.c index c18340bb9e..75b37bac04 100644 --- a/src/modules/evas/engines/software_ddraw/evas_engine.c +++ b/src/modules/evas/engines/software_ddraw/evas_engine.c @@ -53,6 +53,7 @@ _output_setup(int width, evas_software_ddraw_outbuf_free_region_for_update, evas_software_ddraw_outbuf_idle_flush, evas_software_ddraw_outbuf_flush, + NULL, evas_software_ddraw_outbuf_free, width, height)) goto on_error; diff --git a/src/modules/evas/engines/software_gdi/evas_engine.c b/src/modules/evas/engines/software_gdi/evas_engine.c index 9c003477ba..d57e92cec1 100644 --- a/src/modules/evas/engines/software_gdi/evas_engine.c +++ b/src/modules/evas/engines/software_gdi/evas_engine.c @@ -59,6 +59,7 @@ _output_setup(int width, evas_software_gdi_outbuf_free_region_for_update, evas_software_gdi_outbuf_idle_flush, evas_software_gdi_outbuf_flush, + NULL, evas_software_gdi_outbuf_free, width, height)) goto on_error; diff --git a/src/modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h b/src/modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h index d3a3620e29..5f31ad4988 100644 --- a/src/modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h +++ b/src/modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h @@ -54,6 +54,7 @@ typedef void (*Outbuf_Free_Region_For_Update)(Outbuf *ob, RGBA_Image *update); typedef void (*Outbuf_Free)(Outbuf *ob); typedef int (*Outbuf_Get_Rot)(Outbuf *ob); typedef void (*Outbuf_Flush)(Outbuf *ob, Tilebuf_Rect *rects, Evas_Render_Mode render_mode); +typedef void (*Outbuf_Redraws_Clear)(Outbuf *ob); struct _Render_Engine_Software_Generic { @@ -74,6 +75,7 @@ struct _Render_Engine_Software_Generic Outbuf_Free_Region_For_Update outbuf_free_region_for_update; Outbuf_Free outbuf_free; Outbuf_Flush outbuf_flush; + Outbuf_Redraws_Clear outbuf_redraws_clear; unsigned int w, h; @@ -98,6 +100,7 @@ evas_render_engine_software_generic_init(Render_Engine_Software_Generic *re, Outbuf_Free_Region_For_Update outbuf_free_region_for_update, Outbuf_Idle_Flush outbuf_idle_flush, Outbuf_Flush outbuf_flush, + Outbuf_Redraws_Clear outbuf_redraws_clear, Outbuf_Free outbuf_free, int w, int h) { @@ -115,6 +118,7 @@ evas_render_engine_software_generic_init(Render_Engine_Software_Generic *re, re->outbuf_free_region_for_update = outbuf_free_region_for_update; re->outbuf_free = outbuf_free; re->outbuf_flush = outbuf_flush; + re->outbuf_redraws_clear = outbuf_redraws_clear; re->rects = NULL; for (i = 0; i < 4; i++) diff --git a/src/modules/evas/engines/software_generic/evas_engine.c b/src/modules/evas/engines/software_generic/evas_engine.c index 52505d8882..62ad71aa11 100644 --- a/src/modules/evas/engines/software_generic/evas_engine.c +++ b/src/modules/evas/engines/software_generic/evas_engine.c @@ -3877,6 +3877,7 @@ eng_output_redraws_clear(void *data) re = (Render_Engine_Software_Generic *)data; evas_common_tilebuf_clear(re->tb); + if (re->outbuf_redraws_clear) re->outbuf_redraws_clear(re->ob); } static Tilebuf_Rect * diff --git a/src/modules/evas/engines/software_x11/evas_engine.c b/src/modules/evas/engines/software_x11/evas_engine.c index dc926e6378..6429a5a079 100644 --- a/src/modules/evas/engines/software_x11/evas_engine.c +++ b/src/modules/evas/engines/software_x11/evas_engine.c @@ -186,6 +186,7 @@ _output_xlib_setup(int w, int h, int rot, Display *disp, Drawable draw, evas_software_xlib_outbuf_free_region_for_update, evas_software_xlib_outbuf_idle_flush, evas_software_xlib_outbuf_flush, + NULL, evas_software_xlib_outbuf_free, w, h)) goto on_error; @@ -247,6 +248,7 @@ _output_swapbuf_setup(int w, int h, int rot, Display *disp, Drawable draw, evas_software_xlib_swapbuf_free_region_for_update, evas_software_xlib_swapbuf_idle_flush, evas_software_xlib_swapbuf_flush, + NULL, evas_software_xlib_swapbuf_free, w, h)) goto on_error; @@ -305,6 +307,7 @@ _output_xcb_setup(int w, int h, int rot, xcb_connection_t *conn, evas_software_xcb_outbuf_free_region_for_update, evas_software_xcb_outbuf_idle_flush, evas_software_xcb_outbuf_flush, + NULL, evas_software_xcb_outbuf_free, w, h)) goto on_error; diff --git a/src/modules/evas/engines/wayland_egl/evas_engine.c b/src/modules/evas/engines/wayland_egl/evas_engine.c index a85c593e6f..707f4ddf83 100644 --- a/src/modules/evas/engines/wayland_egl/evas_engine.c +++ b/src/modules/evas/engines/wayland_egl/evas_engine.c @@ -597,6 +597,7 @@ eng_setup(Evas *evas, void *info) eng_outbuf_update_region_free, NULL, eng_outbuf_flush, + NULL, eng_window_free, eng_window_use, eng_outbuf_gl_context_get, diff --git a/src/modules/evas/engines/wayland_shm/evas_engine.c b/src/modules/evas/engines/wayland_shm/evas_engine.c index 0c4abe2e09..ee339c1dac 100644 --- a/src/modules/evas/engines/wayland_shm/evas_engine.c +++ b/src/modules/evas/engines/wayland_shm/evas_engine.c @@ -55,6 +55,7 @@ _render_engine_swapbuf_setup(int w, int h, Evas_Engine_Info_Wayland_Shm *einfo) _evas_outbuf_update_region_free, _evas_outbuf_idle_flush, _evas_outbuf_flush, + NULL, _evas_outbuf_free, w, h)) goto err; |