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

-- 


Reply via email to