Merge pull request #11464 from sonninnos/cli-closing

Add option for quitting on close content
This commit is contained in:
Autechre 2020-10-20 21:53:40 +02:00 committed by GitHub
commit 179bc894ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 76 additions and 0 deletions

View File

@ -559,6 +559,8 @@ static const bool menu_savestate_resume = false;
#define DEFAULT_MENU_INSERT_DISK_RESUME true
#define DEFAULT_QUIT_ON_CLOSE_CONTENT QUIT_ON_CLOSE_CONTENT_DISABLED
static const bool content_show_settings = true;
static const bool content_show_favorites = true;
#ifdef HAVE_IMAGEVIEWER

View File

@ -2027,6 +2027,7 @@ static struct config_uint_setting *populate_settings_uint(
SETTING_UINT("core_updater_auto_backup_history_size", &settings->uints.core_updater_auto_backup_history_size, true, DEFAULT_CORE_UPDATER_AUTO_BACKUP_HISTORY_SIZE, false);
SETTING_UINT("video_black_frame_insertion", &settings->uints.video_black_frame_insertion, true, DEFAULT_BLACK_FRAME_INSERTION, false);
SETTING_UINT("quit_on_close_content", &settings->uints.quit_on_close_content, true, DEFAULT_QUIT_ON_CLOSE_CONTENT, false);
*size = count;
return tmp;

View File

@ -271,6 +271,7 @@ typedef struct settings
unsigned core_updater_auto_backup_history_size;
unsigned video_black_frame_insertion;
unsigned quit_on_close_content;
} uints;
struct

View File

@ -2072,6 +2072,10 @@ MSG_HASH(
MENU_ENUM_LABEL_MENU_INSERT_DISK_RESUME,
"menu_insert_disk_resume"
)
MSG_HASH(
MENU_ENUM_LABEL_QUIT_ON_CLOSE_CONTENT,
"quit_on_close_content"
)
MSG_HASH(
MENU_ENUM_LABEL_PAUSE_NONACTIVE,
"pause_nonactive"

View File

@ -3851,6 +3851,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_INSERT_DISK_RESUME,
"Automatically close the menu and resume content after inserting or loading a new disc."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUIT_ON_CLOSE_CONTENT,
"Quit on Close Content"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_ON_CLOSE_CONTENT,
"Automatically quit RetroArch when closing content. 'CLI' quits only when content is launched via command line."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MOUSE_ENABLE,
"Mouse Support"

View File

@ -495,6 +495,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_swap_ok_cancel, MENU_
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_pause_libretro, MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_savestate_resume, MENU_ENUM_SUBLABEL_MENU_SAVESTATE_RESUME)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_insert_disk_resume, MENU_ENUM_SUBLABEL_MENU_INSERT_DISK_RESUME)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quit_on_close_content, MENU_ENUM_SUBLABEL_QUIT_ON_CLOSE_CONTENT)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_driver, MENU_ENUM_SUBLABEL_VIDEO_DRIVER)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_audio_driver, MENU_ENUM_SUBLABEL_AUDIO_DRIVER)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_driver, MENU_ENUM_SUBLABEL_INPUT_DRIVER)
@ -2846,6 +2847,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_MENU_INSERT_DISK_RESUME:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_insert_disk_resume);
break;
case MENU_ENUM_LABEL_QUIT_ON_CLOSE_CONTENT:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_quit_on_close_content);
break;
case MENU_ENUM_LABEL_MENU_INPUT_SWAP_OK_CANCEL:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_swap_ok_cancel);
break;

View File

@ -384,6 +384,14 @@ enum playlist_entry_remove_enable_type
PLAYLIST_ENTRY_REMOVE_ENABLE_LAST
};
enum quit_on_close_content_type
{
QUIT_ON_CLOSE_CONTENT_DISABLED = 0,
QUIT_ON_CLOSE_CONTENT_ENABLED,
QUIT_ON_CLOSE_CONTENT_CLI,
QUIT_ON_CLOSE_CONTENT_LAST
};
RETRO_END_DECLS
#endif

