diff options
author | Cedric BAIL <cedric.bail@free.fr> | 2012-07-24 04:27:17 +0000 |
---|---|---|
committer | Cedric BAIL <cedric.bail@free.fr> | 2012-07-24 04:27:17 +0000 |
commit | 58827ba3b6908b548d06f1ab139f6a2c358e527d (patch) | |
tree | c336847df49e01d8d1baeba6472ebff3076c2fc6 | |
parent | 843255a1752bd90ab08f3388689cc9c0e3ba6703 (diff) |
evas: handle proxy with the right context.
SVN revision: 74340
Diffstat (limited to '')
-rw-r--r-- | legacy/evas/ChangeLog | 4 | ||||
-rw-r--r-- | legacy/evas/NEWS | 1 | ||||
-rw-r--r-- | legacy/evas/src/lib/canvas/evas_render.c | 27 |
3 files changed, 17 insertions, 15 deletions
diff --git a/legacy/evas/ChangeLog b/legacy/evas/ChangeLog index 0a0a24130e..a0c175a294 100644 --- a/legacy/evas/ChangeLog +++ b/legacy/evas/ChangeLog | |||
@@ -913,3 +913,7 @@ | |||
913 | 913 | ||
914 | * Fixed evas_gl resource list have cleared properly when it is released | 914 | * Fixed evas_gl resource list have cleared properly when it is released |
915 | so it would be no problem when it is reinitialized in one same process. | 915 | so it would be no problem when it is reinitialized in one same process. |
916 | |||
917 | 2012-07-24 Cedric Bail | ||
918 | |||
919 | * Handle Proxy with the right context. | ||
diff --git a/legacy/evas/NEWS b/legacy/evas/NEWS index 1d4e76008d..dfe8024952 100644 --- a/legacy/evas/NEWS +++ b/legacy/evas/NEWS | |||
@@ -24,6 +24,7 @@ Fixes: | |||
24 | * Fix garbage left by mapped smart object when they fly away from the canvas. | 24 | * Fix garbage left by mapped smart object when they fly away from the canvas. |
25 | * Fix map life cycle. | 25 | * Fix map life cycle. |
26 | * Don't crash when calling evas_object_smart_type_check without type. | 26 | * Don't crash when calling evas_object_smart_type_check without type. |
27 | * Handle proxy with the right context. | ||
27 | 28 | ||
28 | Removal: | 29 | Removal: |
29 | * Remove EVAS_FRAME_QUEUING, EVAS_SLI, METRIC_CACHE and WORD_CACHE. | 30 | * Remove EVAS_FRAME_QUEUING, EVAS_SLI, METRIC_CACHE and WORD_CACHE. |
diff --git a/legacy/evas/src/lib/canvas/evas_render.c b/legacy/evas/src/lib/canvas/evas_render.c index dbd6b4ee65..9f82117ac3 100644 --- a/legacy/evas/src/lib/canvas/evas_render.c +++ b/legacy/evas/src/lib/canvas/evas_render.c | |||
@@ -168,11 +168,8 @@ _evas_render_phase1_direct(Evas *e, | |||
168 | { | 168 | { |
169 | /* Flag need redraw on proxy too */ | 169 | /* Flag need redraw on proxy too */ |
170 | evas_object_clip_recalc(obj); | 170 | evas_object_clip_recalc(obj); |
171 | if (obj->proxy.proxies) | 171 | EINA_LIST_FOREACH(obj->proxy.proxies, l, proxy) |
172 | { | 172 | proxy->proxy.redraw = EINA_TRUE; |
173 | EINA_LIST_FOREACH(obj->proxy.proxies, l, proxy) | ||
174 | proxy->proxy.redraw = EINA_TRUE; | ||
175 | } | ||
176 | } | 173 | } |
177 | } | 174 | } |
178 | for (i = 0; i < render_objects->count; i++) | 175 | for (i = 0; i < render_objects->count; i++) |
@@ -186,6 +183,8 @@ _evas_render_phase1_direct(Evas *e, | |||
186 | /* Flag need redraw on proxy too */ | 183 | /* Flag need redraw on proxy too */ |
187 | evas_object_clip_recalc(obj); | 184 | evas_object_clip_recalc(obj); |
188 | obj->func->render_pre(obj); | 185 | obj->func->render_pre(obj); |
186 | if (obj->proxy.redraw) | ||
187 | _evas_render_prev_cur_clip_cache_add(e, obj); | ||
189 | if (obj->proxy.proxies) | 188 | if (obj->proxy.proxies) |
190 | { | 189 | { |
191 | obj->proxy.redraw = EINA_TRUE; | 190 | obj->proxy.redraw = EINA_TRUE; |
@@ -195,8 +194,6 @@ _evas_render_phase1_direct(Evas *e, | |||
195 | _evas_render_prev_cur_clip_cache_add(e, proxy); | 194 | _evas_render_prev_cur_clip_cache_add(e, proxy); |
196 | } | 195 | } |
197 | } | 196 | } |
198 | else if (obj->proxy.redraw) | ||
199 | _evas_render_prev_cur_clip_cache_add(e, obj); | ||
200 | 197 | ||
201 | RD(" pre-render-done smart:%p|%p [%p, %i] | [%p, %i] has_map:%i had_map:%i\n", | 198 | RD(" pre-render-done smart:%p|%p [%p, %i] | [%p, %i] has_map:%i had_map:%i\n", |
202 | obj->smart.smart, | 199 | obj->smart.smart, |
@@ -993,7 +990,7 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface, | |||
993 | 0, 0, obj->cur.map->surface_w, obj->cur.map->surface_h); | 990 | 0, 0, obj->cur.map->surface_w, obj->cur.map->surface_h); |
994 | } | 991 | } |
995 | e->engine.func->context_clip_unset(e->engine.data.output, | 992 | e->engine.func->context_clip_unset(e->engine.data.output, |
996 | e->engine.data.context); | 993 | context); |
997 | if (obj->cur.map->surface) | 994 | if (obj->cur.map->surface) |
998 | { | 995 | { |
999 | if (obj->smart.smart) | 996 | if (obj->smart.smart) |
@@ -1018,7 +1015,7 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface, | |||
1018 | obj->cur.clipper->cur.cache.clip.w, | 1015 | obj->cur.clipper->cur.cache.clip.w, |
1019 | obj->cur.clipper->cur.cache.clip.h); | 1016 | obj->cur.clipper->cur.cache.clip.h); |
1020 | e->engine.func->context_clip_set(e->engine.data.output, | 1017 | e->engine.func->context_clip_set(e->engine.data.output, |
1021 | e->engine.data.context, | 1018 | context, |
1022 | x + off_x, y + off_y, w, h); | 1019 | x + off_x, y + off_y, w, h); |
1023 | } | 1020 | } |
1024 | } | 1021 | } |
@@ -1039,21 +1036,21 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface, | |||
1039 | obj->cur.clipper->cur.cache.clip.w, | 1036 | obj->cur.clipper->cur.cache.clip.w, |
1040 | obj->cur.clipper->cur.cache.clip.h); | 1037 | obj->cur.clipper->cur.cache.clip.h); |
1041 | e->engine.func->context_clip_set(e->engine.data.output, | 1038 | e->engine.func->context_clip_set(e->engine.data.output, |
1042 | e->engine.data.context, | 1039 | context, |
1043 | x + off_x, y + off_y, w, h); | 1040 | x + off_x, y + off_y, w, h); |
1044 | } | 1041 | } |
1045 | } | 1042 | } |
1046 | } | 1043 | } |
1047 | // if (surface == e->engine.data.output) | 1044 | // if (surface == e->engine.data.output) |
1048 | e->engine.func->context_clip_clip(e->engine.data.output, | 1045 | e->engine.func->context_clip_clip(e->engine.data.output, |
1049 | e->engine.data.context, | 1046 | context, |
1050 | ecx, ecy, ecw, ech); | 1047 | ecx, ecy, ecw, ech); |
1051 | if (obj->cur.cache.clip.visible) | 1048 | if (obj->cur.cache.clip.visible) |
1052 | { | 1049 | { |
1053 | obj->layer->evas->engine.func->context_multiplier_unset | 1050 | obj->layer->evas->engine.func->context_multiplier_unset |
1054 | (e->engine.data.output, e->engine.data.context); | 1051 | (e->engine.data.output, context); |
1055 | obj->layer->evas->engine.func->image_map_draw | 1052 | obj->layer->evas->engine.func->image_map_draw |
1056 | (e->engine.data.output, e->engine.data.context, surface, | 1053 | (e->engine.data.output, context, surface, |
1057 | obj->cur.map->surface, obj->spans, | 1054 | obj->cur.map->surface, obj->spans, |
1058 | obj->cur.map->smooth, 0); | 1055 | obj->cur.map->smooth, 0); |
1059 | } | 1056 | } |
@@ -1170,10 +1167,10 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface, | |||
1170 | obj->cur.clipper->cur.cache.clip.w, | 1167 | obj->cur.clipper->cur.cache.clip.w, |
1171 | obj->cur.clipper->cur.cache.clip.h); | 1168 | obj->cur.clipper->cur.cache.clip.h); |
1172 | e->engine.func->context_clip_set(e->engine.data.output, | 1169 | e->engine.func->context_clip_set(e->engine.data.output, |
1173 | e->engine.data.context, | 1170 | context, |
1174 | x + off_x, y + off_y, w, h); | 1171 | x + off_x, y + off_y, w, h); |
1175 | e->engine.func->context_clip_clip(e->engine.data.output, | 1172 | e->engine.func->context_clip_clip(e->engine.data.output, |
1176 | e->engine.data.context, | 1173 | context, |
1177 | ecx, ecy, ecw, ech); | 1174 | ecx, ecy, ecw, ech); |
1178 | } | 1175 | } |
1179 | 1176 | ||