derekf pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=7a978fe58c67fb48d2d1769bbfb61fdd55225cd0

commit 7a978fe58c67fb48d2d1769bbfb61fdd55225cd0
Author: Derek Foreman <der...@osg.samsung.com>
Date:   Wed Oct 19 15:33:09 2016 -0500

    evas_engines: Send both surface and buffer damage to outbuf_flush callback
    
    Some engines should using sending surface damage, until now we'd only ever
    provided them with buffer damage.
    
    The difference is that surface damage is the damage to the surface the
    compositor is displaying, and the buffer damage is the damage to the
    buffer the client has rendered.  These are different when the client
    is using multiple buffers of different ages to render into.
    
    Anything that calls eglSwapBuffersWithDamage, wl_surface_damage() or
    wl_surface_damage_buffer() should be using surface damage, and not
    buffer damage.
    
    This patch is intended to make no functional change - any flush cb that
    used buffer damage before still should.  Actual fixes to follow.
    
    Apologies if I broke any engines - it's a bit of a copy and wasteland
    out here.
---
 src/modules/evas/engines/buffer/evas_engine.h                         | 2 +-
 src/modules/evas/engines/buffer/evas_outbuf.c                         | 2 +-
 src/modules/evas/engines/drm/evas_engine.h                            | 2 +-
 src/modules/evas/engines/drm/evas_outbuf.c                            | 2 +-
 src/modules/evas/engines/eglfs/evas_engine.h                          | 2 +-
 src/modules/evas/engines/eglfs/evas_outbuf.c                          | 2 +-
 src/modules/evas/engines/gl_cocoa/evas_engine.h                       | 2 +-
 src/modules/evas/engines/gl_cocoa/evas_outbuf.m                       | 3 ++-
 src/modules/evas/engines/gl_drm/evas_engine.h                         | 2 +-
 src/modules/evas/engines/gl_drm/evas_outbuf.c                         | 4 +++-
 src/modules/evas/engines/gl_sdl/evas_engine.c                         | 2 +-
 src/modules/evas/engines/gl_x11/evas_engine.h                         | 2 +-
 src/modules/evas/engines/gl_x11/evas_x_main.c                         | 4 +++-
 src/modules/evas/engines/software_ddraw/evas_engine.h                 | 2 +-
 src/modules/evas/engines/software_ddraw/evas_outbuf.c                 | 2 +-
 src/modules/evas/engines/software_gdi/evas_engine.h                   | 2 +-
 src/modules/evas/engines/software_gdi/evas_outbuf.c                   | 4 ++--
 .../evas/engines/software_generic/Evas_Engine_Software_Generic.h      | 2 +-
 src/modules/evas/engines/software_generic/evas_engine.c               | 2 +-
 src/modules/evas/engines/software_x11/evas_xcb_outbuf.c               | 4 ++--
 src/modules/evas/engines/software_x11/evas_xcb_outbuf.h               | 2 +-
 src/modules/evas/engines/software_x11/evas_xlib_outbuf.c              | 4 ++--
 src/modules/evas/engines/software_x11/evas_xlib_outbuf.h              | 2 +-
 src/modules/evas/engines/software_x11/evas_xlib_swapbuf.c             | 4 ++--
 src/modules/evas/engines/software_x11/evas_xlib_swapbuf.h             | 2 +-
 src/modules/evas/engines/wayland_egl/evas_engine.h                    | 2 +-
 src/modules/evas/engines/wayland_egl/evas_wl_main.c                   | 4 +++-
 src/modules/evas/engines/wayland_shm/evas_engine.h                    | 2 +-
 src/modules/evas/engines/wayland_shm/evas_outbuf.c                    | 4 ++--
 29 files changed, 41 insertions(+), 34 deletions(-)

