evas: handle proxy with the right context.

SVN revision: 74340
This commit is contained in:
Cedric BAIL 2012-07-24 04:27:17 +00:00
parent 843255a175
commit 58827ba3b6
3 changed files with 17 additions and 15 deletions

View File

@ -913,3 +913,7 @@
* Fixed evas_gl resource list have cleared properly when it is released * Fixed evas_gl resource list have cleared properly when it is released
so it would be no problem when it is reinitialized in one same process. so it would be no problem when it is reinitialized in one same process.
2012-07-24 Cedric Bail
* Handle Proxy with the right context.

View File

@ -24,6 +24,7 @@ Fixes:
* Fix garbage left by mapped smart object when they fly away from the canvas. * Fix garbage left by mapped smart object when they fly away from the canvas.
* Fix map life cycle. * Fix map life cycle.
* Don't crash when calling evas_object_smart_type_check without type. * Don't crash when calling evas_object_smart_type_check without type.
* Handle proxy with the right context.
Removal: Removal:
* Remove EVAS_FRAME_QUEUING, EVAS_SLI, METRIC_CACHE and WORD_CACHE. * Remove EVAS_FRAME_QUEUING, EVAS_SLI, METRIC_CACHE and WORD_CACHE.

View File

@ -168,11 +168,8 @@ _evas_render_phase1_direct(Evas *e,
{ {
/* Flag need redraw on proxy too */ /* Flag need redraw on proxy too */
evas_object_clip_recalc(obj); evas_object_clip_recalc(obj);
if (obj->proxy.proxies) EINA_LIST_FOREACH(obj->proxy.proxies, l, proxy)
{ proxy->proxy.redraw = EINA_TRUE;
EINA_LIST_FOREACH(obj->proxy.proxies, l, proxy)
proxy->proxy.redraw = EINA_TRUE;
}
} }
} }
for (i = 0; i < render_objects->count; i++) for (i = 0; i < render_objects->count; i++)
@ -186,6 +183,8 @@ _evas_render_phase1_direct(Evas *e,
/* Flag need redraw on proxy too */ /* Flag need redraw on proxy too */
evas_object_clip_recalc(obj); evas_object_clip_recalc(obj);
obj->func->render_pre(obj); obj->func->render_pre(obj);
if (obj->proxy.redraw)
_evas_render_prev_cur_clip_cache_add(e, obj);
if (obj->proxy.proxies) if (obj->proxy.proxies)
{ {
obj->proxy.redraw = EINA_TRUE; obj->proxy.redraw = EINA_TRUE;
@ -195,8 +194,6 @@ _evas_render_phase1_direct(Evas *e,
_evas_render_prev_cur_clip_cache_add(e, proxy); _evas_render_prev_cur_clip_cache_add(e, proxy);
} }
} }
else if (obj->proxy.redraw)
_evas_render_prev_cur_clip_cache_add(e, obj);
RD(" pre-render-done smart:%p|%p [%p, %i] | [%p, %i] has_map:%i had_map:%i\n", RD(" pre-render-done smart:%p|%p [%p, %i] | [%p, %i] has_map:%i had_map:%i\n",
obj->smart.smart, obj->smart.smart,
@ -993,7 +990,7 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
0, 0, obj->cur.map->surface_w, obj->cur.map->surface_h); 0, 0, obj->cur.map->surface_w, obj->cur.map->surface_h);
} }
e->engine.func->context_clip_unset(e->engine.data.output, e->engine.func->context_clip_unset(e->engine.data.output,
e->engine.data.context); context);
if (obj->cur.map->surface) if (obj->cur.map->surface)
{ {
if (obj->smart.smart) if (obj->smart.smart)
@ -1018,7 +1015,7 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
obj->cur.clipper->cur.cache.clip.w, obj->cur.clipper->cur.cache.clip.w,
obj->cur.clipper->cur.cache.clip.h); obj->cur.clipper->cur.cache.clip.h);
e->engine.func->context_clip_set(e->engine.data.output, e->engine.func->context_clip_set(e->engine.data.output,
e->engine.data.context, context,
x + off_x, y + off_y, w, h); x + off_x, y + off_y, w, h);
} }
} }
@ -1039,21 +1036,21 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
obj->cur.clipper->cur.cache.clip.w, obj->cur.clipper->cur.cache.clip.w,
obj->cur.clipper->cur.cache.clip.h); obj->cur.clipper->cur.cache.clip.h);
e->engine.func->context_clip_set(e->engine.data.output, e->engine.func->context_clip_set(e->engine.data.output,
e->engine.data.context, context,
x + off_x, y + off_y, w, h); x + off_x, y + off_y, w, h);
} }
} }
} }
// if (surface == e->engine.data.output) // if (surface == e->engine.data.output)
e->engine.func->context_clip_clip(e->engine.data.output, e->engine.func->context_clip_clip(e->engine.data.output,
e->engine.data.context, context,
ecx, ecy, ecw, ech); ecx, ecy, ecw, ech);
if (obj->cur.cache.clip.visible) if (obj->cur.cache.clip.visible)
{ {
obj->layer->evas->engine.func->context_multiplier_unset obj->layer->evas->engine.func->context_multiplier_unset
(e->engine.data.output, e->engine.data.context); (e->engine.data.output, context);
obj->layer->evas->engine.func->image_map_draw obj->layer->evas->engine.func->image_map_draw
(e->engine.data.output, e->engine.data.context, surface, (e->engine.data.output, context, surface,
obj->cur.map->surface, obj->spans, obj->cur.map->surface, obj->spans,
obj->cur.map->smooth, 0); obj->cur.map->smooth, 0);
} }
@ -1170,10 +1167,10 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
obj->cur.clipper->cur.cache.clip.w, obj->cur.clipper->cur.cache.clip.w,
obj->cur.clipper->cur.cache.clip.h); obj->cur.clipper->cur.cache.clip.h);
e->engine.func->context_clip_set(e->engine.data.output, e->engine.func->context_clip_set(e->engine.data.output,
e->engine.data.context, context,
x + off_x, y + off_y, w, h); x + off_x, y + off_y, w, h);
e->engine.func->context_clip_clip(e->engine.data.output, e->engine.func->context_clip_clip(e->engine.data.output,
e->engine.data.context, context,
ecx, ecy, ecw, ech); ecx, ecy, ecw, ech);
} }