mirror of
https://github.com/libretro/RetroArch
synced 2025-03-23 19:21:03 +00:00
Rebase
This commit is contained in:
parent
ecd117d80d
commit
c4c8778017
@ -71,7 +71,11 @@ static const struct retro_keybind retro_keybinds_1[] = {
|
||||
{ true, RARCH_LOAD_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
|
||||
{ true, RARCH_SAVE_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
|
||||
{ true, RARCH_FULLSCREEN_TOGGLE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
|
||||
#ifdef HAVE_LAKKA
|
||||
{ true, RARCH_QUIT_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_RESTART_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
|
||||
#else
|
||||
{ true, RARCH_QUIT_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
|
||||
#endif
|
||||
{ true, RARCH_STATE_SLOT_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
|
||||
{ true, RARCH_STATE_SLOT_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
|
||||
{ true, RARCH_REWIND, MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
|
||||
@ -153,7 +157,11 @@ static const struct retro_keybind retro_keybinds_1[] = {
|
||||
{ true, RARCH_LOAD_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY, RETROK_F4, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
|
||||
{ true, RARCH_SAVE_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, RETROK_F2, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
|
||||
{ true, RARCH_FULLSCREEN_TOGGLE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY, RETROK_f, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
|
||||
#ifdef HAVE_LAKKA
|
||||
{ true, RARCH_QUIT_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_RESTART_KEY, RETROK_ESCAPE, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
|
||||
#else
|
||||
{ true, RARCH_QUIT_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY, RETROK_ESCAPE, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
|
||||
#endif
|
||||
{ true, RARCH_STATE_SLOT_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS, RETROK_F7, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
|
||||
{ true, RARCH_STATE_SLOT_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS, RETROK_F6, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
|
||||
{ true, RARCH_REWIND, MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, RETROK_r, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL },
|
||||
|
@ -1418,17 +1418,14 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE,
|
||||
"Pause toggle"
|
||||
)
|
||||
#ifdef HAVE_LAKKA
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY,
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_RESTART_KEY,
|
||||
"Restart RetroArch"
|
||||
)
|
||||
#else
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY,
|
||||
"Quit RetroArch"
|
||||
)
|
||||
#endif
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_RESET,
|
||||
"Reset game"
|
||||
@ -2495,12 +2492,6 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MIDI_SETTINGS,
|
||||
"MIDI"
|
||||
)
|
||||
#ifdef HAVE_LAKKA
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_QUIT_RETROARCH,
|
||||
"Restart RetroArch"
|
||||
)
|
||||
#else
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_QUIT_RETROARCH,
|
||||
"Quit RetroArch"
|
||||
@ -2656,15 +2647,14 @@ MSG_HASH(
|
||||
)
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_REBOOT,
|
||||
MENU_ENUM_LABEL_VALUE_REBOOT_RCM,
|
||||
"Reboot into RCM"
|
||||
)
|
||||
#else
|
||||
#endif
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_REBOOT,
|
||||
"Reboot"
|
||||
)
|
||||
#endif
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_RECORDING_CONFIG_DIRECTORY,
|
||||
"Recording Config"
|
||||
@ -5945,12 +5935,6 @@ MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_SYSTEM_INFORMATION,
|
||||
"Show information specific to the device."
|
||||
)
|
||||
#ifdef HAVE_LAKKA
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_QUIT_RETROARCH,
|
||||
"Restart the program."
|
||||
)
|
||||
#else
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_QUIT_RETROARCH,
|
||||
"Quit the program."
|
||||
@ -5959,7 +5943,6 @@ MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_RESTART_RETROARCH,
|
||||
"Restart the program."
|
||||
)
|
||||
#endif
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_VIDEO_WINDOW_WIDTH,
|
||||
"Set the custom width for the display window."
|
||||
@ -7256,16 +7239,6 @@ MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
|
||||
"Show/hide the 'Help' option."
|
||||
)
|
||||
#ifdef HAVE_LAKKA
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show Restart RetroArch"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show/hide the 'Restart RetroArch' option."
|
||||
)
|
||||
#else
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Show Quit RetroArch"
|
||||
@ -7282,7 +7255,6 @@ MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_SHOW_RESTART_RETROARCH,
|
||||
"Show/hide the 'Restart RetroArch' option."
|
||||
)
|
||||
#endif
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
"Show Reboot"
|
||||
|
@ -72,7 +72,7 @@ static int menu_action_sublabel_file_browser_core(file_list_t *list, unsigned ty
|
||||
unsigned j;
|
||||
for (j = 0; j < core_list->count; j++)
|
||||
{
|
||||
if (string_is_equal(path_basename(core_list->list[j].path),
|
||||
if (string_is_equal(path_basename(core_list->list[j].path),
|
||||
path))
|
||||
{
|
||||
if (core_list->list[j].licenses_list)
|
||||
@ -301,7 +301,11 @@ default_sublabel_macro(action_bind_sublabel_content_special, MENU_
|
||||
default_sublabel_macro(action_bind_sublabel_load_content_history, MENU_ENUM_SUBLABEL_LOAD_CONTENT_HISTORY)
|
||||
default_sublabel_macro(action_bind_sublabel_network_information, MENU_ENUM_SUBLABEL_NETWORK_INFORMATION)
|
||||
default_sublabel_macro(action_bind_sublabel_system_information, MENU_ENUM_SUBLABEL_SYSTEM_INFORMATION)
|
||||
#ifdef HAVE_LAKKA
|
||||
default_sublabel_macro(action_bind_sublabel_quit_retroarch, MENU_ENUM_SUBLABEL_RESTART_RETROARCH)
|
||||
#else
|
||||
default_sublabel_macro(action_bind_sublabel_quit_retroarch, MENU_ENUM_SUBLABEL_QUIT_RETROARCH)
|
||||
#endif
|
||||
default_sublabel_macro(action_bind_sublabel_restart_retroarch, MENU_ENUM_SUBLABEL_RESTART_RETROARCH)
|
||||
default_sublabel_macro(action_bind_sublabel_menu_widgets, MENU_ENUM_SUBLABEL_MENU_WIDGETS_ENABLE)
|
||||
default_sublabel_macro(action_bind_sublabel_video_window_width, MENU_ENUM_SUBLABEL_VIDEO_WINDOW_WIDTH)
|
||||
@ -1043,7 +1047,7 @@ static int action_bind_sublabel_playlist_entry(
|
||||
settings_t *settings = config_get_ptr();
|
||||
playlist_t *playlist = NULL;
|
||||
const struct playlist_entry *entry = NULL;
|
||||
|
||||
|
||||
if (!settings->bools.playlist_show_sublabels || string_is_equal(settings->arrays.menu_driver, "ozone"))
|
||||
return 0;
|
||||
|
||||
@ -1055,19 +1059,19 @@ static int action_bind_sublabel_playlist_entry(
|
||||
|
||||
if (i >= playlist_get_size(playlist))
|
||||
return 0;
|
||||
|
||||
|
||||
/* Read playlist entry */
|
||||
playlist_get_index(playlist, i, &entry);
|
||||
|
||||
|
||||
/* Only add sublabel if a core is currently assigned */
|
||||
if (string_is_empty(entry->core_name) || string_is_equal(entry->core_name, "DETECT"))
|
||||
return 0;
|
||||
|
||||
|
||||
/* Add core name */
|
||||
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_CORE), len);
|
||||
strlcat(s, " ", len);
|
||||
strlcat(s, entry->core_name, len);
|
||||
|
||||
|
||||
/* Get runtime info *if* required runtime log is enabled
|
||||
* *and* this is a valid playlist type */
|
||||
if (((settings->uints.playlist_sublabel_runtime_type == PLAYLIST_RUNTIME_PER_CORE) &&
|
||||
@ -1075,7 +1079,7 @@ static int action_bind_sublabel_playlist_entry(
|
||||
((settings->uints.playlist_sublabel_runtime_type == PLAYLIST_RUNTIME_AGGREGATE) &&
|
||||
!settings->bools.content_runtime_log_aggregate))
|
||||
return 0;
|
||||
|
||||
|
||||
/* Note: This looks heavy, but each string_is_equal() call will
|
||||
* return almost immediately */
|
||||
if (!string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY)) &&
|
||||
@ -1085,17 +1089,17 @@ static int action_bind_sublabel_playlist_entry(
|
||||
!string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_PLAYLIST_LIST)) &&
|
||||
!string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_HORIZONTAL_MENU)))
|
||||
return 0;
|
||||
|
||||
|
||||
/* Check whether runtime info should be loaded from log file */
|
||||
if (entry->runtime_status == PLAYLIST_RUNTIME_UNKNOWN)
|
||||
runtime_update_playlist(playlist, i);
|
||||
|
||||
|
||||
/* Check whether runtime info is valid */
|
||||
if (entry->runtime_status == PLAYLIST_RUNTIME_VALID)
|
||||
{
|
||||
int n = 0;
|
||||
char tmp[64];
|
||||
|
||||
|
||||
tmp[0 ] = '\n';
|
||||
tmp[1 ] = '\0';
|
||||
|
||||
@ -1103,18 +1107,18 @@ static int action_bind_sublabel_playlist_entry(
|
||||
|
||||
tmp[n ] = '\n';
|
||||
tmp[n+1] = '\0';
|
||||
|
||||
|
||||
/* Runtime/last played strings are now cached in the
|
||||
* playlist, so we can add both in one go */
|
||||
n = strlcat(tmp, entry->last_played_str, sizeof(tmp));
|
||||
|
||||
|
||||
if ((n < 0) || (n >= 64))
|
||||
n = 0; /* Silence GCC warnings... */
|
||||
|
||||
|
||||
if (!string_is_empty(tmp))
|
||||
strlcat(s, tmp, len);
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -277,7 +277,7 @@ struct string_options_entry
|
||||
(*a)[b->index - 1].enum_idx = c
|
||||
|
||||
#define MENU_SETTINGS_LIST_CURRENT_ADD_ENUM_VALUE_IDX(a, b, c) \
|
||||
(*a)[b->index - 1].enum_value_idx = c
|
||||
(*a)[b->index - 1].enum_value_idx = c
|
||||
|
||||
static void menu_input_st_uint_cb(void *userdata, const char *str)
|
||||
{
|
||||
@ -631,7 +631,7 @@ int setting_uint_action_left_default(
|
||||
overflowed = step > *setting->value.target.unsigned_integer;
|
||||
|
||||
if (!overflowed)
|
||||
*setting->value.target.unsigned_integer =
|
||||
*setting->value.target.unsigned_integer =
|
||||
*setting->value.target.unsigned_integer - step;
|
||||
|
||||
if (setting->enforce_minrange)
|
||||
@ -662,7 +662,7 @@ int setting_uint_action_right_default(
|
||||
return -1;
|
||||
|
||||
max = setting->max;
|
||||
step =
|
||||
step =
|
||||
recalc_step_based_on_length_of_action(setting);
|
||||
|
||||
*setting->value.target.unsigned_integer =
|
||||
@ -4182,7 +4182,7 @@ static void setting_get_string_representation_uint_xmb_menu_color_theme(
|
||||
msg_hash_to_str(
|
||||
MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_SUNBEAM),
|
||||
len);
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -4355,7 +4355,7 @@ static void setting_get_string_representation_crt_switch_resolution_super(
|
||||
else if (*setting->value.target.unsigned_integer == 1)
|
||||
strlcpy(s, "DYNAMIC", len);
|
||||
else
|
||||
snprintf(s, len, "%d", *setting->value.target.unsigned_integer);
|
||||
snprintf(s, len, "%d", *setting->value.target.unsigned_integer);
|
||||
}
|
||||
|
||||
static void setting_get_string_representation_uint_playlist_sublabel_runtime_type(
|
||||
@ -5885,7 +5885,7 @@ rarch_setting_t *menu_setting_find_enum(enum msg_hash_enums enum_idx)
|
||||
return NULL;
|
||||
for (; setting_get_type(setting) != ST_NONE; (*list = *list + 1))
|
||||
{
|
||||
if ( setting->enum_idx == enum_idx &&
|
||||
if ( setting->enum_idx == enum_idx &&
|
||||
setting_get_type(setting) <= ST_GROUP)
|
||||
{
|
||||
const char *short_description = setting->short_description;
|
||||
@ -6558,7 +6558,7 @@ void general_write_handler(rarch_setting_t *setting)
|
||||
video_driver_set_rotation(
|
||||
(*setting->value.target.unsigned_integer +
|
||||
system->rotation) % 4);
|
||||
|
||||
|
||||
/* Update Custom Aspect Ratio values */
|
||||
video_driver_get_viewport_info(&vp);
|
||||
custom->x = 0;
|
||||
@ -7095,7 +7095,7 @@ static bool setting_append_list_input_player_options(
|
||||
"%s %u", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_INPUT_SPLIT_JOYCON), user + 1);
|
||||
|
||||
snprintf(label[user], sizeof(label[user]),
|
||||
"%s",
|
||||
"%s",
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_INDEX));
|
||||
snprintf(label_type[user], sizeof(label_type[user]),
|
||||
"%s",
|
||||
@ -7107,13 +7107,13 @@ static bool setting_append_list_input_player_options(
|
||||
"%s",
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_INPUT_BIND_ALL));
|
||||
snprintf(label_bind_defaults[user], sizeof(label_bind_defaults[user]),
|
||||
"%s",
|
||||
"%s",
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_INPUT_BIND_DEFAULT_ALL));
|
||||
snprintf(label_bind_all_save_autoconfig[user], sizeof(label_bind_all_save_autoconfig[user]),
|
||||
"%s",
|
||||
"%s",
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_INPUT_SAVE_AUTOCONFIG));
|
||||
snprintf(label_mouse_index[user], sizeof(label_mouse_index[user]),
|
||||
"%s",
|
||||
"%s",
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_INDEX));
|
||||
|
||||
CONFIG_UINT_ALT(
|
||||
@ -7690,7 +7690,11 @@ static bool setting_append_list(
|
||||
CONFIG_ACTION(
|
||||
list, list_info,
|
||||
MENU_ENUM_LABEL_QUIT_RETROARCH,
|
||||
#ifdef HAVE_LAKKA
|
||||
MENU_ENUM_LABEL_VALUE_RESTART_RETROARCH,
|
||||
#else
|
||||
MENU_ENUM_LABEL_VALUE_QUIT_RETROARCH,
|
||||
#endif
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group);
|
||||
@ -7728,7 +7732,11 @@ static bool setting_append_list(
|
||||
CONFIG_ACTION(
|
||||
list, list_info,
|
||||
MENU_ENUM_LABEL_REBOOT,
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
MENU_ENUM_LABEL_VALUE_REBOOT_RCM,
|
||||
#else
|
||||
MENU_ENUM_LABEL_VALUE_REBOOT,
|
||||
#endif
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group);
|
||||
@ -10153,7 +10161,7 @@ static bool setting_append_list(
|
||||
(*list)[list_info->index - 1].action_ok = setting_bool_action_left_with_refresh;
|
||||
(*list)[list_info->index - 1].action_left = setting_bool_action_left_with_refresh;
|
||||
(*list)[list_info->index - 1].action_right = setting_bool_action_right_with_refresh;
|
||||
|
||||
|
||||
CONFIG_UINT(
|
||||
list, list_info,
|
||||
&settings->uints.video_hard_sync_frames,
|
||||
@ -13220,7 +13228,11 @@ static bool setting_append_list(
|
||||
list, list_info,
|
||||
&settings->bools.menu_show_quit_retroarch,
|
||||
MENU_ENUM_LABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
#ifdef HAVE_LAKKA
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_RESTART_RETROARCH,
|
||||
#else
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
#endif
|
||||
menu_show_quit_retroarch,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
@ -13625,7 +13637,7 @@ static bool setting_append_list(
|
||||
general_read_handler);
|
||||
(*list)[list_info->index - 1].action_ok = &setting_action_ok_uint;
|
||||
menu_settings_list_current_add_range(list, list_info, 0.0, 1.0, 0.010, true, true);
|
||||
(*list)[list_info->index - 1].ui_type
|
||||
(*list)[list_info->index - 1].ui_type
|
||||
= ST_UI_TYPE_FLOAT_SLIDER_AND_SPINBOX;
|
||||
*/
|
||||
}
|
||||
|
@ -785,6 +785,7 @@ enum msg_hash_enums
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY,
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY,
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY,
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_RESTART_KEY,
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS,
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS,
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_BSV_RECORD_TOGGLE,
|
||||
|
122
retroarch.c
122
retroarch.c
@ -2414,7 +2414,7 @@ bool menu_input_dialog_start_search(void)
|
||||
sizeof(menu_input_dialog_keyboard_label));
|
||||
|
||||
input_keyboard_ctl(RARCH_INPUT_KEYBOARD_CTL_LINE_FREE, NULL);
|
||||
|
||||
|
||||
if (is_accessibility_enabled())
|
||||
{
|
||||
accessibility_speak((char*) msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SEARCH));
|
||||
@ -3166,7 +3166,11 @@ const struct input_bind_map input_config_bind_map[RARCH_BIND_LIST_END_NULL] = {
|
||||
DECLARE_META_BIND(1, load_state, RARCH_LOAD_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY),
|
||||
DECLARE_META_BIND(1, save_state, RARCH_SAVE_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY),
|
||||
DECLARE_META_BIND(2, toggle_fullscreen, RARCH_FULLSCREEN_TOGGLE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY),
|
||||
#ifdef HAVE_LAKKA
|
||||
DECLARE_META_BIND(2, exit_emulator, RARCH_QUIT_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_RESTART_KEY),
|
||||
#else
|
||||
DECLARE_META_BIND(2, exit_emulator, RARCH_QUIT_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY),
|
||||
#endif
|
||||
DECLARE_META_BIND(2, state_slot_increase, RARCH_STATE_SLOT_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS),
|
||||
DECLARE_META_BIND(2, state_slot_decrease, RARCH_STATE_SLOT_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS),
|
||||
DECLARE_META_BIND(1, rewind, RARCH_REWIND, MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND),
|
||||
@ -4172,7 +4176,7 @@ static void handle_translation_cb(
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
|
||||
if (string_is_equal(error_string, "No text found."))
|
||||
{
|
||||
RARCH_LOG("No text found...\n");
|
||||
@ -4180,14 +4184,14 @@ static void handle_translation_cb(
|
||||
{
|
||||
text_string = (char*)malloc(15);
|
||||
}
|
||||
|
||||
|
||||
strlcpy(text_string, error_string, 15);
|
||||
#ifdef HAVE_MENU_WIDGETS
|
||||
if (menu_widgets_paused)
|
||||
{
|
||||
/* In this case we have to unpause and then repause for a frame */
|
||||
menu_widgets_ai_service_overlay_set_state(2);
|
||||
command_event(CMD_EVENT_UNPAUSE, NULL);
|
||||
command_event(CMD_EVENT_UNPAUSE, NULL);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -4220,7 +4224,7 @@ static void handle_translation_cb(
|
||||
{
|
||||
image_type = IMAGE_TYPE_BMP;
|
||||
}
|
||||
else if (raw_image_file_data[1] == 'P' &&
|
||||
else if (raw_image_file_data[1] == 'P' &&
|
||||
raw_image_file_data[2] == 'N' &&
|
||||
raw_image_file_data[3] == 'G')
|
||||
image_type = IMAGE_TYPE_PNG;
|
||||
@ -4229,11 +4233,11 @@ static void handle_translation_cb(
|
||||
RARCH_LOG("Invalid image type returned from server.\n");
|
||||
goto finish;
|
||||
}
|
||||
|
||||
|
||||
ai_res = menu_widgets_ai_service_overlay_load(
|
||||
raw_image_file_data, (unsigned) new_image_size,
|
||||
raw_image_file_data, (unsigned) new_image_size,
|
||||
image_type);
|
||||
|
||||
|
||||
if (!ai_res)
|
||||
{
|
||||
RARCH_LOG("Video driver not supported for AI Service.");
|
||||
@ -4250,7 +4254,7 @@ static void handle_translation_cb(
|
||||
command_event(CMD_EVENT_UNPAUSE, NULL);
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
#endif
|
||||
/* Can't use menu widget overlays, so try writing to video buffer */
|
||||
{
|
||||
@ -4271,8 +4275,8 @@ static void handle_translation_cb(
|
||||
((uint32_t) ((uint8_t)raw_image_file_data[23]) << 8) +
|
||||
((uint32_t) ((uint8_t)raw_image_file_data[22]) << 0);
|
||||
raw_image_data = (void*)malloc(image_width*image_height*3*sizeof(uint8_t));
|
||||
memcpy(raw_image_data,
|
||||
raw_image_file_data+54*sizeof(uint8_t),
|
||||
memcpy(raw_image_data,
|
||||
raw_image_file_data+54*sizeof(uint8_t),
|
||||
image_width*image_height*3*sizeof(uint8_t));
|
||||
}
|
||||
else if (raw_image_file_data[1] == 'P' && raw_image_file_data[2] == 'N' &&
|
||||
@ -4291,7 +4295,7 @@ static void handle_translation_cb(
|
||||
((uint32_t) ((uint8_t)raw_image_file_data[22])<<8)+
|
||||
((uint32_t) ((uint8_t)raw_image_file_data[23])<<0);
|
||||
rpng = rpng_alloc();
|
||||
|
||||
|
||||
if (!rpng)
|
||||
{
|
||||
error = "Can't allocate memory.";
|
||||
@ -4332,7 +4336,7 @@ static void handle_translation_cb(
|
||||
{
|
||||
RARCH_LOG("Output from URL not a valid file type, or is not supported.\n");
|
||||
goto finish;
|
||||
}
|
||||
}
|
||||
|
||||
scaler = (struct scaler_ctx*)calloc(1, sizeof(struct scaler_ctx));
|
||||
if (!scaler)
|
||||
@ -4387,7 +4391,7 @@ static void handle_translation_cb(
|
||||
video_driver_frame(raw_output_data, image_width, image_height, pitch);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#ifdef HAVE_AUDIOMIXER
|
||||
if (raw_sound_data)
|
||||
{
|
||||
@ -4638,9 +4642,9 @@ static const char *ai_service_get_str(enum translation_lang id)
|
||||
|
||||
To make your own server, it must listen for a POST request, which
|
||||
will consist of a JSON body, with the "image" field as a base64
|
||||
encoded string of a 24bit-BMP/PNG that the will be translated.
|
||||
The server must output the translated image in the form of a
|
||||
JSON body, with the "image" field also as a base64 encoded
|
||||
encoded string of a 24bit-BMP/PNG that the will be translated.
|
||||
The server must output the translated image in the form of a
|
||||
JSON body, with the "image" field also as a base64 encoded
|
||||
24bit-BMP, or as an alpha channel png.
|
||||
*/
|
||||
static bool run_translation_service(void)
|
||||
@ -4675,7 +4679,7 @@ static bool run_translation_service(void)
|
||||
char* system_label = NULL;
|
||||
core_info_t *core_info = NULL;
|
||||
|
||||
#ifdef HAVE_MENU_WIDGETS
|
||||
#ifdef HAVE_MENU_WIDGETS
|
||||
if (menu_widgets_ai_service_overlay_get_state() != 0)
|
||||
{
|
||||
/* For the case when ai service pause is disabled. */
|
||||
@ -4702,7 +4706,7 @@ static bool run_translation_service(void)
|
||||
{
|
||||
const char *system_id = core_info->system_id
|
||||
? core_info->system_id : "core";
|
||||
|
||||
|
||||
const struct playlist_entry *entry = NULL;
|
||||
playlist_t *current_playlist = playlist_get_cached();
|
||||
|
||||
@ -4863,7 +4867,7 @@ static bool run_translation_service(void)
|
||||
memcpy(json_buffer, (const void*)rf1, 11*sizeof(uint8_t));
|
||||
memcpy(json_buffer+11, bmp64_buffer, (out_length)*sizeof(uint8_t));
|
||||
if (rf3)
|
||||
memcpy(json_buffer+11+out_length, (const void*)rf3, (16+strlen(system_label))*sizeof(uint8_t));
|
||||
memcpy(json_buffer+11+out_length, (const void*)rf3, (16+strlen(system_label))*sizeof(uint8_t));
|
||||
else
|
||||
memcpy(json_buffer+11+out_length, (const void*)rf2, 3*sizeof(uint8_t));
|
||||
RARCH_LOG("Request size: %d\n", out_length);
|
||||
@ -4942,7 +4946,7 @@ static bool run_translation_service(void)
|
||||
if (use_overlay)
|
||||
mode_chr = "image,png,png-a,sound,wav";
|
||||
else
|
||||
mode_chr = "image,png,sound,wav";
|
||||
mode_chr = "image,png,sound,wav";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -6357,13 +6361,13 @@ bool command_event(enum event_command cmd, void *data)
|
||||
accessibility_speak((char*) msg_hash_to_str(MSG_UNPAUSED));
|
||||
command_event(CMD_EVENT_UNPAUSE, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Don't pause - useful for Text-To-Speech since
|
||||
* the audio can't currently play while paused.
|
||||
* Also useful for cases when users don't want the
|
||||
* core's sound to stop while translating. */
|
||||
* core's sound to stop while translating. */
|
||||
command_event(CMD_EVENT_AI_SERVICE_CALL, NULL);
|
||||
}
|
||||
#endif
|
||||
@ -7749,7 +7753,7 @@ static void global_free(void)
|
||||
void main_exit(void *args)
|
||||
{
|
||||
settings_t *settings = configuration_settings;
|
||||
|
||||
|
||||
if (cached_video_driver[0])
|
||||
{
|
||||
strcpy(settings->arrays.video_driver, cached_video_driver);
|
||||
@ -9491,7 +9495,7 @@ static bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
system->disk_control_cb =
|
||||
*(const struct retro_disk_control_callback*)data;
|
||||
break;
|
||||
|
||||
|
||||
case RETRO_ENVIRONMENT_GET_PREFERRED_HW_RENDER:
|
||||
{
|
||||
unsigned *cb = (unsigned*)data;
|
||||
@ -9521,7 +9525,7 @@ static bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
video_driver_get_hw_context_internal();
|
||||
|
||||
RARCH_LOG("[Environ]: SET_HW_RENDER.\n");
|
||||
|
||||
|
||||
if (!dynamic_request_hw_context(
|
||||
cb->context_type, cb->version_minor, cb->version_major))
|
||||
return false;
|
||||
@ -10020,7 +10024,7 @@ static bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
|
||||
case RETRO_ENVIRONMENT_SET_HW_SHARED_CONTEXT:
|
||||
#ifdef HAVE_LIBNX
|
||||
/* TODO/FIXME - Force this off for now for Switch
|
||||
/* TODO/FIXME - Force this off for now for Switch
|
||||
* until shared HW context can work there */
|
||||
return false;
|
||||
#else
|
||||
@ -13681,7 +13685,7 @@ static int16_t input_state_device(
|
||||
*/
|
||||
if (settings->uints.input_turbo_mode == 1)
|
||||
{
|
||||
/* Pressing turbo button toggles turbo mode on or off.
|
||||
/* Pressing turbo button toggles turbo mode on or off.
|
||||
* Holding the button will
|
||||
* pass through, else the pressed state will be modulated by a
|
||||
* periodic pulse defined by the configured duty cycle.
|
||||
@ -13724,7 +13728,7 @@ static int16_t input_state_device(
|
||||
{
|
||||
uint16_t enable_new;
|
||||
input_driver_turbo_btns.turbo_pressed[port] |= 1 << id;
|
||||
/* Toggle turbo for pressed button but make
|
||||
/* Toggle turbo for pressed button but make
|
||||
* sure at least one button has turbo */
|
||||
enable_new = input_driver_turbo_btns.enable[port] ^ (1 << id);
|
||||
if (enable_new)
|
||||
@ -16568,7 +16572,7 @@ void input_keyboard_event(bool down, unsigned code,
|
||||
{
|
||||
static bool deferred_wait_keys;
|
||||
#ifdef HAVE_MENU
|
||||
if (menu_input_dialog_get_display_kb()
|
||||
if (menu_input_dialog_get_display_kb()
|
||||
&& down && is_accessibility_enabled())
|
||||
{
|
||||
if (code != 303 && code != 0)
|
||||
@ -19863,7 +19867,7 @@ static bool hw_render_context_is_gl(enum retro_hw_context_type type)
|
||||
|
||||
bool *video_driver_get_threaded(void)
|
||||
{
|
||||
#if defined(__MACH__) && defined(__APPLE__)
|
||||
#if defined(__MACH__) && defined(__APPLE__)
|
||||
/* TODO/FIXME - force threaded video to disabled on Apple for now
|
||||
* until NSWindow/UIWindow concurrency issues are taken care of */
|
||||
video_driver_threaded = false;
|
||||
@ -19873,7 +19877,7 @@ bool *video_driver_get_threaded(void)
|
||||
|
||||
void video_driver_set_threaded(bool val)
|
||||
{
|
||||
#if defined(__MACH__) && defined(__APPLE__)
|
||||
#if defined(__MACH__) && defined(__APPLE__)
|
||||
/* TODO/FIXME - force threaded video to disabled on Apple for now
|
||||
* until NSWindow/UIWindow concurrency issues are taken care of */
|
||||
video_driver_threaded = false;
|
||||
@ -21392,7 +21396,7 @@ void video_viewport_get_scaled_integer(struct video_viewport *vp,
|
||||
/* Use system reported sizes as these define the
|
||||
* geometry for the "normal" case. */
|
||||
unsigned base_height;
|
||||
|
||||
|
||||
if (retroarch_get_rotation() % 2)
|
||||
base_height = video_driver_av_info.geometry.base_width;
|
||||
else
|
||||
@ -21483,7 +21487,7 @@ static void video_driver_frame(const void *data, unsigned width,
|
||||
frame_cache_width = width;
|
||||
frame_cache_height = height;
|
||||
frame_cache_pitch = pitch;
|
||||
|
||||
|
||||
if (
|
||||
video_driver_scaler_ptr
|
||||
&& data
|
||||
@ -29084,7 +29088,7 @@ bool is_accessibility_enabled(void)
|
||||
}
|
||||
|
||||
bool is_input_keyboard_display_on(void)
|
||||
{
|
||||
{
|
||||
#ifdef HAVE_MENU
|
||||
return menu_input_dialog_get_display_kb();
|
||||
#else
|
||||
@ -29098,7 +29102,7 @@ bool accessibility_speak(const char* speak_text)
|
||||
}
|
||||
|
||||
|
||||
#if defined(__MACH__) && defined(__APPLE__)
|
||||
#if defined(__MACH__) && defined(__APPLE__)
|
||||
#include <TargetConditionals.h>
|
||||
#if TARGET_OS_OSX && !defined(EMSCRIPTEN)
|
||||
#define _IS_OSX
|
||||
@ -29166,7 +29170,7 @@ static char* accessibility_mac_language_code(const char* language)
|
||||
return "Yuna";
|
||||
else if (string_is_equal(language,"pl"))
|
||||
return "Zosia";
|
||||
else if (string_is_equal(language,"cs"))
|
||||
else if (string_is_equal(language,"cs"))
|
||||
return "Zuzana";
|
||||
else
|
||||
return "";
|
||||
@ -29218,16 +29222,16 @@ static bool accessibility_speak_macos(
|
||||
/* parent process */
|
||||
speak_pid = pid;
|
||||
|
||||
/* Tell the system that we'll ignore the exit status of the child
|
||||
/* Tell the system that we'll ignore the exit status of the child
|
||||
* process. This prevents zombie processes. */
|
||||
signal(SIGCHLD,SIG_IGN);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* child process: replace process with the say command */
|
||||
{
|
||||
/* child process: replace process with the say command */
|
||||
if (strlen(language_speaker)> 0)
|
||||
{
|
||||
char* cmd[] = {"say", "-v", NULL,
|
||||
char* cmd[] = {"say", "-v", NULL,
|
||||
NULL, "-r", NULL, NULL};
|
||||
cmd[2] = language_speaker;
|
||||
cmd[3] = (char *) speak_text;
|
||||
@ -29308,7 +29312,7 @@ static const char *accessibility_win_language_code(const char* language)
|
||||
return "Microsoft Heami Desktop";
|
||||
else if (string_is_equal(language,"pl"))
|
||||
return "Microsoft Adam Desktop";
|
||||
else if (string_is_equal(language,"cs"))
|
||||
else if (string_is_equal(language,"cs"))
|
||||
return "Microsoft Jakub Desktop";
|
||||
else
|
||||
return "";
|
||||
@ -29376,18 +29380,18 @@ static bool accessibility_speak_windows(
|
||||
return true;
|
||||
}
|
||||
|
||||
if (strlen(language) > 0)
|
||||
if (strlen(language) > 0)
|
||||
snprintf(cmd, sizeof(cmd),
|
||||
"powershell.exe -NoProfile -WindowStyle Hidden -Command \"Add-Type -AssemblyName System.Speech; $synth = New-Object System.Speech.Synthesis.SpeechSynthesizer; $synth.SelectVoice(\\\"%s\\\"); $synth.Rate = %s; $synth.Speak(\\\"%s\\\");\"", language, speeds[speed-1], (char*) speak_text);
|
||||
"powershell.exe -NoProfile -WindowStyle Hidden -Command \"Add-Type -AssemblyName System.Speech; $synth = New-Object System.Speech.Synthesis.SpeechSynthesizer; $synth.SelectVoice(\\\"%s\\\"); $synth.Rate = %s; $synth.Speak(\\\"%s\\\");\"", language, speeds[speed-1], (char*) speak_text);
|
||||
else
|
||||
snprintf(cmd, sizeof(cmd),
|
||||
"powershell.exe -NoProfile -WindowStyle Hidden -Command \"Add-Type -AssemblyName System.Speech; $synth = New-Object System.Speech.Synthesis.SpeechSynthesizer; $synth.Rate = %s; $synth.Speak(\\\"%s\\\");\"", speeds[speed-1], (char*) speak_text);
|
||||
"powershell.exe -NoProfile -WindowStyle Hidden -Command \"Add-Type -AssemblyName System.Speech; $synth = New-Object System.Speech.Synthesis.SpeechSynthesizer; $synth.Rate = %s; $synth.Speak(\\\"%s\\\");\"", speeds[speed-1], (char*) speak_text);
|
||||
if (pi_set)
|
||||
terminate_win32_process(pi);
|
||||
res = create_win32_process(cmd);
|
||||
if (!res)
|
||||
{
|
||||
RARCH_LOG("Create subprocess failed. Error: %d\n", GetLastError());
|
||||
RARCH_LOG("Create subprocess failed. Error: %d\n", GetLastError());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -29450,13 +29454,13 @@ bool accessibility_speak_linux(
|
||||
/* parent process */
|
||||
speak_pid = pid;
|
||||
|
||||
/* Tell the system that we'll ignore the exit status of the child
|
||||
/* Tell the system that we'll ignore the exit status of the child
|
||||
* process. This prevents zombie processes. */
|
||||
signal(SIGCHLD,SIG_IGN);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* child process: replace process with the espeak command */
|
||||
{
|
||||
/* child process: replace process with the espeak command */
|
||||
char* cmd[] = { (char*) "espeak", NULL, NULL, NULL, NULL};
|
||||
cmd[1] = voice_out;
|
||||
cmd[2] = speed_out;
|
||||
@ -29486,11 +29490,11 @@ bool accessibility_speak_priority(const char* speak_text, int priority)
|
||||
RARCH_LOG("Platform not supported for accessibility.\n");
|
||||
/* The following method is a fallback for other platforms to use the
|
||||
AI Service url to do the TTS. However, since the playback is done
|
||||
via the audio mixer, which only processes the audio while the
|
||||
via the audio mixer, which only processes the audio while the
|
||||
core is running, this playback method won't work. When the audio
|
||||
mixer can handle playing streams while the core is paused, then
|
||||
mixer can handle playing streams while the core is paused, then
|
||||
we can use this. */
|
||||
/*
|
||||
/*
|
||||
#if defined(HAVE_NETWORKING)
|
||||
return accessibility_speak_ai_service(speak_text, voice, priority);
|
||||
#endif
|
||||
@ -29519,8 +29523,8 @@ bool is_narrator_running(void)
|
||||
bool accessibility_speak_ai_service(const char* speak_text, const char* language, int priority)
|
||||
{
|
||||
#if defined(HAVE_NETWORKING) && defined(HAVE_TRANSLATE)
|
||||
/* Call the AI service listed to do espeak for us. */
|
||||
/* NOTE: This call works, but the audio mixer will not
|
||||
/* Call the AI service listed to do espeak for us. */
|
||||
/* NOTE: This call works, but the audio mixer will not
|
||||
* play sound files while the core is paused, so it's
|
||||
* not practical at the moment. */
|
||||
unsigned i;
|
||||
@ -29530,22 +29534,22 @@ bool accessibility_speak_ai_service(const char* speak_text, const char* language
|
||||
char separator = '?';
|
||||
settings_t *settings = configuration_settings;
|
||||
|
||||
strlcpy(new_ai_service_url, settings->arrays.ai_service_url,
|
||||
strlcpy(new_ai_service_url, settings->arrays.ai_service_url,
|
||||
sizeof(new_ai_service_url));
|
||||
|
||||
if (strrchr(new_ai_service_url, '?') != NULL)
|
||||
separator = '&';
|
||||
snprintf(temp_string, sizeof(temp_string),
|
||||
"%csource_lang=%s&target_lang=%s&output=espeak",
|
||||
"%csource_lang=%s&target_lang=%s&output=espeak",
|
||||
separator, language, language);
|
||||
strlcat(new_ai_service_url, temp_string, sizeof(new_ai_service_url));
|
||||
|
||||
|
||||
strlcpy(temp_string, speak_text, sizeof(temp_string));
|
||||
for (i = 0; i < strlen(temp_string);i++)
|
||||
{
|
||||
if (temp_string[i]=='\"')
|
||||
temp_string[i] = ' ';
|
||||
}
|
||||
}
|
||||
snprintf(json_buffer, sizeof(json_buffer),
|
||||
"{\"text\": \"%s\"}", speak_text);
|
||||
RARCH_LOG("SENDING accessibilty request... %s\n", new_ai_service_url);
|
||||
@ -29560,7 +29564,7 @@ bool accessibility_speak_ai_service(const char* speak_text, const char* language
|
||||
|
||||
bool accessibility_startup_message(void)
|
||||
{
|
||||
/* State that the narrator is on, and also include the first menu
|
||||
/* State that the narrator is on, and also include the first menu
|
||||
item we're on at startup. */
|
||||
accessibility_speak("RetroArch accessibility on. Main Menu Load Core.");
|
||||
return true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user