View File

@ -7134,6 +7134,7 @@ unsigned menu_displaylist_build_list(
{MENU_ENUM_LABEL_PAUSE_LIBRETRO, PARSE_ONLY_BOOL, true},
{MENU_ENUM_LABEL_MENU_SAVESTATE_RESUME, PARSE_ONLY_BOOL, true},
{MENU_ENUM_LABEL_MENU_INSERT_DISK_RESUME, PARSE_ONLY_BOOL, true},
{MENU_ENUM_LABEL_QUIT_ON_CLOSE_CONTENT, PARSE_ONLY_UINT, true},
{MENU_ENUM_LABEL_MOUSE_ENABLE, PARSE_ONLY_BOOL, true},
{MENU_ENUM_LABEL_POINTER_ENABLE, PARSE_ONLY_BOOL, true},
{MENU_ENUM_LABEL_THREADED_DATA_RUNLOOP_ENABLE, PARSE_ONLY_BOOL, true},

View File

@ -6340,6 +6340,27 @@ static void setting_get_string_representation_uint_libretro_log_level(
}
}
static void setting_get_string_representation_uint_quit_on_close_content(
rarch_setting_t *setting,
char *s, size_t len)
{
if (!setting)
return;
switch (*setting->value.target.unsigned_integer)
{
case QUIT_ON_CLOSE_CONTENT_DISABLED:
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF), len);
break;
case QUIT_ON_CLOSE_CONTENT_ENABLED:
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ON), len);
break;
case QUIT_ON_CLOSE_CONTENT_CLI:
strlcpy(s, "CLI", len);
break;
}
}
enum setting_type menu_setting_get_browser_selection_type(rarch_setting_t *setting)
{
if (!setting)
@ -13781,6 +13802,22 @@ static bool setting_append_list(
SD_FLAG_ADVANCED
);
CONFIG_UINT(
list, list_info,
&settings->uints.quit_on_close_content,
MENU_ENUM_LABEL_QUIT_ON_CLOSE_CONTENT,
MENU_ENUM_LABEL_VALUE_QUIT_ON_CLOSE_CONTENT,
DEFAULT_QUIT_ON_CLOSE_CONTENT,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
(*list)[list_info->index - 1].action_ok = &setting_action_ok_uint;
(*list)[list_info->index - 1].get_string_representation =
&setting_get_string_representation_uint_quit_on_close_content;
menu_settings_list_current_add_range(list, list_info, 0, QUIT_ON_CLOSE_CONTENT_LAST-1, 1, true, true);
CONFIG_BOOL(
list, list_info,
&settings->bools.menu_mouse_enable,

View File

@ -949,6 +949,11 @@ enum msg_hash_enums
MENU_LABEL(INPUT_UNIFIED_MENU_CONTROLS),
MENU_LABEL(QUIT_PRESS_TWICE),
MENU_LABEL(QUIT_ON_CLOSE_CONTENT),
MENU_ENUM_LABEL_VALUE_QUIT_ON_CLOSE_CONTENT_DISABLED,
MENU_ENUM_LABEL_VALUE_QUIT_ON_CLOSE_CONTENT_ENABLED,
MENU_ENUM_LABEL_VALUE_QUIT_ON_CLOSE_CONTENT_CLI,
/* Video */
MENU_LABEL(CRT_SWITCH_RESOLUTION),

View File

@ -16308,6 +16308,11 @@ bool command_event(enum event_command cmd, void *data)
if (is_inited)
{
if ( (settings->uints.quit_on_close_content == QUIT_ON_CLOSE_CONTENT_CLI && global->launched_from_cli)
|| settings->uints.quit_on_close_content == QUIT_ON_CLOSE_CONTENT_ENABLED
)
command_event(CMD_EVENT_QUIT, NULL);
if (!task_push_start_dummy_core(&content_info))
return false;
}