fix fill render bug cedric reported. :)

SVN revision: 48393
This commit is contained in:
Carsten Haitzler 2010-04-28 14:38:46 +00:00
parent c4e6db910d
commit 8ea3844c85
2 changed files with 25 additions and 2 deletions

View File

@ -2682,6 +2682,7 @@ evas_object_image_render_pre(Evas_Object *obj)
/* if it changed geometry - and obviously not visibility or color */
/* caluclate differences since we have a constant color fill */
/* we really only need to update the differences */
#if 0 // XXX: maybe buggy?
if (((obj->cur.geometry.x != obj->prev.geometry.x) ||
(obj->cur.geometry.y != obj->prev.geometry.y) ||
(obj->cur.geometry.w != obj->prev.geometry.w) ||
@ -2704,6 +2705,7 @@ evas_object_image_render_pre(Evas_Object *obj)
obj->prev.geometry.h);
if (!o->pixel_updates) goto done;
}
#endif
if (((obj->cur.geometry.x != obj->prev.geometry.x) ||
(obj->cur.geometry.y != obj->prev.geometry.y) ||
(obj->cur.geometry.w != obj->prev.geometry.w) ||

View File

@ -722,8 +722,21 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
}
}
else
obj->func->render(obj, e->engine.data.output, ctx,
obj->cur.map->surface, off_x, off_y);
{
int x = 0, y = 0, w = 0, h = 0;
w = obj->cur.map->surface_w;
h = obj->cur.map->surface_h;
RECTS_CLIP_TO_RECT(x, y, w, h,
obj->cur.cache.clip.x + off_x,
obj->cur.cache.clip.y + off_y,
obj->cur.cache.clip.w,
obj->cur.cache.clip.h);
e->engine.func->context_clip_set(e->engine.data.output,
ctx, x, y, w, h);
obj->func->render(obj, e->engine.data.output, ctx,
obj->cur.map->surface, off_x, off_y);
}
e->engine.func->context_free(e->engine.data.output, ctx);
}
@ -1011,6 +1024,14 @@ evas_render_updates_internal(Evas *e,
}
if (((w > 0) && (h > 0)) || (obj->smart.smart))
{
if (!obj->smart.smart)
{
RECTS_CLIP_TO_RECT(x, y, w, h,
obj->cur.cache.clip.x + off_x,
obj->cur.cache.clip.y + off_y,
obj->cur.cache.clip.w,
obj->cur.cache.clip.h);
}
e->engine.func->context_clip_set(e->engine.data.output,
e->engine.data.context,
x, y, w, h);