forked from enlightenment/efl
ecore loop + animator - add call to get if an animator cb has run this iter
this adds a simple call and infra to get if an animator has run this iteration. it's simple and not really useful other than internally to efl.
This commit is contained in:
parent
de7b7f381c
commit
cc1ff31276
|
@ -73,6 +73,7 @@ EAPI void ecore_main_loop_glib_always_integrate_disable(void);
|
||||||
|
|
||||||
EAPI void ecore_main_loop_begin(void);
|
EAPI void ecore_main_loop_begin(void);
|
||||||
EAPI void ecore_main_loop_quit(void);
|
EAPI void ecore_main_loop_quit(void);
|
||||||
|
EAPI Eina_Bool ecore_main_loop_animator_ticked_get(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef Ecore_Cb Ecore_Cb
|
* @typedef Ecore_Cb Ecore_Cb
|
||||||
|
|
|
@ -53,6 +53,7 @@ static Ecore_Cb begin_tick_cb = NULL;
|
||||||
static const void *begin_tick_data = NULL;
|
static const void *begin_tick_data = NULL;
|
||||||
static Ecore_Cb end_tick_cb = NULL;
|
static Ecore_Cb end_tick_cb = NULL;
|
||||||
static const void *end_tick_data = NULL;
|
static const void *end_tick_data = NULL;
|
||||||
|
static Eina_Bool animator_ran = EINA_FALSE;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_begin_tick(void)
|
_begin_tick(void)
|
||||||
|
@ -114,6 +115,7 @@ _do_tick(void)
|
||||||
(!animator->suspended) &&
|
(!animator->suspended) &&
|
||||||
(!animator->just_added))
|
(!animator->just_added))
|
||||||
{
|
{
|
||||||
|
animator_ran = EINA_TRUE;
|
||||||
if (!_ecore_call_task_cb(animator->func, animator->data))
|
if (!_ecore_call_task_cb(animator->func, animator->data))
|
||||||
{
|
{
|
||||||
animator->delete_me = EINA_TRUE;
|
animator->delete_me = EINA_TRUE;
|
||||||
|
@ -657,6 +659,18 @@ _ecore_animator_shutdown(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_ecore_animator_run_reset(void)
|
||||||
|
{
|
||||||
|
animator_ran = EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Eina_Bool
|
||||||
|
_ecore_animator_run_get(void)
|
||||||
|
{
|
||||||
|
return animator_ran;
|
||||||
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_ecore_animator_run(void *data)
|
_ecore_animator_run(void *data)
|
||||||
{
|
{
|
||||||
|
|
|
@ -707,6 +707,7 @@ _ecore_main_gsource_dispatch(GSource *source EINA_UNUSED,
|
||||||
|
|
||||||
if (ecore_idling && events_ready)
|
if (ecore_idling && events_ready)
|
||||||
{
|
{
|
||||||
|
_ecore_animator_run_reset();
|
||||||
_ecore_idle_exiter_call();
|
_ecore_idle_exiter_call();
|
||||||
ecore_idling = 0;
|
ecore_idling = 0;
|
||||||
}
|
}
|
||||||
|
@ -723,6 +724,7 @@ _ecore_main_gsource_dispatch(GSource *source EINA_UNUSED,
|
||||||
|
|
||||||
if (ecore_fds_ready || events_ready || timers_ready)
|
if (ecore_fds_ready || events_ready || timers_ready)
|
||||||
{
|
{
|
||||||
|
_ecore_animator_run_reset();
|
||||||
_ecore_idle_exiter_call();
|
_ecore_idle_exiter_call();
|
||||||
ecore_idling = 0;
|
ecore_idling = 0;
|
||||||
}
|
}
|
||||||
|
@ -1066,6 +1068,21 @@ ecore_main_loop_quit(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns if an animator has ticked off during this loop iteration
|
||||||
|
*
|
||||||
|
* @return EINA_TRUE if an animator has been called, EINA_FALSE otherwise.
|
||||||
|
*
|
||||||
|
* There should be little need for anyone to use this - ever.
|
||||||
|
*
|
||||||
|
* @since 1.9
|
||||||
|
*/
|
||||||
|
EAPI Eina_Bool
|
||||||
|
ecore_main_loop_animator_ticked_get(void)
|
||||||
|
{
|
||||||
|
return _ecore_animator_run_get();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the function to use when monitoring multiple file descriptors,
|
* Sets the function to use when monitoring multiple file descriptors,
|
||||||
* and waiting until one of more of the file descriptors before ready
|
* and waiting until one of more of the file descriptors before ready
|
||||||
|
@ -2002,7 +2019,11 @@ start_loop: /***************************************************************/
|
||||||
process_all: /***********************************************************/
|
process_all: /***********************************************************/
|
||||||
|
|
||||||
/* we came out of our "wait state" so idle has exited */
|
/* we came out of our "wait state" so idle has exited */
|
||||||
if (!once_only) _ecore_idle_exiter_call();
|
if (!once_only)
|
||||||
|
{
|
||||||
|
_ecore_animator_run_reset();
|
||||||
|
_ecore_idle_exiter_call();
|
||||||
|
}
|
||||||
/* call the fd handler per fd that became alive... */
|
/* call the fd handler per fd that became alive... */
|
||||||
/* this should read or write any data to the monitored fd and then */
|
/* this should read or write any data to the monitored fd and then */
|
||||||
/* post events onto the ecore event pipe if necessary */
|
/* post events onto the ecore event pipe if necessary */
|
||||||
|
|
|
@ -219,6 +219,8 @@ void _ecore_exe_event_del_free(void *data,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void _ecore_animator_shutdown(void);
|
void _ecore_animator_shutdown(void);
|
||||||
|
void _ecore_animator_run_reset(void);
|
||||||
|
Eina_Bool _ecore_animator_run_get(void);
|
||||||
|
|
||||||
void _ecore_poller_shutdown(void);
|
void _ecore_poller_shutdown(void);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue