(menu_animation.c) Create more separate functions

This commit is contained in:
twinaphex 2017-01-17 16:40:48 +01:00
parent df783daab9
commit 2273b1d05f
4 changed files with 33 additions and 28 deletions

View File

@ -566,6 +566,33 @@ bool menu_animation_get_ideal_delta_time(menu_animation_ctx_delta_t *delta)
return true; return true;
} }
void menu_animation_update_time(void)
{
static retro_time_t last_clock_update = 0;
settings_t *settings = config_get_ptr();
cur_time = cpu_features_get_time_usec();
delta_time = cur_time - old_time;
if (delta_time >= IDEAL_DELTA_TIME* 4)
delta_time = IDEAL_DELTA_TIME * 4;
if (delta_time <= IDEAL_DELTA_TIME / 4)
delta_time = IDEAL_DELTA_TIME / 4;
old_time = cur_time;
if (((cur_time - last_clock_update) > 1000000)
&& settings->menu.timedate_enable)
{
animation_is_active = true;
last_clock_update = cur_time;
}
}
bool menu_animation_is_active(void)
{
return animation_is_active;
}
bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data) bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data)
{ {
switch (state) switch (state)
@ -588,8 +615,6 @@ bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data)
old_time = 0; old_time = 0;
delta_time = 0.0f; delta_time = 0.0f;
break; break;
case MENU_ANIMATION_CTL_IS_ACTIVE:
return animation_is_active;
case MENU_ANIMATION_CTL_CLEAR_ACTIVE: case MENU_ANIMATION_CTL_CLEAR_ACTIVE:
animation_is_active = false; animation_is_active = false;
break; break;
@ -604,28 +629,6 @@ bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data)
*ptr = delta_time; *ptr = delta_time;
} }
break; break;
case MENU_ANIMATION_CTL_UPDATE_TIME:
{
static retro_time_t last_clock_update = 0;
settings_t *settings = config_get_ptr();
cur_time = cpu_features_get_time_usec();
delta_time = cur_time - old_time;
if (delta_time >= IDEAL_DELTA_TIME* 4)
delta_time = IDEAL_DELTA_TIME * 4;
if (delta_time <= IDEAL_DELTA_TIME / 4)
delta_time = IDEAL_DELTA_TIME / 4;
old_time = cur_time;
if (((cur_time - last_clock_update) > 1000000)
&& settings->menu.timedate_enable)
{
animation_is_active = true;
last_clock_update = cur_time;
}
}
break;
case MENU_ANIMATION_CTL_KILL_BY_TAG: case MENU_ANIMATION_CTL_KILL_BY_TAG:
{ {
unsigned i; unsigned i;

View File

@ -31,12 +31,10 @@ typedef void (*tween_cb) (void);
enum menu_animation_ctl_state enum menu_animation_ctl_state
{ {
MENU_ANIMATION_CTL_NONE = 0, MENU_ANIMATION_CTL_NONE = 0,
MENU_ANIMATION_CTL_IS_ACTIVE,
MENU_ANIMATION_CTL_DEINIT, MENU_ANIMATION_CTL_DEINIT,
MENU_ANIMATION_CTL_CLEAR_ACTIVE, MENU_ANIMATION_CTL_CLEAR_ACTIVE,
MENU_ANIMATION_CTL_SET_ACTIVE, MENU_ANIMATION_CTL_SET_ACTIVE,
MENU_ANIMATION_CTL_DELTA_TIME, MENU_ANIMATION_CTL_DELTA_TIME,
MENU_ANIMATION_CTL_UPDATE_TIME,
MENU_ANIMATION_CTL_KILL_BY_TAG, MENU_ANIMATION_CTL_KILL_BY_TAG,
MENU_ANIMATION_CTL_KILL_BY_SUBJECT, MENU_ANIMATION_CTL_KILL_BY_SUBJECT,
MENU_ANIMATION_CTL_PUSH MENU_ANIMATION_CTL_PUSH
@ -130,6 +128,10 @@ bool menu_animation_get_ideal_delta_time(menu_animation_ctx_delta_t *delta);
bool menu_animation_ticker(const menu_animation_ctx_ticker_t *ticker); bool menu_animation_ticker(const menu_animation_ctx_ticker_t *ticker);
void menu_animation_update_time(void);
bool menu_animation_is_active(void);
bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data); bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data);
RETRO_END_DECLS RETRO_END_DECLS

View File

@ -390,7 +390,7 @@ void menu_display_set_font_data_init(bool state)
bool menu_display_get_update_pending(void) bool menu_display_get_update_pending(void)
{ {
if (menu_animation_ctl(MENU_ANIMATION_CTL_IS_ACTIVE, NULL)) if (menu_animation_is_active())
return true; return true;
if (menu_display_get_framebuffer_dirty_flag()) if (menu_display_get_framebuffer_dirty_flag())
return true; return true;

View File

@ -471,7 +471,7 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data)
if (BIT64_GET(menu_driver_data->state, MENU_STATE_BLIT)) if (BIT64_GET(menu_driver_data->state, MENU_STATE_BLIT))
{ {
menu_animation_ctl(MENU_ANIMATION_CTL_UPDATE_TIME, NULL); menu_animation_update_time();
menu_driver_ctl(RARCH_MENU_CTL_BLIT_RENDER, NULL); menu_driver_ctl(RARCH_MENU_CTL_BLIT_RENDER, NULL);
} }