diff --git a/src/modules/evas/engines/buffer/evas_engine.h 
b/src/modules/evas/engines/buffer/evas_engine.h
index 6ced36f..4fcf2e4 100644
--- a/src/modules/evas/engines/buffer/evas_engine.h
+++ b/src/modules/evas/engines/buffer/evas_engine.h
@@ -86,7 +86,7 @@ void         evas_buffer_outbuf_reconfigure                
(Outbuf *ob, int w, i
 void        *evas_buffer_outbuf_buf_new_region_for_update  (Outbuf *buf, int 
x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch);
 void         evas_buffer_outbuf_buf_free_region_for_update (Outbuf *buf, 
RGBA_Image *update);
 void         evas_buffer_outbuf_buf_push_updated_region    (Outbuf *buf, 
RGBA_Image *update, int x, int y, int w, int h);
-void         evas_buffer_outbuf_buf_switch_buffer          (Outbuf *buf, 
Tilebuf_Rect *rects, Evas_Render_Mode render_mode);
+void         evas_buffer_outbuf_buf_switch_buffer          (Outbuf *buf, 
Tilebuf_Rect *surface_damage, Tilebuf_Rect *buffer_damage, Evas_Render_Mode 
render_mode);
 Render_Engine_Swap_Mode evas_buffer_outbuf_buf_swap_mode_get(Outbuf *buf);
 int          evas_buffer_outbuf_buf_rot_get                (Outbuf *buf);
 
diff --git a/src/modules/evas/engines/buffer/evas_outbuf.c 
b/src/modules/evas/engines/buffer/evas_outbuf.c
index 59b32e0..0230316 100644
--- a/src/modules/evas/engines/buffer/evas_outbuf.c
+++ b/src/modules/evas/engines/buffer/evas_outbuf.c
@@ -170,7 +170,7 @@ evas_buffer_outbuf_buf_free_region_for_update(Outbuf *buf, 
RGBA_Image *update)
 }
 
 void
-evas_buffer_outbuf_buf_switch_buffer(Outbuf *buf, Tilebuf_Rect *rects 
EINA_UNUSED, Evas_Render_Mode render_mode EINA_UNUSED)
+evas_buffer_outbuf_buf_switch_buffer(Outbuf *buf, Tilebuf_Rect *surface_damage 
EINA_UNUSED, Tilebuf_Rect *buffer_damage EINA_UNUSED, Evas_Render_Mode 
render_mode EINA_UNUSED)
 {
    if (buf->func.switch_buffer)
      {
diff --git a/src/modules/evas/engines/drm/evas_engine.h 
b/src/modules/evas/engines/drm/evas_engine.h
index f125379..fe2228a 100644
--- a/src/modules/evas/engines/drm/evas_engine.h
+++ b/src/modules/evas/engines/drm/evas_engine.h
@@ -77,7 +77,7 @@ Render_Engine_Swap_Mode _outbuf_state_get(Outbuf *ob);
 void *_outbuf_update_region_new(Outbuf *ob, int x, int y, int w, int h, int 
*cx, int *cy, int *cw, int *ch);
 void _outbuf_update_region_push(Outbuf *ob, RGBA_Image *update, int x, int y, 
int w, int h);
 void _outbuf_update_region_free(Outbuf *ob, RGBA_Image *update);
-void _outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects, Evas_Render_Mode 
render_mode);
+void _outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage, Tilebuf_Rect 
*buffer_damage, Evas_Render_Mode render_mode);
 void _outbuf_redraws_clear(Outbuf *ob);
 
 #endif
diff --git a/src/modules/evas/engines/drm/evas_outbuf.c 
b/src/modules/evas/engines/drm/evas_outbuf.c
index cea01ed..2a9afa2 100644
--- a/src/modules/evas/engines/drm/evas_outbuf.c
+++ b/src/modules/evas/engines/drm/evas_outbuf.c
@@ -476,7 +476,7 @@ _outbuf_update_region_free(Outbuf *ob EINA_UNUSED, 
RGBA_Image *update EINA_UNUSE
 }
 
 void
-_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects EINA_UNUSED, Evas_Render_Mode 
render_mode)
+_outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage EINA_UNUSED, 
Tilebuf_Rect *buffer_damage EINA_UNUSED, Evas_Render_Mode render_mode)
 {
    Eina_Rectangle *r;
    RGBA_Image *img;
diff --git a/src/modules/evas/engines/eglfs/evas_engine.h 
b/src/modules/evas/engines/eglfs/evas_engine.h
index e02acb0..36cb29a 100644
--- a/src/modules/evas/engines/eglfs/evas_engine.h
+++ b/src/modules/evas/engines/eglfs/evas_engine.h
@@ -111,7 +111,7 @@ Eina_Bool evas_outbuf_update_region_first_rect(Outbuf *ob);
 void *evas_outbuf_update_region_new(Outbuf *ob, int x, int y, int w, int h, 
int *cx, int *cy, int *cw, int *ch);
 void evas_outbuf_update_region_push(Outbuf *ob, RGBA_Image *update, int x, int 
y, int w, int h);
 void evas_outbuf_update_region_free(Outbuf *ob, RGBA_Image *update);
-void evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects, Evas_Render_Mode 
render_mode);
+void evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage, Tilebuf_Rect 
*buffer_damage, Evas_Render_Mode render_mode);
 Evas_Engine_GL_Context* evas_outbuf_gl_context_get(Outbuf *ob);
 void *evas_outbuf_egl_display_get(Outbuf *ob);
 Context_3D *evas_outbuf_gl_context_new(Outbuf *ob);
