region which will always be sane, and even has insanity
checks now. At worst you'll get an unrendered image if the
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.
+
if (o->cur.source == src) return EINA_TRUE;
/* 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)
{
obj->layer->evas->engine.func->image_scale_hint_set(output,
pixels,
o->scale_hint);
- o->engine_data = 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);
+ /* This is technically a bug here: If the value is recreated
+ * (which is returned)it may be a new object, however exactly 0
+ * 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);
idy = evas_object_image_figure_y_fill(obj, o->cur.fill.y, o->cur.fill.h, &idh);
if (idw < 1) idw = 1;