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 --