diff --git a/src/modules/evas/engines/eglfs/evas_outbuf.c 
b/src/modules/evas/engines/eglfs/evas_outbuf.c
index aa3cd8a..d08f3f9 100644
--- a/src/modules/evas/engines/eglfs/evas_outbuf.c
+++ b/src/modules/evas/engines/eglfs/evas_outbuf.c
@@ -613,7 +613,7 @@ evas_outbuf_update_region_free(Outbuf *ob EINA_UNUSED, 
RGBA_Image *update EINA_U
 }
 
 void
-evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects EINA_UNUSED, 
Evas_Render_Mode render_mode)
+evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage EINA_UNUSED, 
Tilebuf_Rect *buffer_damage EINA_UNUSED, Evas_Render_Mode render_mode)
 {
    if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) goto end;
 
diff --git a/src/modules/evas/engines/gl_cocoa/evas_engine.h 
b/src/modules/evas/engines/gl_cocoa/evas_engine.h
index 6e56809..dc62ca8 100644
--- a/src/modules/evas/engines/gl_cocoa/evas_engine.h
+++ b/src/modules/evas/engines/gl_cocoa/evas_engine.h
@@ -99,7 +99,7 @@ Eina_Bool evas_outbuf_update_region_first_rect(Outbuf *ob);
 void *evas_outbuf_update_region_new(Outbuf *ob, int x, int y, int w, int h, 
int *cx, int *cy, int *cw, int *ch);
 void evas_outbuf_update_region_push(Outbuf *ob, RGBA_Image *update, int x, int 
y, int w, int h);
 void evas_outbuf_update_region_free(Outbuf *ob, RGBA_Image *update);
-void evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects, Evas_Render_Mode 
render_mode);
+void evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage, Tilebuf_Rect 
*buffer_damage, Evas_Render_Mode render_mode);
 Evas_Engine_GL_Context *evas_outbuf_gl_context_get(Outbuf *ob);
 Context_3D *evas_outbuf_gl_context_new(Outbuf *ob);
 void evas_outbuf_gl_context_use(Context_3D *ctx);
diff --git a/src/modules/evas/engines/gl_cocoa/evas_outbuf.m 
b/src/modules/evas/engines/gl_cocoa/evas_outbuf.m
index 3382797..4a8e176 100644
--- a/src/modules/evas/engines/gl_cocoa/evas_outbuf.m
+++ b/src/modules/evas/engines/gl_cocoa/evas_outbuf.m
@@ -281,7 +281,8 @@ evas_outbuf_update_region_first_rect(Outbuf *ob)
 
 void
 evas_outbuf_flush(Outbuf           *ob,
-                  Tilebuf_Rect     *rects       EINA_UNUSED,
+                  Tilebuf_Rect     *surface_damage      EINA_UNUSED,
+                  Tilebuf_Rect     *buffer_damage       EINA_UNUSED,
                   Evas_Render_Mode  render_mode)
 {
    NSOpenGLView *const view = ob->ns_gl_view;
diff --git a/src/modules/evas/engines/gl_drm/evas_engine.h 
b/src/modules/evas/engines/gl_drm/evas_engine.h
index 75fa705..7dbe0a1 100644
--- a/src/modules/evas/engines/gl_drm/evas_engine.h
+++ b/src/modules/evas/engines/gl_drm/evas_engine.h
@@ -128,7 +128,7 @@ Eina_Bool evas_outbuf_update_region_first_rect(Outbuf *ob);
 void *evas_outbuf_update_region_new(Outbuf *ob, int x, int y, int w, int h, 
int *cx, int *cy, int *cw, int *ch);
 void evas_outbuf_update_region_push(Outbuf *ob, RGBA_Image *update, int x, int 
y, int w, int h);
 void evas_outbuf_update_region_free(Outbuf *ob, RGBA_Image *update);
-void evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects, Evas_Render_Mode 
render_mode);
+void evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage, Tilebuf_Rect 
*buffer_damage, Evas_Render_Mode render_mode);
 void evas_outbuf_release_fb(void *, void *);
 
 Evas_Engine_GL_Context* evas_outbuf_gl_context_get(Outbuf *ob);
diff --git a/src/modules/evas/engines/gl_drm/evas_outbuf.c 
b/src/modules/evas/engines/gl_drm/evas_outbuf.c
index 6515b80..b663ba1 100644
--- a/src/modules/evas/engines/gl_drm/evas_outbuf.c
+++ b/src/modules/evas/engines/gl_drm/evas_outbuf.c
@@ -721,8 +721,10 @@ evas_outbuf_update_region_free(Outbuf *ob EINA_UNUSED, 
RGBA_Image *update EINA_U
 }
 
 void
-evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects, Evas_Render_Mode 
render_mode)
+evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage EINA_UNUSED, 
Tilebuf_Rect *buffer_damage, Evas_Render_Mode render_mode)
 {
+   Tilebuf_Rect *rects = buffer_damage;
+
    if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) goto end;
 
    if (!_re_wincheck(ob)) goto end;
diff --git a/src/modules/evas/engines/gl_sdl/evas_engine.c 
b/src/modules/evas/engines/gl_sdl/evas_engine.c
index c2c3400..1a43ae5 100644
--- a/src/modules/evas/engines/gl_sdl/evas_engine.c
+++ b/src/modules/evas/engines/gl_sdl/evas_engine.c
@@ -68,7 +68,7 @@ _outbuf_get_rot(Outbuf *ob EINA_UNUSED)
 }
 
 static void
-_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects EINA_UNUSED, Evas_Render_Mode 
render_mode EINA_UNUSED)
+_outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage EINA_UNUSED, 
Tilebuf_Rect *buffer_damage EINA_UNUSED, Evas_Render_Mode render_mode 
EINA_UNUSED)
 {
    SDL_GL_SwapWindow(ob->window);
 }
diff --git a/src/modules/evas/engines/gl_x11/evas_engine.h 
b/src/modules/evas/engines/gl_x11/evas_engine.h
index 1859d58..fae6ad4 100644
--- a/src/modules/evas/engines/gl_x11/evas_engine.h
+++ b/src/modules/evas/engines/gl_x11/evas_engine.h
@@ -194,7 +194,7 @@ void *eng_outbuf_new_region_for_update(Outbuf *ob,
 void eng_outbuf_push_free_region_for_update(Outbuf *ob, RGBA_Image *update);
 void eng_outbuf_push_updated_region(Outbuf *ob, RGBA_Image *update,
                                     int x, int y, int w, int h);
-void eng_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects, Evas_Render_Mode 
render_mode);
+void eng_outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage, Tilebuf_Rect 
*buffer_damage, Evas_Render_Mode render_mode);
 Evas_Engine_GL_Context *eng_outbuf_gl_context_get(Outbuf *ob);
 void *eng_outbuf_egl_display_get(Outbuf *ob);
 
diff --git a/src/modules/evas/engines/gl_x11/evas_x_main.c 
b/src/modules/evas/engines/gl_x11/evas_x_main.c
index e8e0aa3..207cb06 100644
--- a/src/modules/evas/engines/gl_x11/evas_x_main.c
+++ b/src/modules/evas/engines/gl_x11/evas_x_main.c
@@ -1540,8 +1540,10 @@ eng_outbuf_push_free_region_for_update(Outbuf *ob 
EINA_UNUSED,
 }
 
 void
-eng_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects, Evas_Render_Mode render_mode)
+eng_outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage EINA_UNUSED, 
Tilebuf_Rect *buffer_damage, Evas_Render_Mode render_mode)
 {
+   Tilebuf_Rect *rects = buffer_damage;
+
    if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) goto end;
 
    if (!_re_wincheck(ob)) goto end;
