Fix the semicolon, and small optimisation.
authornash <nash@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 13 Feb 2011 00:27:03 +0000 (00:27 +0000)
committernash <nash@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 13 Feb 2011 00:27:03 +0000 (00:27 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@56975 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

ChangeLog
src/lib/canvas/evas_object_image.c

index e3a3972..8496135 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
           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.
+
index 8a076fe..488ba3d 100644 (file)
@@ -341,7 +341,8 @@ evas_object_image_source_set(Evas_Object *obj, Evas_Object *src)
    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)
      {
@@ -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,
                                                                  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;