derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=abba80f3d6bea27c17ec508cd54f5f867238d315
commit abba80f3d6bea27c17ec508cd54f5f867238d315 Author: Derek Foreman <[email protected]> Date: Fri Nov 10 13:31:00 2017 -0600 ecore_wl2: Add API for adding damage to a window This was done in the engine previously, but would be better as a library function. --- src/lib/ecore_wl2/Ecore_Wl2.h | 2 ++ src/lib/ecore_wl2/ecore_wl2_window.c | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h index 1b15e29d58..a9a3da232d 100644 --- a/src/lib/ecore_wl2/Ecore_Wl2.h +++ b/src/lib/ecore_wl2/Ecore_Wl2.h @@ -1974,6 +1974,8 @@ EAPI Eina_Bool ecore_wl2_window_resizing_get(Ecore_Wl2_Window *window); */ EAPI void ecore_wl2_window_update_begin(Ecore_Wl2_Window *window); +EAPI void ecore_wl2_window_damage(Ecore_Wl2_Window *window, Eina_Rectangle *rects, unsigned int count); + # endif # undef EAPI diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c b/src/lib/ecore_wl2/ecore_wl2_window.c index c64298f418..96988f7d44 100644 --- a/src/lib/ecore_wl2/ecore_wl2_window.c +++ b/src/lib/ecore_wl2/ecore_wl2_window.c @@ -1614,3 +1614,25 @@ EAPI void ecore_wl2_window_update_begin(Ecore_Wl2_Window *window) window->updating = EINA_TRUE; } + +EAPI void ecore_wl2_window_damage(Ecore_Wl2_Window *window, Eina_Rectangle *rects, unsigned int count) +{ + void (*damage)(struct wl_surface *, int32_t, int32_t, int32_t, int32_t); + unsigned int k; + int compositor_version; + + EINA_SAFETY_ON_NULL_RETURN(window); + + compositor_version = window->display->wl.compositor_version; + + if (compositor_version >= WL_SURFACE_DAMAGE_BUFFER_SINCE_VERSION) + damage = wl_surface_damage_buffer; + else + damage = wl_surface_damage; + + if ((rects) && (count > 0)) + for (k = 0; k < count; k++) + damage(window->surface, rects[k].x, rects[k].y, rects[k].w, rects[k].h); + else + damage(window->surface, 0, 0, INT_MAX, INT_MAX); +} --
