summaryrefslogtreecommitdiff
path: root/src/lib/ecore/ecore_timer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/ecore/ecore_timer.c')
-rw-r--r--src/lib/ecore/ecore_timer.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/lib/ecore/ecore_timer.c b/src/lib/ecore/ecore_timer.c
index 2ecd67af7e..08396d6ae0 100644
--- a/src/lib/ecore/ecore_timer.c
+++ b/src/lib/ecore/ecore_timer.c
@@ -603,7 +603,7 @@ EAPI void
_ecore_timer_delay(Ecore_Timer *obj,
double add)
{
- Ecore_Timer_Private_Data *timer = eo_data_get(obj, MY_CLASS);
+ Ecore_Timer_Private_Data *timer = eo_data_scope_get(obj, MY_CLASS);
if (timer->frozen)
{
@@ -612,6 +612,7 @@ _ecore_timer_delay(Ecore_Timer *obj,
else
{
timers = (Ecore_Timer_Private_Data *)eina_inlist_remove(EINA_INLIST_GET(timers), EINA_INLIST_GET(timer));
+ eo_data_unref(obj, timer);
_ecore_timer_set(obj, timer->at + add, timer->in, timer->func, timer->data);
}
}
@@ -619,12 +620,13 @@ _ecore_timer_delay(Ecore_Timer *obj,
void *
_ecore_timer_del(Ecore_Timer *obj)
{
- Ecore_Timer_Private_Data *timer = eo_data_get(obj, MY_CLASS);
+ Ecore_Timer_Private_Data *timer = eo_data_scope_get(obj, MY_CLASS);
if (timer->frozen && !timer->references)
{
void *data = timer->data;
+ eo_data_unref(obj, timer);
suspended = (Ecore_Timer_Private_Data *)eina_inlist_remove(EINA_INLIST_GET(suspended), EINA_INLIST_GET(timer));
if (timer->delete_me)
@@ -668,6 +670,7 @@ _ecore_timer_shutdown(void)
{
timers = (Ecore_Timer_Private_Data *)eina_inlist_remove(EINA_INLIST_GET(timers), EINA_INLIST_GET(timers));
+ eo_data_unref(timer->obj, timer);
eo_parent_set(timer->obj, NULL);
if (eo_destructed_is(timer->obj))
eo_manual_free(timer->obj);
@@ -679,6 +682,7 @@ _ecore_timer_shutdown(void)
{
suspended = (Ecore_Timer_Private_Data *)eina_inlist_remove(EINA_INLIST_GET(suspended), EINA_INLIST_GET(suspended));
+ eo_data_unref(timer->obj, timer);
eo_parent_set(timer->obj, NULL);
if (eo_destructed_is(timer->obj))
eo_manual_free(timer->obj);
@@ -710,6 +714,7 @@ _ecore_timer_cleanup(void)
}
timers = (Ecore_Timer_Private_Data *)eina_inlist_remove(EINA_INLIST_GET(timers), EINA_INLIST_GET(timer));
+ eo_data_unref(timer->obj, timer);
eo_parent_set(timer->obj, NULL);
if (eo_destructed_is(timer->obj))
eo_manual_free(timer->obj);
@@ -734,6 +739,7 @@ _ecore_timer_cleanup(void)
}
suspended = (Ecore_Timer_Private_Data *)eina_inlist_remove(EINA_INLIST_GET(suspended), EINA_INLIST_GET(timer));
+ eo_data_unref(timer->obj, timer);
eo_parent_set(timer->obj, NULL);
if (eo_destructed_is(timer->obj))
eo_manual_free(timer->obj);
@@ -794,7 +800,7 @@ static inline Ecore_Timer *
_ecore_timer_after_get(Ecore_Timer *obj)
{
Ecore_Timer *ret = NULL;
- Ecore_Timer_Private_Data *base = eo_data_get(obj, MY_CLASS);
+ Ecore_Timer_Private_Data *base = eo_data_scope_get(obj, MY_CLASS);
Ecore_Timer_Private_Data *timer = (Ecore_Timer_Private_Data *)EINA_INLIST_GET(base)->next;
Ecore_Timer_Private_Data *valid_timer = NULL;
@@ -826,7 +832,7 @@ _ecore_timer_next_get(void)
second_obj = _ecore_timer_after_get(first_obj);
if (second_obj) first_obj = second_obj;
- first = eo_data_get(first_obj, MY_CLASS);
+ first = eo_data_scope_get(first_obj, MY_CLASS);
now = ecore_loop_time_get();
in = first->at - now;
@@ -838,10 +844,11 @@ static inline void
_ecore_timer_reschedule(Ecore_Timer *obj,
double when)
{
- Ecore_Timer_Private_Data *timer = eo_data_get(obj, MY_CLASS);
+ Ecore_Timer_Private_Data *timer = eo_data_scope_get(obj, MY_CLASS);
if ((timer->delete_me) || (timer->frozen)) return;
timers = (Ecore_Timer_Private_Data *)eina_inlist_remove(EINA_INLIST_GET(timers), EINA_INLIST_GET(timer));
+ eo_data_unref(obj, timer);
/* if the timer would have gone off more than 15 seconds ago,
* assume that the system hung and set the timer to go off
@@ -932,7 +939,7 @@ _ecore_timer_set(Ecore_Timer *obj,
{
Ecore_Timer_Private_Data *t2;
- Ecore_Timer_Private_Data *timer = eo_data_get(obj, MY_CLASS);
+ Ecore_Timer_Private_Data *timer = eo_data_ref(obj, MY_CLASS);
timers_added = 1;
timer->at = at;