evas: reduce potential memory hole in Evas_Object_Protected_State.
authorCedric BAIL <cedric@osg.samsung.com>
Tue, 20 Jan 2015 17:27:59 +0000 (18:27 +0100)
committerCedric BAIL <cedric@osg.samsung.com>
Tue, 20 Jan 2015 17:46:08 +0000 (18:46 +0100)
The main difference between 1.12 and 1.13 memory foot print is actually
related to this two pointer to mask. I am wondering if there is not an
issue here also has we do have a duplicated pointer. We have prev_mask
and mask in both cur and prev state of an Evas_Object, but only mask
and prev_mask from the cur state seems to be accessed.

If we can remove two pointers from those state, we should have a decent
win in expedite benchmark. Hopefully 300KB to win there (Close to half
the additional cost in memory).

src/lib/evas/canvas/evas_object_main.c
src/lib/evas/include/evas_private.h

index 208a29eac15ed07ccbe17bc9e26042c86ed839cf..7c2ea944bd2c689e297907f5fb5bc3b5ac88c4cd 100644 (file)
@@ -28,7 +28,7 @@ static const Evas_Object_Map_Data default_map = {
 };
 static const Evas_Object_Protected_State default_state = {
   NULL, { 0, 0, 0, 0 },
-  { { 0, 0, 0, 0,  0, 0, 0, 0, NULL, EINA_FALSE, EINA_FALSE } },
+  { { NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, EINA_FALSE, EINA_FALSE } },
   { 255, 255, 255, 255 },
   1.0, 0, EVAS_RENDER_BLEND, EINA_FALSE, EINA_FALSE, EINA_FALSE, EINA_FALSE, EINA_FALSE, EINA_FALSE
 };
index 6283c85e0ddf8fc7a57de3dff5d2cb20e5e5443f..7e082a6fde21fa8b4ee86d97f94504c609aeea0a 100644 (file)
@@ -908,9 +908,10 @@ struct _Evas_Object_Protected_State
    Evas_Coord_Rectangle  geometry;
    struct {
       struct {
+         const Evas_Object_Protected_Data *mask, *prev_mask;
+
          Evas_Coord      x, y, w, h;
          unsigned char   r, g, b, a;
-         const Evas_Object_Protected_Data *mask, *prev_mask;
          Eina_Bool       visible : 1;
          Eina_Bool       dirty : 1;
       } clip;