davemds pushed a commit to branch master. http://git.enlightenment.org/bindings/python/python-efl.git/commit/?id=8ad73b3e698080ba5cad8a00bb57965572c6b473
commit 8ad73b3e698080ba5cad8a00bb57965572c6b473 Author: Dave Andreoli <d...@gurumeditation.it> Date: Sun Jul 16 14:12:32 2017 +0200 Ecore.Poller is no more an Eo object in C :( --- efl/ecore/efl.ecore_poller.pxi | 37 ++++++++++++++++++++++++++----------- include/efl.ecore.pxd | 4 +++- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/efl/ecore/efl.ecore_poller.pxi b/efl/ecore/efl.ecore_poller.pxi index 3a7fa15..617f94b 100644 --- a/efl/ecore/efl.ecore_poller.pxi +++ b/efl/ecore/efl.ecore_poller.pxi @@ -83,24 +83,39 @@ cdef class Poller(Eo): self.func = func self.args = args self.kargs = kargs - self._set_obj(ecore_poller_add(pol_type, interval, _ecore_task_cb, <void *>self)) + + # From efl 1.20 pollers are no more Eo objects in C, thus + # we cannot use Eo.obj and _set_obj() anymore :( + # self._set_obj(ecore_poller_add(pol_type, interval, _ecore_task_cb, <void *>self)) + self.obj2 = ecore_poller_add(pol_type, interval, _ecore_task_cb, <void *>self) + Py_INCREF(self) def __str__(self): - return "%s Poller(func=%s, args=%s, kargs=%s)" % (Eo.__str__(self), - self.func, self.args, self.kargs) + return "Poller(func=%s, args=%s, kargs=%s)" % ( + self.func, self.args, self.kargs) def __repr__(self): - return "%s Poller(interval=%d, func=%s, args=%s, kargs=%s)" % (Eo.__repr__(self), - self.interval if self.obj else -1, + return "Poller(interval=%d, func=%s, args=%s, kargs=%s)" % ( + self.interval if self.obj2 else -1, self.func, self.args, self.kargs) cpdef bint _task_exec(self) except *: return self.func(*self.args, **self.kargs) + def is_deleted(self): + """Check if the object has been deleted thus leaving the object shallow. + + :return: True if the object has been deleted yet, False otherwise. + :rtype: bool + + """ + return bool(self.obj2 == NULL) + def delete(self): """ Stop callback emission and free internal resources. """ - ecore_poller_del(self.obj) - + ecore_poller_del(self.obj2) + self.obj2 = NULL + Py_DECREF(self) property interval: """ The interval (in ticks) between each call of the poller @@ -109,15 +124,15 @@ cdef class Poller(Eo): """ def __get__(self): - return ecore_poller_poller_interval_get(self.obj) + return ecore_poller_poller_interval_get(self.obj2) def __set__(self, int t): - ecore_poller_poller_interval_set(self.obj, t) + ecore_poller_poller_interval_set(self.obj2, t) def interval_set(self, int t): - ecore_poller_poller_interval_set(self.obj, t) + ecore_poller_poller_interval_set(self.obj2, t) def interval_get(self): - return ecore_poller_poller_interval_get(self.obj) + return ecore_poller_poller_interval_get(self.obj2) def poller_add(int t, func, *args, **kargs): diff --git a/include/efl.ecore.pxd b/include/efl.ecore.pxd index 7e0a02b..8a7c46e 100644 --- a/include/efl.ecore.pxd +++ b/include/efl.ecore.pxd @@ -30,7 +30,7 @@ cdef extern from "Ecore.h": # ctypedef cEo Ecore_Timer ctypedef struct Ecore_Animator - ctypedef cEo Ecore_Poller + ctypedef struct Ecore_Poller ctypedef struct Ecore_Idler ctypedef struct Ecore_Idle_Enterer ctypedef struct Ecore_Idle_Exiter @@ -220,6 +220,8 @@ cdef class Poller(Eo): cdef readonly tuple args cdef readonly dict kargs cpdef bint _task_exec(self) except * + # we cannot use Eo.obj here because animators are no more eo objects in C + cdef Ecore_Poller *obj2 cdef class Idler(Eo): --