summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2013-06-17 10:55:30 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2013-06-17 10:55:30 +0200
commita7ad7697ebccaf2358437c62f0ec13e910e3f985 (patch)
tree1e203cefcac68814fe724ce00eb220c242081158
parent87160a5dd22bdde3efa22293f024aea9e74f6e1e (diff)
downloadefl-devs/jeyzu/eo-WIP.tar.gz
eo: reorder last operations in class creationdevs/jeyzu/eo-WIP
-rw-r--r--src/lib/eo/eo.c41
1 files changed, 20 insertions, 21 deletions
diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c
index 83d55bdb34..0bcc7cc0c9 100644
--- a/src/lib/eo/eo.c
+++ b/src/lib/eo/eo.c
@@ -966,6 +966,7 @@ eo_class_new(const Eo_Class_Description *desc, const Eo_Class *parent_id, ...)
}
klass = calloc(1, _eo_class_sz + extn_sz + mro_sz + mixins_sz);
+ EINA_MAGIC_SET(klass, EO_CLASS_EINA_MAGIC);
klass->parent = parent;
klass->desc = desc;
klass->extensions = (const _Eo_Class **) ((char *) klass + _eo_class_sz);
@@ -1032,26 +1033,11 @@ eo_class_new(const Eo_Class_Description *desc, const Eo_Class *parent_id, ...)
klass->obj_size = _eo_sz + extn_data_off;
- eina_lock_take(&_eo_class_creation_lock);
-
- klass->class_id = ++_eo_classes_last_id;
-
+ if (getenv("EO_DEBUG"))
{
- /* FIXME: Handle errors. */
- size_t arrsize = _eo_classes_last_id * sizeof(*_eo_classes);
- _Eo_Class **tmp;
- tmp = realloc(_eo_classes, arrsize);
-
- /* If it's the first allocation, memset. */
- if (!_eo_classes)
- memset(tmp, 0, arrsize);
-
- _eo_classes = tmp;
- _eo_classes[klass->class_id - 1] = klass;
+ fprintf(stderr, "Eo class '%s' will take %u bytes per object.\n",
+ desc->name, klass->obj_size);
}
- eina_lock_release(&_eo_class_creation_lock);
-
- EINA_MAGIC_SET(klass, EO_CLASS_EINA_MAGIC);
_eo_class_base_op_init(klass);
/* Flatten the function array */
@@ -1092,11 +1078,24 @@ eo_class_new(const Eo_Class_Description *desc, const Eo_Class *parent_id, ...)
_eo_class_constructor(klass);
- if (getenv("EO_DEBUG"))
+ eina_lock_take(&_eo_class_creation_lock);
+
+ klass->class_id = ++_eo_classes_last_id;
+
{
- fprintf(stderr, "Eo class '%s' will take %u bytes per object.\n",
- desc->name, klass->obj_size);
+ /* FIXME: Handle errors. */
+ size_t arrsize = _eo_classes_last_id * sizeof(*_eo_classes);
+ _Eo_Class **tmp;
+ tmp = realloc(_eo_classes, arrsize);
+
+ /* If it's the first allocation, memset. */
+ if (!_eo_classes)
+ memset(tmp, 0, arrsize);
+
+ _eo_classes = tmp;
+ _eo_classes[klass->class_id - 1] = klass;
}
+ eina_lock_release(&_eo_class_creation_lock);
return _eo_class_id_get(klass);
}