efl/timer: correctly handle timer freeze during construction

Summary:
it is not correct to throw an error when methods are called during
construction

Reviewers: Hermet

Reviewed By: Hermet

Subscribers: Hermet, cedric, #reviewers, #committers

Tags: #efl_main_loop

Differential Revision: https://phab.enlightenment.org/D6787
This commit is contained in:
Mike Blumenkrantz 2018-08-27 12:09:49 +09:00 committed by Hermet Park
parent d1e4c6bab8
commit 1d7fb47f04
1 changed files with 11 additions and 10 deletions

View File

@ -327,14 +327,12 @@ _efl_loop_timer_efl_object_event_freeze(Eo *obj, Efl_Loop_Timer_Data *timer)
// Timer already frozen
if (timer->frozen) return;
if (EINA_UNLIKELY(!timer->initialized))
{
ERR("Attempt freezing an non unfinalized timer.");
return;
}
now = efl_loop_time_get(timer->loop);
timer->pending = timer->at - now;
/* only if timer interval has been set */
if (timer->initialized)
timer->pending = timer->at - now;
else
timer->pending = 0.0;
timer->at = 0.0;
timer->frozen = 1;
@ -369,6 +367,7 @@ _efl_loop_timer_efl_object_event_thaw(Eo *obj, Efl_Loop_Timer_Data *timer)
efl_event_thaw(efl_super(obj, MY_CLASS));
if (!timer->frozen) return; // Timer not frozen
timer->frozen = 0;
if (timer->loop_data)
{
@ -659,12 +658,14 @@ _efl_loop_timer_set(Efl_Loop_Timer_Data *timer, double at, double in)
{
if (!timer->loop_data) return;
timer->loop_data->timers_added = 1;
timer->at = at;
timer->in = in;
timer->just_added = 1;
timer->initialized = 1;
timer->frozen = 0;
timer->pending = 0.0;
if (!timer->frozen)
{
timer->at = at;
timer->pending = 0.0;
}
_efl_loop_timer_util_instanciate(timer->loop_data, timer);
}