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);
+}

-- 


Reply via email to