Ecore.Animator is no more an Eo object in C :(
#TheWhiteRabbitIsDead
This commit is contained in:
parent
5680c76a49
commit
8f23c26d89
|
@ -255,8 +255,9 @@ import atexit
|
|||
|
||||
|
||||
cdef Eina_Bool _ecore_task_cb(void *data) with gil:
|
||||
cdef Eo obj = <Eo>data
|
||||
cdef Eina_Bool ret
|
||||
cdef:
|
||||
Eo obj = <Eo>data
|
||||
Eina_Bool ret
|
||||
|
||||
try:
|
||||
ret = obj._task_exec()
|
||||
|
|
|
@ -60,27 +60,44 @@ cdef class Animator(Eo):
|
|||
self.func = func
|
||||
self.args = args
|
||||
self.kargs = kargs
|
||||
self._set_obj(ecore_animator_add(_ecore_task_cb, <void *>self))
|
||||
|
||||
# From efl 1.18 animators are no more Eo objects in C, thus
|
||||
# we cannot use Eo.obj and _set_obj() anymore :(
|
||||
# self._set_obj(ecore_animator_add(_ecore_task_cb, <void *>self))
|
||||
self.obj2 = ecore_animator_add(_ecore_task_cb, <void *>self)
|
||||
Py_INCREF(self)
|
||||
|
||||
def __str__(self):
|
||||
return "%s Animator(func=%s, args=%s, kargs=%s)" % (Eo.__repr__(self),
|
||||
self.func, self.args, self.kargs)
|
||||
return "Animator(obj=%#x, func=%s, args=%s, kargs=%s)" % (
|
||||
<uintptr_t>self.obj2, self.func, self.args, self.kargs)
|
||||
|
||||
def __repr__(self):
|
||||
return "%s Animator(func=%s, args=%s, kargs=%s)" % (Eo.__repr__(self),
|
||||
self.func, self.args, self.kargs)
|
||||
return "Animator(obj=%#x, func=%s, args=%s, kargs=%s)" % (
|
||||
<uintptr_t>self.obj2, 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_animator_del(self.obj)
|
||||
ecore_animator_del(self.obj2)
|
||||
self.obj2 = NULL
|
||||
Py_DECREF(self)
|
||||
|
||||
def stop(self):
|
||||
"""Alias for delete()."""
|
||||
self.delete()
|
||||
|
||||
|
||||
cdef Eina_Bool _ecore_timeline_cb(void *data, double pos) with gil:
|
||||
assert data != NULL
|
||||
cdef:
|
||||
|
@ -146,11 +163,17 @@ cdef class AnimatorTimeline(Animator):
|
|||
self.func = func
|
||||
self.args = args
|
||||
self.kargs = kargs
|
||||
self._set_obj(ecore_animator_timeline_add(runtime, _ecore_timeline_cb, <void *>self))
|
||||
|
||||
# From efl 1.18 animators are no more Eo objects in C, thus
|
||||
# we cannot use Eo.obj and _set_obj() anymore :(
|
||||
# self._set_obj(ecore_animator_timeline_add(runtime, _ecore_timeline_cb, <void *>self))
|
||||
self.obj2 = ecore_animator_timeline_add(runtime, _ecore_timeline_cb, <void *>self)
|
||||
Py_INCREF(self)
|
||||
|
||||
cpdef bint _task_exec(self) except *:
|
||||
return self.func(*self.args, **self.kargs)
|
||||
|
||||
|
||||
def animator_add(func, *args, **kargs):
|
||||
"""Animator factory, for C-api compatibility.
|
||||
|
||||
|
|
|
@ -107,7 +107,7 @@ cdef extern from "Ecore.h":
|
|||
# Basic Types
|
||||
#
|
||||
ctypedef cEo Ecore_Timer
|
||||
ctypedef cEo Ecore_Animator
|
||||
ctypedef struct Ecore_Animator
|
||||
ctypedef cEo Ecore_Poller
|
||||
ctypedef cEo Ecore_Idler
|
||||
ctypedef cEo Ecore_Idle_Enterer
|
||||
|
@ -307,6 +307,8 @@ cdef class Animator(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_Animator *obj2
|
||||
|
||||
|
||||
cdef class Poller(Eo):
|
||||
|
|
Loading…
Reference in New Issue