devilhorns pushed a commit to branch master.

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

commit 0f6c33eff106f7235351dd51ce7835041f548cc1
Author: Chris Michael <[email protected]>
Date:   Fri Oct 21 15:17:43 2016 -0400

    evas: Fix issue of wayland clients not drawing border icons
    
    Due to commit 7ce79be1a1748c32c4d0e58358ce2242902cf89b, EFL Wayland
    Client applications stopped rendering their window icons. This was due
    to the code which tried to detect if an object is in framespace.
    Previous version would just check the obj->is_frame flag ... which is
    insufficient to determine if an object is in Framespace. This commit
    fixes that issue by checking an objects geometry also.
    
    @fix
    
    Signed-off-by: Chris Michael <[email protected]>
---
 src/lib/evas/canvas/evas_render.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/lib/evas/canvas/evas_render.c 
b/src/lib/evas/canvas/evas_render.c
index bec977a..19fdbd7 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -185,9 +185,15 @@ _accumulate_time(double before, Eina_Bool async)
 static int _render_busy = 0;
 
 static inline Eina_Bool
-_is_obj_in_framespace(Evas_Object_Protected_Data *obj)
+_is_obj_in_framespace(Evas_Object_Protected_Data *obj, Evas_Public_Data *evas)
 {
-   return obj->is_frame;
+   if (obj->is_frame) return EINA_TRUE;
+
+   return !RECTS_INTERSECT(obj->cur->geometry.x, obj->cur->geometry.y,
+                           obj->cur->geometry.w, obj->cur->geometry.h,
+                           evas->framespace.x, evas->framespace.y,
+                           evas->viewport.w - evas->framespace.w,
+                           evas->viewport.h - evas->framespace.h);
 }
 
 static inline void
@@ -1648,7 +1654,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
                }
           }
         ENFN->context_clip_clip(ENDT, ctx, ecx, ecy, ecw, ech);
-        if (!_is_obj_in_framespace(obj))
+        if (!_is_obj_in_framespace(obj, evas))
           _evas_render_framespace_context_clip_clip(evas, ctx);
 
         if (obj->cur->cache.clip.visible || !proxy_src_clip)
@@ -1824,7 +1830,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
                                           clipper->cur->cache.clip.w,
                                           clipper->cur->cache.clip.h);
                        ENFN->context_clip_set(ENDT, ctx, x + off_x, y + off_y, 
w, h);
-                       if (!_is_obj_in_framespace(obj))
+                       if (!_is_obj_in_framespace(obj, evas))
                          _evas_render_framespace_context_clip_clip(evas, ctx);
 
                        if (proxy_src_clip)
@@ -2393,7 +2399,7 @@ evas_render_updates_internal_loop(Evas *eo_e, 
Evas_Public_Data *e,
                                                    context,
                                                    x, y, w, h);
 
-                  if (!_is_obj_in_framespace(obj))
+                  if (!_is_obj_in_framespace(obj, e))
                     _evas_render_framespace_context_clip_clip(e, context);
                     
                   /* Clipper masks */

-- 


Reply via email to