Enable configuration of menu ticker text speed

This commit is contained in:
jdgleaver 2019-02-14 17:26:46 +00:00
parent 9b84a0f701
commit bfe0c3fb48
10 changed files with 46 additions and 3 deletions

View File

@ -325,6 +325,7 @@ static bool menu_show_core_updater = true;
static bool menu_show_sublabels = false;
static unsigned menu_ticker_type = TICKER_TYPE_BOUNCE;
static float menu_ticker_speed = 1.0f;
static bool content_show_settings = true;
static bool content_show_favorites = true;

View File

@ -1605,6 +1605,7 @@ static struct config_float_setting *populate_settings_float(settings_t *settings
SETTING_FLOAT("menu_framebuffer_opacity", &settings->floats.menu_framebuffer_opacity, true, menu_framebuffer_opacity, false);
SETTING_FLOAT("menu_footer_opacity", &settings->floats.menu_footer_opacity, true, menu_footer_opacity, false);
SETTING_FLOAT("menu_header_opacity", &settings->floats.menu_header_opacity, true, menu_header_opacity, false);
SETTING_FLOAT("menu_ticker_speed", &settings->floats.menu_ticker_speed, true, menu_ticker_speed, false);
#endif
SETTING_FLOAT("video_message_pos_x", &settings->floats.video_msg_pos_x, true, message_pos_offset_x, false);
SETTING_FLOAT("video_message_pos_y", &settings->floats.video_msg_pos_y, true, message_pos_offset_y, false);

View File

@ -329,6 +329,7 @@ typedef struct settings
float menu_framebuffer_opacity;
float menu_footer_opacity;
float menu_header_opacity;
float menu_ticker_speed;
float audio_max_timing_skew;
float audio_volume; /* dB scale. */

View File

@ -1131,6 +1131,8 @@ MSG_HASH(MENU_ENUM_LABEL_TIMEDATE_STYLE,
"menu_timedate_style")
MSG_HASH(MENU_ENUM_LABEL_MENU_TICKER_TYPE,
"menu_ticker_type")
MSG_HASH(MENU_ENUM_LABEL_MENU_TICKER_SPEED,
"menu_ticker_speed")
MSG_HASH(MENU_ENUM_LABEL_UI_COMPANION_ENABLE,
"ui_companion_enable")
MSG_HASH(MENU_ENUM_LABEL_UI_COMPANION_START_ON_BOOT,

View File

@ -3090,6 +3090,14 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_TICKER_TYPE_LOOP,
"Scroll Left"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_TICKER_SPEED,
"Ticker Text Speed"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_TICKER_SPEED,
"Animation speed when scrolling long menu text strings."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_RGUI_MENU_COLOR_THEME,
"Menu Color Theme"

View File

@ -519,6 +519,7 @@ default_sublabel_macro(action_bind_sublabel_menu_rgui_thumbnail_downscaler,
default_sublabel_macro(action_bind_sublabel_content_runtime_log, MENU_ENUM_SUBLABEL_CONTENT_RUNTIME_LOG)
default_sublabel_macro(action_bind_sublabel_menu_rgui_internal_upscale_level, MENU_ENUM_SUBLABEL_MENU_RGUI_INTERNAL_UPSCALE_LEVEL)
default_sublabel_macro(action_bind_sublabel_menu_ticker_type, MENU_ENUM_SUBLABEL_MENU_TICKER_TYPE)
default_sublabel_macro(action_bind_sublabel_menu_ticker_speed, MENU_ENUM_SUBLABEL_MENU_TICKER_SPEED)
static int action_bind_sublabel_systeminfo_controller_entry(
file_list_t *list,
@ -2260,6 +2261,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_MENU_TICKER_TYPE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_ticker_type);
break;
case MENU_ENUM_LABEL_MENU_TICKER_SPEED:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_ticker_speed);
break;
default:
case MSG_UNKNOWN:
return -1;

View File

@ -566,6 +566,12 @@ static void menu_animation_update_time(bool timedate_enable)
static retro_time_t
last_ticker_slow_update = 0;
/* Adjust ticker speed */
settings_t *settings = config_get_ptr();
float speed_factor = settings->floats.menu_ticker_speed > 0.0001f ? settings->floats.menu_ticker_speed : 1.0f;
unsigned ticker_speed = (unsigned)(((float)TICKER_SPEED / speed_factor) + 0.5);
unsigned ticker_slow_speed = (unsigned)(((float)TICKER_SLOW_SPEED / speed_factor) + 0.5);
cur_time = cpu_features_get_time_usec() / 1000;
delta_time = old_time == 0 ? 0 : cur_time - old_time;
@ -579,14 +585,14 @@ static void menu_animation_update_time(bool timedate_enable)
}
if (ticker_is_active
&& cur_time - last_ticker_update >= TICKER_SPEED)
&& cur_time - last_ticker_update >= ticker_speed)
{
ticker_idx++;
last_ticker_update = cur_time;
}
if (ticker_is_active
&& cur_time - last_ticker_slow_update >= TICKER_SLOW_SPEED)
&& cur_time - last_ticker_slow_update >= ticker_slow_speed)
{
ticker_slow_idx++;
last_ticker_slow_update = cur_time;
@ -899,4 +905,4 @@ uint64_t menu_animation_get_ticker_idx(void)
uint64_t menu_animation_get_ticker_slow_idx(void)
{
return ticker_slow_idx;
}
}

View File

@ -6136,6 +6136,10 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist
MENU_ENUM_LABEL_MENU_TICKER_TYPE,
PARSE_ONLY_UINT, false) == 0)
count++;
if (menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_MENU_TICKER_SPEED,
PARSE_ONLY_FLOAT, false) == 0)
count++;
if (count == 0)
menu_entries_append_enum(info->list,

View File

@ -8205,6 +8205,21 @@ static bool setting_append_list(
&setting_get_string_representation_uint_menu_ticker_type;
menu_settings_list_current_add_range(list, list_info, 0, TICKER_TYPE_LAST-1, 1, true, true);
CONFIG_FLOAT(
list, list_info,
&settings->floats.menu_ticker_speed,
MENU_ENUM_LABEL_MENU_TICKER_SPEED,
MENU_ENUM_LABEL_VALUE_MENU_TICKER_SPEED,
menu_ticker_speed,
"%.1fx",
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
(*list)[list_info->index - 1].action_ok = &setting_action_ok_uint;
menu_settings_list_current_add_range(list, list_info, 0.2, 6.0, 0.1, true, true);
END_SUB_GROUP(list, list_info, parent_group);
START_SUB_GROUP(list, list_info, "Navigation", &group_info, &subgroup_info, parent_group);

View File

@ -921,6 +921,7 @@ enum msg_hash_enums
MENU_LABEL(QUICK_MENU_START_STREAMING),
MENU_LABEL(QUICK_MENU_STOP_STREAMING),
MENU_LABEL(MENU_TICKER_TYPE),
MENU_LABEL(MENU_TICKER_SPEED),
MENU_ENUM_LABEL_VALUE_MENU_TICKER_TYPE_BOUNCE,
MENU_ENUM_LABEL_VALUE_MENU_TICKER_TYPE_LOOP,