discomfitor pushed a commit to branch efl-1.17.

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

commit de0b15310544b8648eae454a17ca3f18fd9e022a
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Fri Feb 5 14:16:51 2016 -0500

    eina: invalidate last add/del rects when the opposite operation occurs
    
    applying this optimization to prevent the same rectangle from being added
    or removed repeatedly in succession would result in the rejecting of 
successive
    operations of the same type when the other operation occurred in between.
    
    as an example:
    
    add(0, 0, 100, 100)
    del(0, 0, 100, 100)
    add(0, 0, 100, 100)
    
    should yield (0, 0, 100, 100), not zero rects and a failure to add the
    second rect
    
    this fixes a serious issue in enlightenment where stacking three windows
    on top of each other with the first and third windows having the same 
geometry
    would result in the top window receiving no input geometry (oops)
    
    @fix
---
 src/lib/eina/eina_tiler.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/lib/eina/eina_tiler.c b/src/lib/eina/eina_tiler.c
index 555043a..5661a1b 100644
--- a/src/lib/eina/eina_tiler.c
+++ b/src/lib/eina/eina_tiler.c
@@ -1226,6 +1226,7 @@ EAPI Eina_Bool eina_tiler_rect_add(Eina_Tiler *t, const 
Eina_Rectangle *r)
       return EINA_FALSE;
 
    t->last.add = tmp;
+   t->last.del.w = t->last.del.h = -1;
 
    return _splitter_rect_add(t, &tmp);
 }
@@ -1251,6 +1252,7 @@ EAPI void eina_tiler_rect_del(Eina_Tiler *t, const 
Eina_Rectangle *r)
       return;
 
    t->last.del = tmp;
+   t->last.add.w = t->last.add.h = -1;
 
    _splitter_rect_del(t, &tmp);
 }

-- 


Reply via email to