summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mask.tar.gzbin0 -> 51620 bytes
-rw-r--r--tmp.patch57
2 files changed, 57 insertions, 0 deletions
diff --git a/mask.tar.gz b/mask.tar.gz
new file mode 100644
index 0000000..d788cbe
--- /dev/null
+++ b/mask.tar.gz
Binary files differ
diff --git a/tmp.patch b/tmp.patch
new file mode 100644
index 0000000..945a5c1
--- /dev/null
+++ b/tmp.patch
@@ -0,0 +1,57 @@
1diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c
2index 1d47ba06af..fc7452d712 100644
3--- a/src/lib/evas/canvas/evas_render.c
4+++ b/src/lib/evas/canvas/evas_render.c
5@@ -2195,6 +2195,20 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object *eo_obj,
6 if (obj->cur->clipper && (mapped > 1))
7 {
8 Evas_Object_Protected_Data *mask = obj->clip.mask;
9+ Eina_Bool invalid_cache_clip = EINA_FALSE;
10+
11+ /* Clipped boundary in map */
12+ int off_x2 = 0, off_y2 = 0;
13+ if (obj->cur->geometry.x < 0)
14+ {
15+ off_x2 = obj->cur->geometry.x;
16+ invalid_cache_clip = EINA_TRUE;
17+ }
18+ if (obj->cur->geometry.y < 0)
19+ {
20+ off_y2 = obj->cur->geometry.y;
21+ invalid_cache_clip = EINA_TRUE;
22+ }
23
24 if (obj->mask->surface != surface)
25 {
26@@ -2203,9 +2217,19 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object *eo_obj,
27 if ((_evas_render_has_map(obj) && !_evas_render_can_map(obj)) ||
28 _evas_render_object_is_mask(obj->cur->clipper))
29 evas_object_clip_recalc(obj);
30- _evas_render_mapped_context_clip_set(evas, eo_obj, obj, ctx,
31- proxy_render_data,
32- off_x, off_y);
33+
34+ if (invalid_cache_clip)
35+ {
36+ int x = obj->cur->clipper->cur->geometry.x + off_x + off_x2;
37+ int y = obj->cur->clipper->cur->geometry.y + off_y + off_y2;
38+ int w = obj->cur->clipper->cur->geometry.w - off_x2;
39+ int h = obj->cur->clipper->cur->geometry.h - off_y2;
40+ ENFN->context_clip_clip(ENC, ctx, x, y, w, h);
41+ }
42+ else
43+ _evas_render_mapped_context_clip_set(evas, eo_obj, obj, ctx,
44+ proxy_render_data,
45+ off_x, off_y);
46 }
47 else if (proxy_render_data)
48 {
49@@ -2222,7 +2246,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object *eo_obj,
50 }
51
52 /* Clipper masks */
53- _evas_render_mapped_mask(evas, obj, mask, proxy_render_data, output, ctx, off_x, off_y, level, do_async);
54+ _evas_render_mapped_mask(evas, obj, mask, proxy_render_data, output, ctx, off_x + off_x2, off_y + off_y2, level, do_async);
55 }
56
57 #ifdef REND_DBG