kuuko pushed a commit to branch master.

commit 28d68cf2a026d08c82eb7b85add2479da1acafc3
Author: Kai Huuhko <[email protected]>
Date:   Sat Mar 30 21:15:32 2013 +0000

    Evas: Add some trivial performance optimizations + TODOs for more.
---
 efl/evas/efl.evas.pyx        |  7 +++++-
 efl/evas/efl.evas_object.pxi | 60 ++++++++++++++++++++++++++------------------
 2 files changed, 42 insertions(+), 25 deletions(-)

diff --git a/efl/evas/efl.evas.pyx b/efl/evas/efl.evas.pyx
index 5025e95..671418c 100644
--- a/efl/evas/efl.evas.pyx
+++ b/efl/evas/efl.evas.pyx
@@ -21,7 +21,12 @@ from efl cimport *
 from efl.eo cimport Eo, object_from_instance, _object_mapping_register
 from efl.eo cimport _ctouni, _cfruni, _touni, _fruni
 
-
+#
+# TODO: Put these in enums.pxd and cimport + assign them here, for exposing
+#       to Python API.
+#
+#       Use the C values (enums.VALUE) internally.
+#
 EVAS_LAYER_MIN = -32768
 EVAS_LAYER_MAX =  32767
 
diff --git a/efl/evas/efl.evas_object.pxi b/efl/evas/efl.evas_object.pxi
index 2b94ee3..885cdae 100644
--- a/efl/evas/efl.evas_object.pxi
+++ b/efl/evas/efl.evas_object.pxi
@@ -157,35 +157,55 @@ cdef class Object(Eo):
 
     """
     def __cinit__(self):
+        #
+        # TODO: Make this C only if possible
+        #
         self._callbacks = [None] * evas_object_event_callbacks_len
 
-
+    #
+    # TODO: make the funcs used here and in _set_common_params cpdef
+    #       so they'll generate C calls instead of python calls
+    #
     def __str__(self):
+        cdef:
+            int x, y, w, h
+            int r, g, b, a
+            str name = self.name_get()
+            bint clip
+
         x, y, w, h = self.geometry_get()
         r, g, b, a = self.color_get()
-        name = self.name_get()
-        if name:
+
+        if name is not None:
             name_str = "name=%s, " % name
         else:
             name_str = ""
-        clip = bool(self.clip_get() is not None)
+
+        clip = self.clip_get() is not None
         return ("%s(%sgeometry=(%d, %d, %d, %d), color=(%d, %d, %d, %d), "
                 "layer=%s, clip=%s, visible=%s)") % \
-                (self.__class__.__name__, name_str, x, y, w, h,
+                (type(self).__name__, name_str, x, y, w, h,
                  r, g, b, a, self.layer_get(), clip, self.visible_get())
 
     def __repr__(self):
+        cdef:
+            int x, y, w, h
+            int r, g, b, a
+            str name = self.name_get()
+            bint clip
+
         x, y, w, h = self.geometry_get()
         r, g, b, a = self.color_get()
-        name = self.name_get()
+
         if name:
             name_str = "name=%s, " % name
         else:
             name_str = ""
+
         clip = bool(self.clip_get() is not None)
         return ("%s %s(%sgeometry=(%d, %d, %d, %d), color=(%d, %d, %d, %d), "
                 "layer=%s, clip=%s, visible=%s)") % (Eo.__str__(self),
-                 self.__class__.__name__, name_str, x, y, w, h,
+                 type(self).__name__, name_str, x, y, w, h,
                  r, g, b, a, self.layer_get(), clip, self.visible_get())
 
     cdef void _set_obj(self, Evas_Object *obj) except *:
@@ -196,15 +216,15 @@ cdef class Object(Eo):
 
     def _set_common_params(self, size=None, pos=None, geometry=None,
                            color=None, name=None):
-        if size:
+        if size is not None:
             self.size_set(*size)
-        if pos:
+        if pos is not None:
             self.pos_set(*pos)
-        if geometry:
+        if geometry is not None:
             self.geometry_set(*geometry)
-        if color:
+        if color is not None:
             self.color_set(*color_parse(color))
-        if name:
+        if name is not None:
             self.name_set(name)
 
     def delete(self):
@@ -303,14 +323,10 @@ cdef class Object(Eo):
 
         """
         def __get__(self):
-            cdef Evas_Object *other
-            other = evas_object_above_get(self.obj)
-            return object_from_instance(other)
+            return object_from_instance(evas_object_above_get(self.obj))
 
     def above_get(self):
-        cdef Evas_Object *other
-        other = evas_object_above_get(self.obj)
-        return object_from_instance(other)
+        return object_from_instance(evas_object_above_get(self.obj))
 
     property below:
         """ The object below this.
@@ -319,14 +335,10 @@ cdef class Object(Eo):
 
         """
         def __get__(self):
-            cdef Evas_Object *other
-            other = evas_object_below_get(self.obj)
-            return object_from_instance(other)
+            return object_from_instance(evas_object_below_get(self.obj))
 
     def below_get(self):
-        cdef Evas_Object *other
-        other = evas_object_below_get(self.obj)
-        return object_from_instance(other)
+        return object_from_instance(evas_object_below_get(self.obj))
 
     property top:
         """The topmost object. (Same as self.evas.top_get()).

-- 

------------------------------------------------------------------------------
Own the Future-Intel(R) Level Up Game Demo Contest 2013
Rise to greatness in Intel's independent game demo contest. Compete 
for recognition, cash, and the chance to get your game on Steam. 
$5K grand prize plus 10 genre and skill prizes. Submit your demo 
by 6/6/13. http://altfarm.mediaplex.com/ad/ck/12124-176961-30367-2

Reply via email to