summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Andre <jpeg@videolan.org>2015-01-28 09:28:34 +0100
committerCedric BAIL <cedric@osg.samsung.com>2015-01-28 09:28:39 +0100
commit5b4e0ece687ac50a32f8e33cd45751e29ec121f4 (patch)
tree378c95d326e44da5d5c1cc3028ecaa27b326336c
parent17a47136c99030135534f6dd0515d3234c2a52cf (diff)
evas: fix some clipping issues before/after Evas_Map animations
Summary: This is an attempt at fixing: - T1767: The ultimate evil map & clip bug Force recalculation and re-propagation of clipper geometry after or just before a map is applied (only when transiting between map enabled and map disabled). I realized that doing clip_unset+clip_set in the E widget code would fix the issue, but this is not a solution that makes a lot of sense. Unfortunately I have no idea about the side effects of this patch, especially in terms of performance. Fixes T1767 and maybe T1630. Test Plan: Open PackageKit popup in E, check the animations and that clipping works fine both during, before and after the animations. Reviewers: raster, cedric Reviewed By: cedric Subscribers: cedric, Hermet Maniphest Tasks: T1767 Differential Revision: https://phab.enlightenment.org/D1897 Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
-rw-r--r--src/lib/evas/canvas/evas_render.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c
index 90326195b2..cdb25c5d6a 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -526,6 +526,14 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
526 { 526 {
527 RDI(level); 527 RDI(level);
528 RD(" obj mapped\n"); 528 RD(" obj mapped\n");
529 if (!hmap && obj->cur->clipper)
530 {
531 // Fix some bad clipping issues before an evas map animation starts
532 evas_object_change(obj->cur->clipper->object, obj->cur->clipper);
533 evas_object_clip_dirty(obj->cur->clipper->object, obj->cur->clipper);
534 evas_object_clip_recalc(obj->cur->clipper);
535 evas_object_update_bounding_box(eo_obj, obj);
536 }
529 if (obj->changed) 537 if (obj->changed)
530 { 538 {
531 if (map != hmap) *redraw_all = 1; 539 if (map != hmap) *redraw_all = 1;
@@ -577,6 +585,14 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
577 *redraw_all = 1; 585 *redraw_all = 1;
578 } 586 }
579 } 587 }
588 if (obj->cur->clipper)
589 {
590 // Fix some bad clipping issues after an evas_map animation finishes
591 evas_object_change(obj->cur->clipper->object, obj->cur->clipper);
592 evas_object_clip_dirty(obj->cur->clipper->object, obj->cur->clipper);
593 evas_object_clip_recalc(obj->cur->clipper);
594 evas_object_update_bounding_box(eo_obj, obj);
595 }
580 } 596 }
581 597
582 /* handle normal rendering. this object knows how to handle maps */ 598 /* handle normal rendering. this object knows how to handle maps */