kuuko pushed a commit to branch master.

http://git.enlightenment.org/bindings/python/python-efl.git/commit/?id=bef896b4908dc7e273b17643114e17b178d80b55

commit bef896b4908dc7e273b17643114e17b178d80b55
Author: Kai Huuhko <kai.huu...@gmail.com>
Date:   Wed Oct 2 05:59:21 2013 +0300

    Elementary: Fix transit del_cb
---
 efl/elementary/transit.pyx          | 15 +++++++++++----
 efl/utils/conversions.pyx           |  4 ++--
 examples/elementary/test_transit.py |  3 ++-
 3 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/efl/elementary/transit.pyx b/efl/elementary/transit.pyx
index fa69bd3..3210d66 100644
--- a/efl/elementary/transit.pyx
+++ b/efl/elementary/transit.pyx
@@ -165,11 +165,16 @@ ELM_TRANSIT_TWEEN_MODE_DECELERATE = 
enums.ELM_TRANSIT_TWEEN_MODE_DECELERATE
 ELM_TRANSIT_TWEEN_MODE_ACCELERATE = enums.ELM_TRANSIT_TWEEN_MODE_ACCELERATE
 
 
-cdef void elm_transit_del_cb(void *data, Elm_Transit *transit):
+cdef void elm_transit_del_cb(void *data, Elm_Transit *transit) with gil:
     cdef:
-        Transit trans = <object>data
-        tuple args = trans.del_cb_args
-        dict kwargs = trans.del_cb_kwargs
+        Transit trans
+        tuple args
+        dict kwargs
+
+    if data != NULL:
+        trans = <Transit?>data
+        args = trans.del_cb_args
+        kwargs = trans.del_cb_kwargs
 
     trans.del_cb(trans, *args, **kwargs)
 
@@ -199,6 +204,7 @@ cdef class Transit(object):
 
         """
         self.obj = elm_transit_add()
+        Py_INCREF(self)
 
     def delete(self):
         """delete()
@@ -371,6 +377,7 @@ cdef class Transit(object):
         if not callable(func):
             raise TypeError("func is not callable.")
 
+        self.del_cb = func
         self.del_cb_args = args
         self.del_cb_kwargs = kwargs
 
diff --git a/efl/utils/conversions.pyx b/efl/utils/conversions.pyx
index 4976c2f..a9b9bb8 100644
--- a/efl/utils/conversions.pyx
+++ b/efl/utils/conversions.pyx
@@ -21,7 +21,7 @@ from cpython cimport PyUnicode_AsUTF8String
 
 from efl.c_eo cimport Eo as cEo
 from efl.eo cimport Eo, object_from_instance
-from efl.eina cimport eina_list_append
+from efl.eina cimport eina_list_append, eina_stringshare_add
 
 cdef unicode _touni(char* s):
     """
@@ -108,7 +108,7 @@ cdef Eina_List *python_list_strings_to_eina_list(list 
strings):
     cdef Eina_List *lst = NULL
     for s in strings:
         if isinstance(s, unicode): s = PyUnicode_AsUTF8String(s)
-        lst = eina_list_append(lst, strdup(s))
+        lst = eina_list_append(lst, eina_stringshare_add(s))
     return lst
 
 
diff --git a/examples/elementary/test_transit.py 
b/examples/elementary/test_transit.py
index 5b94b59..d01b55c 100644
--- a/examples/elementary/test_transit.py
+++ b/examples/elementary/test_transit.py
@@ -83,7 +83,8 @@ def transit_wipe(obj):
     trans.go()
 
 def transit_del_cb(transit, *args, **kwargs):
-    data.freeze_events = False
+    obj = args[0]
+    obj.freeze_events = False
 
 def transit_image_animation(obj, data):
     ic = data

-- 


Reply via email to