summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Foreman <derekf@osg.samsung.com>2016-09-06 17:01:37 -0500
committerDerek Foreman <derekf@osg.samsung.com>2016-09-08 13:55:24 -0500
commit5eec34812efa5b73ed18d71871e87a997928d214 (patch)
tree049f2913255120a1de9b6aac5fea202580b58282
parentce7991b9934d469419d3a3982d30329184cc287e (diff)
downloadefl-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.
-rw-r--r--src/modules/evas/engines/buffer/evas_engine.c1
-rw-r--r--src/modules/evas/engines/drm/evas_engine.c1
-rw-r--r--src/modules/evas/engines/eglfs/evas_engine.c1
-rw-r--r--src/modules/evas/engines/fb/evas_engine.c1
-rw-r--r--src/modules/evas/engines/gl_cocoa/evas_engine.c1
-rw-r--r--src/modules/evas/engines/gl_drm/evas_engine.c1
-rw-r--r--src/modules/evas/engines/gl_generic/Evas_Engine_GL_Generic.h2
-rw-r--r--src/modules/evas/engines/gl_sdl/evas_engine.c1
-rw-r--r--src/modules/evas/engines/gl_x11/evas_engine.c1
-rw-r--r--src/modules/evas/engines/software_ddraw/evas_engine.c1
-rw-r--r--src/modules/evas/engines/software_gdi/evas_engine.c1
-rw-r--r--src/modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h4
-rw-r--r--src/modules/evas/engines/software_generic/evas_engine.c1
-rw-r--r--src/modules/evas/engines/software_x11/evas_engine.c3
-rw-r--r--src/modules/evas/engines/wayland_egl/evas_engine.c1
-rw-r--r--src/modules/evas/engines/wayland_shm/evas_engine.c1
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;