Fix the semicolon, and small optimisation.

SVN revision: 56975
This commit is contained in:
Brett Nash 2011-02-13 00:27:03 +00:00
parent 0bde1e25a1
commit 8729a314ab
2 changed files with 17 additions and 4 deletions

View File

@ -74,3 +74,12 @@
region which will always be sane, and even has insanity region which will always be sane, and even has insanity
checks now. At worst you'll get an unrendered image if the checks now. At worst you'll get an unrendered image if the
values are silly and some slowness. No crashes. values are silly and some slowness. No crashes.
2011-02-13 Brett Nash (nash@nash.id.au)
* Fix crash when deleting proxies. This _technically_ breaks
evas engines which realloc engine data when a border is set.
Practically no engines do this. There is a comment there (and
if the engine does that border set won't work), in which case
a more complex work-around is possible.

View File

@ -341,7 +341,8 @@ evas_object_image_source_set(Evas_Object *obj, Evas_Object *src)
if (o->cur.source == src) return EINA_TRUE; if (o->cur.source == src) return EINA_TRUE;
/* Kill the image if any */ /* Kill the image if any */
evas_object_image_file_set(obj, NULL, NULL); if (o->cur.file || o->cur.key)
evas_object_image_file_set(obj, NULL, NULL);
if (o->cur.source) if (o->cur.source)
{ {
@ -2831,9 +2832,12 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
obj->layer->evas->engine.func->image_scale_hint_set(output, obj->layer->evas->engine.func->image_scale_hint_set(output,
pixels, pixels,
o->scale_hint); o->scale_hint);
o->engine_data = obj->layer->evas->engine.func->image_border_set(output, pixels, /* This is technically a bug here: If the value is recreated
o->cur.border.l, o->cur.border.r, * (which is returned)it may be a new object, however exactly 0
o->cur.border.t, o->cur.border.b); * of all the evas engines do this. */
obj->layer->evas->engine.func->image_border_set(output, pixels,
o->cur.border.l, o->cur.border.r,
o->cur.border.t, o->cur.border.b);
idx = evas_object_image_figure_x_fill(obj, o->cur.fill.x, o->cur.fill.w, &idw); idx = evas_object_image_figure_x_fill(obj, o->cur.fill.x, o->cur.fill.w, &idw);
idy = evas_object_image_figure_y_fill(obj, o->cur.fill.y, o->cur.fill.h, &idh); idy = evas_object_image_figure_y_fill(obj, o->cur.fill.y, o->cur.fill.h, &idh);
if (idw < 1) idw = 1; if (idw < 1) idw = 1;