diff --git a/src/modules/evas/engines/software_ddraw/evas_engine.h 
b/src/modules/evas/engines/software_ddraw/evas_engine.h
index 25b3f45..8184417 100644
--- a/src/modules/evas/engines/software_ddraw/evas_engine.h
+++ b/src/modules/evas/engines/software_ddraw/evas_engine.h
@@ -139,7 +139,7 @@ void evas_software_ddraw_outbuf_push_updated_region(Outbuf  
   *buf,
 void evas_software_ddraw_outbuf_free_region_for_update(Outbuf     *buf,
                                                        RGBA_Image *update);
 
-void evas_software_ddraw_outbuf_flush(Outbuf *buf, Tilebuf_Rect *rects, 
Evas_Render_Mode render_mode);
+void evas_software_ddraw_outbuf_flush(Outbuf *buf, Tilebuf_Rect 
*surface_damage, Tilebuf_Rect *buffer_damage, Evas_Render_Mode render_mode);
 
 void evas_software_ddraw_outbuf_idle_flush(Outbuf *buf);
 
diff --git a/src/modules/evas/engines/software_ddraw/evas_outbuf.c 
b/src/modules/evas/engines/software_ddraw/evas_outbuf.c
index 65bc0a5..0d5a79a 100644
--- a/src/modules/evas/engines/software_ddraw/evas_outbuf.c
+++ b/src/modules/evas/engines/software_ddraw/evas_outbuf.c
@@ -356,7 +356,7 @@ evas_software_ddraw_outbuf_free_region_for_update(Outbuf    
 *buf EINA_UNUSED,
 }
 
 void
-evas_software_ddraw_outbuf_flush(Outbuf *buf, Tilebuf_Rect *rects EINA_UNUSED, 
Evas_Render_Mode render_mode)
+evas_software_ddraw_outbuf_flush(Outbuf *buf, Tilebuf_Rect *surface_damage 
EINA_UNUSED, Tilebuf_Rect *buffer_damage EINA_UNUSED, Evas_Render_Mode 
render_mode)
 {
    Eina_List *l;
    RGBA_Image       *im;
diff --git a/src/modules/evas/engines/software_gdi/evas_engine.h 
b/src/modules/evas/engines/software_gdi/evas_engine.h
index d8c08ff..08a50fc 100644
--- a/src/modules/evas/engines/software_gdi/evas_engine.h
+++ b/src/modules/evas/engines/software_gdi/evas_engine.h
@@ -183,7 +183,7 @@ void evas_software_gdi_outbuf_push_updated_region(Outbuf    
 *buf,
 void evas_software_gdi_outbuf_free_region_for_update(Outbuf     *buf,
                                                      RGBA_Image *update);
 
-void evas_software_gdi_outbuf_flush(Outbuf *buf, Tilebuf_Rect *rects, 
Evas_Render_Mode render_mode);
+void evas_software_gdi_outbuf_flush(Outbuf *buf, Tilebuf_Rect *surface_damage, 
Tilebuf_Rect *buffer_damage, Evas_Render_Mode render_mode);
 
 void evas_software_gdi_outbuf_idle_flush(Outbuf *buf);
 
diff --git a/src/modules/evas/engines/software_gdi/evas_outbuf.c 
b/src/modules/evas/engines/software_gdi/evas_outbuf.c
index d8186d2..e58692e 100644
--- a/src/modules/evas/engines/software_gdi/evas_outbuf.c
+++ b/src/modules/evas/engines/software_gdi/evas_outbuf.c
@@ -120,7 +120,7 @@ evas_software_gdi_outbuf_free(Outbuf *buf)
        free(obr);
      }
    evas_software_gdi_outbuf_idle_flush(buf);
-   evas_software_gdi_outbuf_flush(buf, NULL, MODE_FULL);
+   evas_software_gdi_outbuf_flush(buf, NULL, NULL, MODE_FULL);
 
    evas_software_gdi_shutdown(buf);
    free(buf);
@@ -563,7 +563,7 @@ evas_software_gdi_outbuf_free_region_for_update(Outbuf     
*buf EINA_UNUSED,
 }
 
 void
-evas_software_gdi_outbuf_flush(Outbuf *buf, Tilebuf_Rect *rects EINA_UNUSED, 
Evas_Render_Mode render_mode)
+evas_software_gdi_outbuf_flush(Outbuf *buf, Tilebuf_Rect *surface_damage 
EINA_UNUSED, Tilebuf_Rect *buffer_damage EINA_UNUSED, Evas_Render_Mode 
render_mode)
 {
    Eina_List     *l;
    RGBA_Image    *im;
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 5f31ad4..b716b6b 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
@@ -53,7 +53,7 @@ typedef void (*Outbuf_Idle_Flush)(Outbuf *ob);
 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_Flush)(Outbuf *ob, Tilebuf_Rect *surface_damage, 
Tilebuf_Rect *buffer_damage, Evas_Render_Mode render_mode);
 typedef void (*Outbuf_Redraws_Clear)(Outbuf *ob);
 
 struct _Render_Engine_Software_Generic
diff --git a/src/modules/evas/engines/software_generic/evas_engine.c 
b/src/modules/evas/engines/software_generic/evas_engine.c
index 05ffaf1..66a2d0b 100644
--- a/src/modules/evas/engines/software_generic/evas_engine.c
+++ b/src/modules/evas/engines/software_generic/evas_engine.c
@@ -4229,7 +4229,7 @@ eng_output_flush(void *data, Evas_Render_Mode render_mode)
    if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return;
 
    re = (Render_Engine_Software_Generic *)data;
-   if (re->outbuf_flush) re->outbuf_flush(re->ob, re->rects, render_mode);
+   if (re->outbuf_flush) re->outbuf_flush(re->ob, re->rects_prev[0], 
re->rects, render_mode);
    if (re->rects && render_mode != EVAS_RENDER_MODE_ASYNC_INIT)
      {
         evas_common_tilebuf_free_render_rects(re->rects);
diff --git a/src/modules/evas/engines/software_x11/evas_xcb_outbuf.c 
b/src/modules/evas/engines/software_x11/evas_xcb_outbuf.c
index a65c9d8..b376600 100644
--- a/src/modules/evas/engines/software_x11/evas_xcb_outbuf.c
+++ b/src/modules/evas/engines/software_x11/evas_xcb_outbuf.c
@@ -74,7 +74,7 @@ evas_software_xcb_outbuf_free(Outbuf *buf)
    eina_spinlock_release(&(buf->priv.lock));
 
    evas_software_xcb_outbuf_idle_flush(buf);
-   evas_software_xcb_outbuf_flush(buf, NULL, MODE_FULL);
+   evas_software_xcb_outbuf_flush(buf, NULL, NULL, MODE_FULL);
 
    if (buf->priv.x11.xcb.gc)
      xcb_free_gc(buf->priv.x11.xcb.conn, buf->priv.x11.xcb.gc);
@@ -614,7 +614,7 @@ evas_software_xcb_outbuf_free_region_for_update(Outbuf *buf 
EINA_UNUSED, RGBA_Im
 }
 
 void 
-evas_software_xcb_outbuf_flush(Outbuf *buf, Tilebuf_Rect *rects EINA_UNUSED, 
Evas_Render_Mode render_mode EINA_UNUSED)
+evas_software_xcb_outbuf_flush(Outbuf *buf, Tilebuf_Rect *surface_damage 
EINA_UNUSED, Tilebuf_Rect *buffer_damage EINA_UNUSED, Evas_Render_Mode 
render_mode EINA_UNUSED)
 {
    Eina_List *l = NULL;
    RGBA_Image *im = NULL;
diff --git a/src/modules/evas/engines/software_x11/evas_xcb_outbuf.h 
b/src/modules/evas/engines/software_x11/evas_xcb_outbuf.h
index 39ac6dc..ccb266e 100644
--- a/src/modules/evas/engines/software_x11/evas_xcb_outbuf.h
+++ b/src/modules/evas/engines/software_x11/evas_xcb_outbuf.h
@@ -8,7 +8,7 @@ void evas_software_xcb_outbuf_free(Outbuf *buf);
 Outbuf *evas_software_xcb_outbuf_setup(int w, int h, int rot, Outbuf_Depth 
depth, xcb_connection_t *conn, xcb_screen_t *screen, xcb_drawable_t draw, 
xcb_visualtype_t *vis, xcb_colormap_t cmap, int xdepth, Eina_Bool grayscale, 
int max_colors, xcb_drawable_t mask, Eina_Bool shape_dither, Eina_Bool alpha);
 void *evas_software_xcb_outbuf_new_region_for_update(Outbuf *buf, int x, int 
y, int w, int h, int *cx, int *cy, int *cw, int *ch);
 void evas_software_xcb_outbuf_free_region_for_update(Outbuf *buf, RGBA_Image 
*update);
-void evas_software_xcb_outbuf_flush(Outbuf *buf, Tilebuf_Rect *rects, 
Evas_Render_Mode render_mode);
+void evas_software_xcb_outbuf_flush(Outbuf *buf, Tilebuf_Rect *surface_damage, 
Tilebuf_Rect *buffer_damage, Evas_Render_Mode render_mode);
 void evas_software_xcb_outbuf_idle_flush(Outbuf *buf);
 void evas_software_xcb_outbuf_push_updated_region(Outbuf *buf, RGBA_Image 
*update, int x, int y, int w, int h);
 void evas_software_xcb_outbuf_reconfigure(Outbuf *buf, int w, int h, int rot, 
Outbuf_Depth depth);
diff --git a/src/modules/evas/engines/software_x11/evas_xlib_outbuf.c 
b/src/modules/evas/engines/software_x11/evas_xlib_outbuf.c
index cfd2609..0fb671c 100644
--- a/src/modules/evas/engines/software_x11/evas_xlib_outbuf.c
+++ b/src/modules/evas/engines/software_x11/evas_xlib_outbuf.c
@@ -187,7 +187,7 @@ evas_software_xlib_outbuf_free(Outbuf *buf)
      }
    eina_spinlock_release(&(buf->priv.lock));
    evas_software_xlib_outbuf_idle_flush(buf);
-   evas_software_xlib_outbuf_flush(buf, NULL, EVAS_RENDER_MODE_UNDEF);
+   evas_software_xlib_outbuf_flush(buf, NULL, NULL, EVAS_RENDER_MODE_UNDEF);
    if (buf->priv.x11.xlib.gc)
       XFreeGC(buf->priv.x11.xlib.disp, buf->priv.x11.xlib.gc);
    if (buf->priv.x11.xlib.gcm)
@@ -760,7 +760,7 @@ evas_software_xlib_outbuf_free_region_for_update(Outbuf 
*buf EINA_UNUSED, RGBA_I
 }
 
 void
-evas_software_xlib_outbuf_flush(Outbuf *buf, Tilebuf_Rect *rects EINA_UNUSED, 
Evas_Render_Mode render_mode EINA_UNUSED)
+evas_software_xlib_outbuf_flush(Outbuf *buf, Tilebuf_Rect *surface_damage 
EINA_UNUSED, Tilebuf_Rect *buffer_damage EINA_UNUSED, Evas_Render_Mode 
render_mode EINA_UNUSED)
 {
    Eina_List *l;
    RGBA_Image *im;
diff --git a/src/modules/evas/engines/software_x11/evas_xlib_outbuf.h 
b/src/modules/evas/engines/software_x11/evas_xlib_outbuf.h
index 16f0cf1..8f4ddd2 100644
--- a/src/modules/evas/engines/software_x11/evas_xlib_outbuf.h
+++ b/src/modules/evas/engines/software_x11/evas_xlib_outbuf.h
@@ -38,7 +38,7 @@ void  *evas_software_xlib_outbuf_new_region_for_update 
(Outbuf *buf,
 void         evas_software_xlib_outbuf_free_region_for_update (Outbuf     *buf,
                                                                RGBA_Image 
*update);
 
-void         evas_software_xlib_outbuf_flush (Outbuf *buf, Tilebuf_Rect 
*rects, Evas_Render_Mode render_mode);
+void         evas_software_xlib_outbuf_flush (Outbuf *buf, Tilebuf_Rect 
*surface_damage, Tilebuf_Rect *buffer_damage, Evas_Render_Mode render_mode);
 
 void         evas_software_xlib_outbuf_idle_flush (Outbuf *buf);
 
diff --git a/src/modules/evas/engines/software_x11/evas_xlib_swapbuf.c 
b/src/modules/evas/engines/software_x11/evas_xlib_swapbuf.c
index fdd7aa9..0b74421 100644
--- a/src/modules/evas/engines/software_x11/evas_xlib_swapbuf.c
+++ b/src/modules/evas/engines/software_x11/evas_xlib_swapbuf.c
@@ -34,7 +34,7 @@ evas_software_xlib_swapbuf_init(void)
 void
 evas_software_xlib_swapbuf_free(Outbuf *buf)
 {
-   evas_software_xlib_swapbuf_flush(buf, NULL, EVAS_RENDER_MODE_UNDEF);
+   evas_software_xlib_swapbuf_flush(buf, NULL, NULL, EVAS_RENDER_MODE_UNDEF);
    evas_software_xlib_swapbuf_idle_flush(buf);
    if (buf->priv.pal)
      evas_software_xlib_x_color_deallocate
@@ -315,7 +315,7 @@ evas_software_xlib_swapbuf_free_region_for_update(Outbuf 
*buf EINA_UNUSED, RGBA_
 }
 
 void
-evas_software_xlib_swapbuf_flush(Outbuf *buf, Tilebuf_Rect *rects EINA_UNUSED, 
Evas_Render_Mode render_mode)
+evas_software_xlib_swapbuf_flush(Outbuf *buf, Tilebuf_Rect *surface_damage 
EINA_UNUSED, Tilebuf_Rect *buffer_damage EINA_UNUSED, Evas_Render_Mode 
render_mode)
 {
    if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return;
 
diff --git a/src/modules/evas/engines/software_x11/evas_xlib_swapbuf.h 
b/src/modules/evas/engines/software_x11/evas_xlib_swapbuf.h
index 031c29d..d4a6245 100644
--- a/src/modules/evas/engines/software_x11/evas_xlib_swapbuf.h
+++ b/src/modules/evas/engines/software_x11/evas_xlib_swapbuf.h
@@ -32,7 +32,7 @@ void  
*evas_software_xlib_swapbuf_new_region_for_update(Outbuf *buf,
                                                         int    *ch);
 void         evas_software_xlib_swapbuf_free_region_for_update(Outbuf     *buf,
                                                                RGBA_Image 
*update);
-void         evas_software_xlib_swapbuf_flush(Outbuf *buf, Tilebuf_Rect 
*rects, Evas_Render_Mode render_mode);
+void         evas_software_xlib_swapbuf_flush(Outbuf *buf, Tilebuf_Rect 
*surface_damage, Tilebuf_Rect *buffer_damage, Evas_Render_Mode render_mode);
 void         evas_software_xlib_swapbuf_idle_flush(Outbuf *buf);
 void         evas_software_xlib_swapbuf_push_updated_region(Outbuf     *buf,
                                                             RGBA_Image *update,
diff --git a/src/modules/evas/engines/wayland_egl/evas_engine.h 
b/src/modules/evas/engines/wayland_egl/evas_engine.h
index c28b130..0441a34 100644
--- a/src/modules/evas/engines/wayland_egl/evas_engine.h
+++ b/src/modules/evas/engines/wayland_egl/evas_engine.h
@@ -121,7 +121,7 @@ void eng_outbuf_damage_region_set(Outbuf *ob, Tilebuf_Rect 
*damage);
 void *eng_outbuf_update_region_new(Outbuf *ob, int x, int y, int w, int h, int 
*cx, int *cy, int *cw, int *ch);
 void eng_outbuf_update_region_free(Outbuf *ob, RGBA_Image *update);
 void eng_outbuf_update_region_push(Outbuf *ob, RGBA_Image *update, int x, int 
y, int w, int h);
-void eng_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects, Evas_Render_Mode 
render_mode);
+void eng_outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage, Tilebuf_Rect 
*buffer_damage, Evas_Render_Mode render_mode);
 
 Evas_Engine_GL_Context *eng_outbuf_gl_context_get(Outbuf *ob);
 void *eng_outbuf_egl_display_get(Outbuf *ob);
diff --git a/src/modules/evas/engines/wayland_egl/evas_wl_main.c 
b/src/modules/evas/engines/wayland_egl/evas_wl_main.c
index b265d7f..c2d92ff 100644
--- a/src/modules/evas/engines/wayland_egl/evas_wl_main.c
+++ b/src/modules/evas/engines/wayland_egl/evas_wl_main.c
@@ -495,8 +495,10 @@ eng_outbuf_update_region_push(Outbuf *ob, RGBA_Image 
*update EINA_UNUSED, int x
 }
 
 void 
-eng_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects, Evas_Render_Mode render_mode)
+eng_outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage EINA_UNUSED, 
Tilebuf_Rect *buffer_damage, Evas_Render_Mode render_mode)
 {
+   Tilebuf_Rect *rects = buffer_damage;
+
    if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) goto end;
 
    if (!_re_wincheck(ob)) goto end;
diff --git a/src/modules/evas/engines/wayland_shm/evas_engine.h 
b/src/modules/evas/engines/wayland_shm/evas_engine.h
index 7436c6b..3cab22b 100644
--- a/src/modules/evas/engines/wayland_shm/evas_engine.h
+++ b/src/modules/evas/engines/wayland_shm/evas_engine.h
@@ -135,7 +135,7 @@ Eina_Bool _evas_shm_surface_create(Surface *s, int w, int 
h, int num_buff);
 
 Outbuf *_evas_outbuf_setup(int w, int h, Evas_Engine_Info_Wayland_Shm *info);
 void _evas_outbuf_free(Outbuf *ob);
-void _evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects, Evas_Render_Mode 
render_mode);
+void _evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage, Tilebuf_Rect 
*buffer_damage, Evas_Render_Mode render_mode);
 void _evas_outbuf_idle_flush(Outbuf *ob);
 
 Render_Engine_Swap_Mode _evas_outbuf_swap_mode_get(Outbuf *ob);
diff --git a/src/modules/evas/engines/wayland_shm/evas_outbuf.c 
b/src/modules/evas/engines/wayland_shm/evas_outbuf.c
index 6dafa85..35f4bc9 100644
--- a/src/modules/evas/engines/wayland_shm/evas_outbuf.c
+++ b/src/modules/evas/engines/wayland_shm/evas_outbuf.c
@@ -123,7 +123,7 @@ _evas_outbuf_free(Outbuf *ob)
         eina_rectangle_free(rect);
      }
 
-   _evas_outbuf_flush(ob, NULL, EVAS_RENDER_MODE_UNDEF);
+   _evas_outbuf_flush(ob, NULL, NULL, EVAS_RENDER_MODE_UNDEF);
    _evas_outbuf_idle_flush(ob);
 
    if (ob->surface) ob->surface->funcs.destroy(ob->surface);
@@ -195,7 +195,7 @@ _evas_surface_damage(struct wl_surface *s, int 
compositor_version, int w, int h,
 }
 
 void 
-_evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects EINA_UNUSED, 
Evas_Render_Mode render_mode)
+_evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage EINA_UNUSED, 
Tilebuf_Rect *buffer_damage EINA_UNUSED, Evas_Render_Mode render_mode)
 {
    Eina_Rectangle *result;
    RGBA_Image *img;

-- 


Reply via email to