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