devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=e099e338586f91b43092bba467c2600f3c8d8bba

commit e099e338586f91b43092bba467c2600f3c8d8bba
Author: Chris Michael <[email protected]>
Date:   Thu Oct 16 11:26:18 2014 -0400

    add code to handle pending input regions during surface commit
    
    Signed-off-by: Chris Michael <[email protected]>
---
 src/bin/e_comp_wl.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index f15c444..9b6a32f 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -1017,5 +1017,52 @@ e_comp_wl_surface_commit(E_Client *ec)
           }
      }
 
+   /* handle pending input */
+   if (ec->comp_data->pending.input)
+     {
+        tmp = eina_tiler_new(ec->w, ec->h);
+        eina_tiler_tile_size_set(tmp, 1, 1);
+        eina_tiler_rect_add(tmp, 
+                            &(Eina_Rectangle){0, 0, ec->client.w, 
ec->client.h});
+
+        if ((src = eina_tiler_intersection(ec->comp_data->pending.input, tmp)))
+          {
+             Eina_Rectangle *rect;
+             Eina_Iterator *itr;
+             int i = 0;
+
+             ec->shape_input_rects_num = 0;
+
+             itr = eina_tiler_iterator_new(src);
+             EINA_ITERATOR_FOREACH(itr, rect)
+               ec->shape_input_rects_num += 1;
+
+             ec->shape_input_rects = 
+               malloc(sizeof(Eina_Rectangle) * ec->shape_input_rects_num);
+
+             if (ec->shape_input_rects)
+               {
+                  EINA_ITERATOR_FOREACH(itr, rect)
+                    {
+                       ec->shape_input_rects[i] = 
+                         *(Eina_Rectangle *)((char *)rect);
+
+                       ec->shape_input_rects[i].x = rect->x;
+                       ec->shape_input_rects[i].y = rect->y;
+                       ec->shape_input_rects[i].w = rect->w;
+                       ec->shape_input_rects[i].h = rect->h;
+
+                       i++;
+                    }
+               }
+
+             eina_iterator_free(itr);
+             eina_tiler_free(src);
+          }
+
+        eina_tiler_free(tmp);
+        eina_tiler_clear(ec->comp_data->pending.opaque);
+     }
+
    return EINA_TRUE;
 }

-- 


Reply via email to