discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=0ada4d3d56e5b5ed447ba7fc89d40cbddfb95ad0

commit 0ada4d3d56e5b5ed447ba7fc89d40cbddfb95ad0
Author: Derek Foreman <der...@osg.samsung.com>
Date:   Fri Apr 15 10:29:14 2016 -0500

    wayland_shm: Pull the damage stuff out of evas_shm
    
    This doesn't really care what the buffers were allocated with, so
    let's make this chunk of code useful to both the shm method and the
    upcoming dmabuf one
---
 src/modules/evas/engines/wayland_shm/evas_engine.h |  1 +
 src/modules/evas/engines/wayland_shm/evas_outbuf.c | 18 ++++++++++++++++++
 src/modules/evas/engines/wayland_shm/evas_shm.c    | 15 ++-------------
 3 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/src/modules/evas/engines/wayland_shm/evas_engine.h 
b/src/modules/evas/engines/wayland_shm/evas_engine.h
index 75342e9..6b3f56e 100644
--- a/src/modules/evas/engines/wayland_shm/evas_engine.h
+++ b/src/modules/evas/engines/wayland_shm/evas_engine.h
@@ -138,5 +138,6 @@ void _evas_outbuf_reconfigure(Outbuf *ob, int w, int h, int 
rot, Outbuf_Depth de
 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_surface_damage(struct wl_surface *s, int compositor_version, int w, 
int h, Eina_Rectangle *rects, unsigned int count);
 
 #endif
diff --git a/src/modules/evas/engines/wayland_shm/evas_outbuf.c 
b/src/modules/evas/engines/wayland_shm/evas_outbuf.c
index 7473e33..f68901a 100644
--- a/src/modules/evas/engines/wayland_shm/evas_outbuf.c
+++ b/src/modules/evas/engines/wayland_shm/evas_outbuf.c
@@ -153,6 +153,24 @@ _evas_outbuf_idle_flush(Outbuf *ob)
      }
 }
 
+void
+_evas_surface_damage(struct wl_surface *s, int compositor_version, int w, int 
h, Eina_Rectangle *rects, unsigned int count)
+{
+   void (*damage)(struct wl_surface *, int32_t, int32_t, int32_t, int32_t);
+   unsigned int k;
+
+   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(s, rects[k].x, rects[k].y, rects[k].w, rects[k].h);
+   else
+       damage(s, 0, 0, w, h);
+}
+
 void 
 _evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects EINA_UNUSED, 
Evas_Render_Mode render_mode)
 {
diff --git a/src/modules/evas/engines/wayland_shm/evas_shm.c 
b/src/modules/evas/engines/wayland_shm/evas_shm.c
index 8b5e15f..d2c02f5 100644
--- a/src/modules/evas/engines/wayland_shm/evas_shm.c
+++ b/src/modules/evas/engines/wayland_shm/evas_shm.c
@@ -541,11 +541,9 @@ _evas_shm_surface_data_get(Surface *s, int *w, int *h)
 void
 _evas_shm_surface_post(Surface *s, Eina_Rectangle *rects, unsigned int count)
 {
-   void (*damage)(struct wl_surface *, int32_t, int32_t, int32_t, int32_t);
    /* struct wl_callback *frame_cb; */
    Shm_Surface *surf;
    Shm_Leaf *leaf;
-   unsigned int k;
 
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
 
@@ -557,17 +555,8 @@ _evas_shm_surface_post(Surface *s, Eina_Rectangle *rects, 
unsigned int count)
 
    wl_surface_attach(surf->surface, leaf->data->buffer, 0, 0);
 
-   if (surf->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(surf->surface, rects[k].x, rects[k].y, rects[k].w, rects[k].h);
-   else
-     damage(surf->surface, 0, 0, leaf->w, leaf->h);
-
+   _evas_surface_damage(surf->surface, surf->compositor_version,
+                        leaf->w, leaf->h, rects, count);
    /* frame_cb = wl_surface_frame(surface->surface); */
    /* wl_callback_add_listener(frame_cb, &_shm_frame_listener, surface); */
 

-- 


Reply via email to