diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index e001f34da0..a8e3b470d0 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -120,6 +120,9 @@ generic_deferred_push(deferred_push_remap_file_load, DISPLAYLIST_ generic_deferred_push(deferred_push_record_configfile, DISPLAYLIST_RECORD_CONFIG_FILES) generic_deferred_push(deferred_push_stream_configfile, DISPLAYLIST_STREAM_CONFIG_FILES) generic_deferred_push(deferred_push_input_overlay, DISPLAYLIST_OVERLAYS) +#ifdef HAVE_VIDEO_LAYOUT +generic_deferred_push(deferred_push_video_layout_path, DISPLAYLIST_VIDEO_LAYOUT_PATH) +#endif generic_deferred_push(deferred_push_video_font_path, DISPLAYLIST_FONTS) generic_deferred_push(deferred_push_xmb_font_path, DISPLAYLIST_FONTS) generic_deferred_push(deferred_push_content_history_path, DISPLAYLIST_CONTENT_HISTORY) @@ -147,6 +150,9 @@ generic_deferred_push(deferred_push_cheat_search_settings_list, DISPLAYLIST_ generic_deferred_push(deferred_push_onscreen_display_settings_list, DISPLAYLIST_ONSCREEN_DISPLAY_SETTINGS_LIST) generic_deferred_push(deferred_push_onscreen_notifications_settings_list, DISPLAYLIST_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST) generic_deferred_push(deferred_push_onscreen_overlay_settings_list, DISPLAYLIST_ONSCREEN_OVERLAY_SETTINGS_LIST) +#ifdef HAVE_VIDEO_LAYOUT +generic_deferred_push(deferred_push_onscreen_video_layout_settings_list, DISPLAYLIST_ONSCREEN_VIDEO_LAYOUT_SETTINGS_LIST) +#endif generic_deferred_push(deferred_push_menu_file_browser_settings_list,DISPLAYLIST_MENU_FILE_BROWSER_SETTINGS_LIST) generic_deferred_push(deferred_push_menu_views_settings_list, DISPLAYLIST_MENU_VIEWS_SETTINGS_LIST) generic_deferred_push(deferred_push_quick_menu_views_settings_list, DISPLAYLIST_QUICK_MENU_VIEWS_SETTINGS_LIST) @@ -718,6 +724,13 @@ static int menu_cbs_init_bind_deferred_push_compare_label( BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_onscreen_overlay_settings_list); return 0; } +#ifdef HAVE_VIDEO_LAYOUT + else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_VIDEO_LAYOUT_SETTINGS_LIST))) + { + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_onscreen_video_layout_settings_list); + return 0; + } +#endif else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_FILE_BROWSER_SETTINGS_LIST))) { BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_menu_file_browser_settings_list); @@ -1267,6 +1280,11 @@ static int menu_cbs_init_bind_deferred_push_compare_label( case MENU_ENUM_LABEL_INPUT_OVERLAY: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_input_overlay); break; +#ifdef HAVE_VIDEO_LAYOUT + case MENU_ENUM_LABEL_VIDEO_LAYOUT_PATH: + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_video_layout_path); + break; +#endif case MENU_ENUM_LABEL_VIDEO_FONT_PATH: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_video_font_path); break; @@ -1303,6 +1321,11 @@ static int menu_cbs_init_bind_deferred_push_compare_label( case MENU_ENUM_LABEL_DEFERRED_ONSCREEN_OVERLAY_SETTINGS_LIST: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_onscreen_overlay_settings_list); break; +#ifdef HAVE_VIDEO_LAYOUT + case MENU_ENUM_LABEL_DEFERRED_ONSCREEN_VIDEO_LAYOUT_SETTINGS_LIST: + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_onscreen_video_layout_settings_list); + break; +#endif case MENU_ENUM_LABEL_DEFERRED_AUDIO_SETTINGS_LIST: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_audio_settings_list); break; @@ -1505,6 +1528,11 @@ static int menu_cbs_init_bind_deferred_push_compare_label( case MENU_LABEL_INPUT_OVERLAY: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_input_overlay); break; +#ifdef HAVE_VIDEO_LAYOUT + case MENU_LABEL_VIDEO_LAYOUT_PATH: + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_video_layout_path); + break; +#endif case MENU_LABEL_VIDEO_FONT_PATH: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_video_font_path); break; diff --git a/menu/cbs/menu_cbs_get_value.c b/menu/cbs/menu_cbs_get_value.c index c826845d29..8eccaf13ce 100644 --- a/menu/cbs/menu_cbs_get_value.c +++ b/menu/cbs/menu_cbs_get_value.c @@ -983,6 +983,21 @@ static void menu_action_setting_disp_set_label_menu_file_overlay( path, "(OVERLAY)", s2, len2); } +#ifdef HAVE_VIDEO_LAYOUT +static void menu_action_setting_disp_set_label_menu_file_video_layout( + file_list_t* list, + unsigned *w, unsigned type, unsigned i, + const char *label, + char *s, size_t len, + const char *entry_label, + const char *path, + char *s2, size_t len2) +{ + menu_action_setting_generic_disp_set_label(w, s, len, + path, "(Video Layout)", s2, len2); +} +#endif + static void menu_action_setting_disp_set_label_menu_file_config( file_list_t* list, unsigned *w, unsigned type, unsigned i, @@ -1499,6 +1514,12 @@ static int menu_cbs_init_bind_get_string_representation_compare_type( BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label_menu_file_overlay); break; +#ifdef HAVE_VIDEO_LAYOUT + case FILE_TYPE_VIDEO_LAYOUT: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_menu_file_video_layout); + break; +#endif case FILE_TYPE_FONT: BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label_menu_file_font); diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c index 69955af267..337f9d147c 100644 --- a/menu/cbs/menu_cbs_left.c +++ b/menu/cbs/menu_cbs_left.c @@ -647,6 +647,9 @@ static int menu_cbs_init_bind_left_compare_type(menu_file_list_cbs_t *cbs, case FILE_TYPE_SHADER_PRESET: case FILE_TYPE_IMAGE: case FILE_TYPE_OVERLAY: +#ifdef HAVE_VIDEO_LAYOUT + case FILE_TYPE_VIDEO_LAYOUT: +#endif case FILE_TYPE_VIDEOFILTER: case FILE_TYPE_AUDIOFILTER: case FILE_TYPE_CONFIG: diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 67652f4747..0f59c08fcb 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -105,6 +105,9 @@ enum ACTION_OK_SET_PATH_AUDIO_FILTER, ACTION_OK_SET_PATH_VIDEO_FILTER, ACTION_OK_SET_PATH_OVERLAY, +#ifdef HAVE_VIDEO_LAYOUT + ACTION_OK_SET_PATH_VIDEO_LAYOUT, +#endif ACTION_OK_SET_DIRECTORY, ACTION_OK_SHOW_WIMP, ACTION_OK_LOAD_CHEAT_FILE_APPEND, @@ -203,6 +206,10 @@ static enum msg_hash_enums action_ok_dl_to_enum(unsigned lbl) return MENU_ENUM_LABEL_DEFERRED_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST; case ACTION_OK_DL_ONSCREEN_OVERLAY_SETTINGS_LIST: return MENU_ENUM_LABEL_DEFERRED_ONSCREEN_OVERLAY_SETTINGS_LIST; +#ifdef HAVE_VIDEO_LAYOUT + case ACTION_OK_DL_ONSCREEN_VIDEO_LAYOUT_SETTINGS_LIST: + return MENU_ENUM_LABEL_DEFERRED_ONSCREEN_VIDEO_LAYOUT_SETTINGS_LIST; +#endif case ACTION_OK_DL_MENU_SETTINGS_LIST: return MENU_ENUM_LABEL_DEFERRED_MENU_SETTINGS_LIST; case ACTION_OK_DL_MENU_VIEWS_SETTINGS_LIST: @@ -877,6 +884,9 @@ int generic_action_ok_displaylist_push(const char *path, case ACTION_OK_DL_ONSCREEN_DISPLAY_SETTINGS_LIST: case ACTION_OK_DL_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST: case ACTION_OK_DL_ONSCREEN_OVERLAY_SETTINGS_LIST: +#ifdef HAVE_VIDEO_LAYOUT + case ACTION_OK_DL_ONSCREEN_VIDEO_LAYOUT_SETTINGS_LIST: +#endif case ACTION_OK_DL_MENU_SETTINGS_LIST: case ACTION_OK_DL_MENU_VIEWS_SETTINGS_LIST: case ACTION_OK_DL_QUICK_MENU_VIEWS_SETTINGS_LIST: @@ -1544,6 +1554,12 @@ static int generic_action_ok(const char *path, flush_char = msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_OVERLAY_SETTINGS_LIST); ret = set_path_generic(menu_label, action_path); break; +#ifdef HAVE_VIDEO_LAYOUT + case ACTION_OK_SET_PATH_VIDEO_LAYOUT: + flush_char = msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_VIDEO_LAYOUT_SETTINGS_LIST); + ret = set_path_generic(menu_label, action_path); + break; +#endif case ACTION_OK_SET_PATH: flush_type = MENU_SETTINGS; ret = set_path_generic(menu_label, action_path); @@ -1601,6 +1617,9 @@ static int (funcname)(const char *path, const char *label, unsigned type, size_t default_action_ok_set(action_ok_set_path_audiofilter, ACTION_OK_SET_PATH_VIDEO_FILTER, MSG_UNKNOWN) default_action_ok_set(action_ok_set_path_videofilter, ACTION_OK_SET_PATH_AUDIO_FILTER, MSG_UNKNOWN) default_action_ok_set(action_ok_set_path_overlay, ACTION_OK_SET_PATH_OVERLAY, MSG_UNKNOWN) +#ifdef HAVE_VIDEO_LAYOUT +default_action_ok_set(action_ok_set_path_video_layout,ACTION_OK_SET_PATH_VIDEO_LAYOUT, MSG_UNKNOWN) +#endif default_action_ok_set(action_ok_set_path, ACTION_OK_SET_PATH, MSG_UNKNOWN) default_action_ok_set(action_ok_load_core, ACTION_OK_LOAD_CORE, MSG_UNKNOWN) default_action_ok_set(action_ok_sideload_core, ACTION_OK_SIDELOAD_CORE, MSG_UNKNOWN) @@ -4217,6 +4236,9 @@ default_action_ok_func(action_ok_cheat_start_or_cont, ACTION_OK_DL_CHEAT_SEARCH_ default_action_ok_func(action_ok_onscreen_display_list, ACTION_OK_DL_ONSCREEN_DISPLAY_SETTINGS_LIST) default_action_ok_func(action_ok_onscreen_notifications_list, ACTION_OK_DL_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST) default_action_ok_func(action_ok_onscreen_overlay_list, ACTION_OK_DL_ONSCREEN_OVERLAY_SETTINGS_LIST) +#ifdef HAVE_VIDEO_LAYOUT +default_action_ok_func(action_ok_onscreen_video_layout_list, ACTION_OK_DL_ONSCREEN_VIDEO_LAYOUT_SETTINGS_LIST) +#endif default_action_ok_func(action_ok_menu_list, ACTION_OK_DL_MENU_SETTINGS_LIST) default_action_ok_func(action_ok_quick_menu_override_options, ACTION_OK_DL_QUICK_MENU_OVERRIDE_OPTIONS_LIST) default_action_ok_func(action_ok_menu_views_list, ACTION_OK_DL_MENU_VIEWS_SETTINGS_LIST) @@ -5818,6 +5840,11 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_ONSCREEN_OVERLAY_SETTINGS: BIND_ACTION_OK(cbs, action_ok_onscreen_overlay_list); break; +#ifdef HAVE_VIDEO_LAYOUT + case MENU_ENUM_LABEL_ONSCREEN_VIDEO_LAYOUT_SETTINGS: + BIND_ACTION_OK(cbs, action_ok_onscreen_video_layout_list); + break; +#endif case MENU_ENUM_LABEL_MENU_SETTINGS: BIND_ACTION_OK(cbs, action_ok_menu_list); break; @@ -6352,6 +6379,11 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, case FILE_TYPE_OVERLAY: BIND_ACTION_OK(cbs, action_ok_set_path_overlay); break; +#ifdef HAVE_VIDEO_LAYOUT + case FILE_TYPE_VIDEO_LAYOUT: + BIND_ACTION_OK(cbs, action_ok_set_path_video_layout); + break; +#endif case FILE_TYPE_AUDIOFILTER: BIND_ACTION_OK(cbs, action_ok_set_path_audiofilter); break; diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index 82850b9058..0942229abe 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -531,6 +531,9 @@ static int menu_cbs_init_bind_right_compare_type(menu_file_list_cbs_t *cbs, case FILE_TYPE_SHADER_PRESET: case FILE_TYPE_IMAGE: case FILE_TYPE_OVERLAY: +#ifdef HAVE_VIDEO_LAYOUT + case FILE_TYPE_VIDEO_LAYOUT: +#endif case FILE_TYPE_VIDEOFILTER: case FILE_TYPE_AUDIOFILTER: case FILE_TYPE_CONFIG: diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index cf96ec68c2..ae82770b2e 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -300,6 +300,10 @@ default_sublabel_macro(action_bind_sublabel_overlay_opacity, MENU_ default_sublabel_macro(action_bind_sublabel_overlay_scale, MENU_ENUM_SUBLABEL_OVERLAY_SCALE) default_sublabel_macro(action_bind_sublabel_overlay_enable, MENU_ENUM_SUBLABEL_INPUT_OVERLAY_ENABLE) default_sublabel_macro(action_bind_sublabel_overlay_preset, MENU_ENUM_SUBLABEL_OVERLAY_PRESET) +#ifdef HAVE_VIDEO_LAYOUT +default_sublabel_macro(action_bind_sublabel_video_layout_enable, MENU_ENUM_SUBLABEL_VIDEO_LAYOUT_ENABLE) +default_sublabel_macro(action_bind_sublabel_video_layout_path, MENU_ENUM_SUBLABEL_VIDEO_LAYOUT_PATH) +#endif default_sublabel_macro(action_bind_sublabel_netplay_public_announce, MENU_ENUM_SUBLABEL_NETPLAY_PUBLIC_ANNOUNCE) default_sublabel_macro(action_bind_sublabel_netplay_ip_address, MENU_ENUM_SUBLABEL_NETPLAY_IP_ADDRESS) default_sublabel_macro(action_bind_sublabel_netplay_tcp_udp_port, MENU_ENUM_SUBLABEL_NETPLAY_TCP_UDP_PORT) @@ -421,6 +425,9 @@ default_sublabel_macro(action_bind_sublabel_quick_menu_show_controls, default_sublabel_macro(action_bind_sublabel_quick_menu_show_cheats, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_CHEATS) default_sublabel_macro(action_bind_sublabel_quick_menu_show_shaders, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SHADERS) default_sublabel_macro(action_bind_sublabel_content_show_overlays, MENU_ENUM_SUBLABEL_CONTENT_SHOW_OVERLAYS) +#ifdef HAVE_VIDEO_LAYOUT +default_sublabel_macro(action_bind_sublabel_content_show_video_layout, MENU_ENUM_SUBLABEL_CONTENT_SHOW_VIDEO_LAYOUT) +#endif default_sublabel_macro(action_bind_sublabel_content_show_rewind, MENU_ENUM_SUBLABEL_CONTENT_SHOW_REWIND) default_sublabel_macro(action_bind_sublabel_content_show_latency, MENU_ENUM_SUBLABEL_CONTENT_SHOW_LATENCY) default_sublabel_macro(action_bind_sublabel_quick_menu_show_save_core_overrides, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SAVE_CORE_OVERRIDES) @@ -470,6 +477,9 @@ default_sublabel_macro(action_bind_sublabel_savefile_directory, default_sublabel_macro(action_bind_sublabel_savestate_directory, MENU_ENUM_SUBLABEL_SAVESTATE_DIRECTORY) default_sublabel_macro(action_bind_sublabel_screenshot_directory, MENU_ENUM_SUBLABEL_SCREENSHOT_DIRECTORY) default_sublabel_macro(action_bind_sublabel_overlay_directory, MENU_ENUM_SUBLABEL_OVERLAY_DIRECTORY) +#ifdef HAVE_VIDEO_LAYOUT +default_sublabel_macro(action_bind_sublabel_video_layout_directory, MENU_ENUM_SUBLABEL_VIDEO_LAYOUT_DIRECTORY) +#endif default_sublabel_macro(action_bind_sublabel_cheatfile_directory, MENU_ENUM_SUBLABEL_CHEAT_DATABASE_PATH) default_sublabel_macro(action_bind_sublabel_audio_filter_directory, MENU_ENUM_SUBLABEL_AUDIO_FILTER_DIR) default_sublabel_macro(action_bind_sublabel_video_filter_directory, MENU_ENUM_SUBLABEL_VIDEO_FILTER_DIR) @@ -508,6 +518,9 @@ default_sublabel_macro(action_bind_sublabel_midi_input, default_sublabel_macro(action_bind_sublabel_midi_output, MENU_ENUM_SUBLABEL_MIDI_OUTPUT) default_sublabel_macro(action_bind_sublabel_midi_volume, MENU_ENUM_SUBLABEL_MIDI_VOLUME) default_sublabel_macro(action_bind_sublabel_onscreen_overlay_settings_list, MENU_ENUM_SUBLABEL_ONSCREEN_OVERLAY_SETTINGS) +#ifdef HAVE_VIDEO_LAYOUT +default_sublabel_macro(action_bind_sublabel_onscreen_video_layout_settings_list, MENU_ENUM_SUBLABEL_ONSCREEN_VIDEO_LAYOUT_SETTINGS) +#endif default_sublabel_macro(action_bind_sublabel_onscreen_notifications_settings_list, MENU_ENUM_SUBLABEL_ONSCREEN_NOTIFICATIONS_SETTINGS) #ifdef HAVE_QT default_sublabel_macro(action_bind_sublabel_show_wimp, MENU_ENUM_SUBLABEL_SHOW_WIMP) @@ -1156,6 +1169,11 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_OVERLAY_DIRECTORY: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_overlay_directory); break; +#ifdef HAVE_VIDEO_LAYOUT + case MENU_ENUM_LABEL_VIDEO_LAYOUT_DIRECTORY: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_layout_directory); + break; +#endif case MENU_ENUM_LABEL_SCREENSHOT_DIRECTORY: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_screenshot_directory); break; @@ -1282,6 +1300,11 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_CONTENT_SHOW_OVERLAYS: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_content_show_overlays); break; +#ifdef HAVE_VIDEO_LAYOUT + case MENU_ENUM_LABEL_CONTENT_SHOW_VIDEO_LAYOUT: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_content_show_video_layout); + break; +#endif case MENU_ENUM_LABEL_QUICK_MENU_SHOW_SHADERS: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_quick_menu_show_shaders); break; @@ -1687,6 +1710,14 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_OVERLAY_SCALE: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_overlay_scale); break; +#ifdef HAVE_VIDEO_LAYOUT + case MENU_ENUM_LABEL_VIDEO_LAYOUT_ENABLE: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_layout_enable); + break; + case MENU_ENUM_LABEL_VIDEO_LAYOUT_PATH: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_layout_path); + break; +#endif case MENU_ENUM_LABEL_AUDIO_DSP_PLUGIN: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_dsp_plugin); break; @@ -2378,6 +2409,11 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_ONSCREEN_OVERLAY_SETTINGS: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_onscreen_overlay_settings_list); break; +#ifdef HAVE_VIDEO_LAYOUT + case MENU_ENUM_LABEL_ONSCREEN_VIDEO_LAYOUT_SETTINGS: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_onscreen_video_layout_settings_list); + break; +#endif case MENU_ENUM_LABEL_ONSCREEN_NOTIFICATIONS_SETTINGS: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_onscreen_notifications_settings_list); break; diff --git a/menu/cbs/menu_cbs_title.c b/menu/cbs/menu_cbs_title.c index 57cbd97320..0f99d56ec5 100644 --- a/menu/cbs/menu_cbs_title.c +++ b/menu/cbs/menu_cbs_title.c @@ -138,6 +138,9 @@ default_title_macro(action_get_cheat_search_settings_list, MENU_ENUM_LABEL_ default_title_macro(action_get_onscreen_display_settings_list, MENU_ENUM_LABEL_VALUE_ONSCREEN_DISPLAY_SETTINGS) default_title_macro(action_get_onscreen_notifications_settings_list, MENU_ENUM_LABEL_VALUE_ONSCREEN_NOTIFICATIONS_SETTINGS) default_title_macro(action_get_onscreen_overlay_settings_list, MENU_ENUM_LABEL_VALUE_ONSCREEN_OVERLAY_SETTINGS) +#ifdef HAVE_VIDEO_LAYOUT +default_title_macro(action_get_onscreen_video_layout_settings_list, MENU_ENUM_LABEL_VALUE_ONSCREEN_VIDEO_LAYOUT_SETTINGS) +#endif default_title_macro(action_get_menu_views_settings_list, MENU_ENUM_LABEL_VALUE_MENU_VIEWS_SETTINGS) default_title_macro(action_get_quick_menu_views_settings_list, MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS) default_title_macro(action_get_menu_settings_list, MENU_ENUM_LABEL_VALUE_MENU_SETTINGS) @@ -208,6 +211,9 @@ default_fill_title_macro(action_get_title_audio_filter_directory, MENU_ENUM_LABE default_fill_title_macro(action_get_title_video_filter_directory, MENU_ENUM_LABEL_VALUE_VIDEO_FILTER_DIR) default_fill_title_macro(action_get_title_savefile_directory, MENU_ENUM_LABEL_VALUE_SAVEFILE_DIRECTORY) default_fill_title_macro(action_get_title_overlay_directory, MENU_ENUM_LABEL_VALUE_OVERLAY_DIRECTORY) +#ifdef HAVE_VIDEO_LAYOUT +default_fill_title_macro(action_get_title_video_layout_directory, MENU_ENUM_LABEL_VALUE_VIDEO_LAYOUT_DIRECTORY) +#endif default_fill_title_macro(action_get_title_system_directory, MENU_ENUM_LABEL_VALUE_SYSTEM_DIRECTORY) default_fill_title_macro(action_get_title_assets_directory, MENU_ENUM_LABEL_VALUE_ASSETS_DIRECTORY) default_fill_title_macro(action_get_title_extraction_directory, MENU_ENUM_LABEL_VALUE_CACHE_DIRECTORY) @@ -421,6 +427,13 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs, BIND_ACTION_GET_TITLE(cbs, action_get_onscreen_overlay_settings_list); return 0; } +#ifdef HAVE_VIDEO_LAYOUT + else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_VIDEO_LAYOUT_SETTINGS_LIST))) + { + BIND_ACTION_GET_TITLE(cbs, action_get_onscreen_video_layout_settings_list); + return 0; + } +#endif else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_VIEWS_SETTINGS_LIST))) { BIND_ACTION_GET_TITLE(cbs, action_get_menu_views_settings_list); @@ -662,6 +675,11 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_OVERLAY_DIRECTORY: BIND_ACTION_GET_TITLE(cbs, action_get_title_overlay_directory); break; +#ifdef HAVE_VIDEO_LAYOUT + case MENU_ENUM_LABEL_VIDEO_LAYOUT_DIRECTORY: + BIND_ACTION_GET_TITLE(cbs, action_get_title_video_layout_directory); + break; +#endif case MENU_ENUM_LABEL_RGUI_BROWSER_DIRECTORY: BIND_ACTION_GET_TITLE(cbs, action_get_title_browser_directory); break; @@ -827,6 +845,11 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_DEFERRED_ONSCREEN_OVERLAY_SETTINGS_LIST: BIND_ACTION_GET_TITLE(cbs, action_get_onscreen_overlay_settings_list); break; +#ifdef HAVE_VIDEO_LAYOUT + case MENU_ENUM_LABEL_DEFERRED_ONSCREEN_VIDEO_LAYOUT_SETTINGS_LIST: + BIND_ACTION_GET_TITLE(cbs, action_get_onscreen_video_layout_settings_list); + break; +#endif case MENU_ENUM_LABEL_DEFERRED_CORE_SETTINGS_LIST: BIND_ACTION_GET_TITLE(cbs, action_get_core_settings_list); break; @@ -997,6 +1020,11 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs, case MENU_LABEL_OVERLAY_DIRECTORY: BIND_ACTION_GET_TITLE(cbs, action_get_title_overlay_directory); break; +#ifdef HAVE_VIDEO_LAYOUT + case MENU_LABEL_VIDEO_LAYOUT_DIRECTORY: + BIND_ACTION_GET_TITLE(cbs, action_get_title_video_layout_directory); + break; +#endif case MENU_LABEL_RGUI_BROWSER_DIRECTORY: BIND_ACTION_GET_TITLE(cbs, action_get_title_browser_directory); break; diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 76407ac801..d296231ce3 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -2669,6 +2669,9 @@ static void materialui_list_insert(void *userdata, string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_QUICK_MENU_VIEWS_SETTINGS)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_MENU_SETTINGS)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_ONSCREEN_OVERLAY_SETTINGS)) || +#ifdef HAVE_VIDEO_LAYOUT + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_ONSCREEN_VIDEO_LAYOUT_SETTINGS)) || +#endif string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_ONSCREEN_NOTIFICATIONS_SETTINGS)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_ACCOUNTS_LIST)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_REWIND_SETTINGS)) || diff --git a/menu/drivers/menu_generic.c b/menu/drivers/menu_generic.c index 64fbc3091a..5b3919167b 100644 --- a/menu/drivers/menu_generic.c +++ b/menu/drivers/menu_generic.c @@ -159,6 +159,11 @@ int generic_menu_iterate(menu_handle_t *menu, void *userdata, enum menu_action a case FILE_TYPE_OVERLAY: enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_OVERLAY; break; +#ifdef HAVE_VIDEO_LAYOUT + case FILE_TYPE_VIDEO_LAYOUT: + enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_VIDEO_LAYOUT; + break; +#endif case FILE_TYPE_CHEAT: enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_CHEAT; break; diff --git a/menu/drivers/ozone/ozone_texture.c b/menu/drivers/ozone/ozone_texture.c index c1229a5da4..23c25d8f19 100644 --- a/menu/drivers/ozone/ozone_texture.c +++ b/menu/drivers/ozone/ozone_texture.c @@ -124,6 +124,9 @@ menu_texture_item ozone_entries_icon_get_texture(ozone_handle_t *ozone, return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_IMAGE]; case MENU_ENUM_LABEL_UPDATE_OVERLAYS: case MENU_ENUM_LABEL_ONSCREEN_OVERLAY_SETTINGS: +#ifdef HAVE_VIDEO_LAYOUT + case MENU_ENUM_LABEL_ONSCREEN_VIDEO_LAYOUT_SETTINGS: +#endif return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_OVERLAY]; case MENU_ENUM_LABEL_UPDATE_CG_SHADERS: case MENU_ENUM_LABEL_UPDATE_GLSL_SHADERS: diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 271ba2af9a..dd92bde4b6 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -2258,6 +2258,9 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb, return xmb->textures.list[XMB_TEXTURE_IMAGE]; case MENU_ENUM_LABEL_UPDATE_OVERLAYS: case MENU_ENUM_LABEL_ONSCREEN_OVERLAY_SETTINGS: +#ifdef HAVE_VIDEO_LAYOUT + case MENU_ENUM_LABEL_ONSCREEN_VIDEO_LAYOUT_SETTINGS: +#endif return xmb->textures.list[XMB_TEXTURE_OVERLAY]; case MENU_ENUM_LABEL_UPDATE_CG_SHADERS: case MENU_ENUM_LABEL_UPDATE_GLSL_SHADERS: diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index 5845b8b157..1853a34bae 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -124,6 +124,9 @@ enum ACTION_OK_DL_MIXER_STREAM_SETTINGS_LIST, ACTION_OK_DL_ONSCREEN_DISPLAY_SETTINGS_LIST, ACTION_OK_DL_ONSCREEN_OVERLAY_SETTINGS_LIST, +#ifdef HAVE_VIDEO_LAYOUT + ACTION_OK_DL_ONSCREEN_VIDEO_LAYOUT_SETTINGS_LIST, +#endif ACTION_OK_DL_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST, ACTION_OK_DL_MENU_VIEWS_SETTINGS_LIST, ACTION_OK_DL_QUICK_MENU_VIEWS_SETTINGS_LIST, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 5aa14468e4..331c9c44f9 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -1860,6 +1860,17 @@ static int menu_displaylist_parse_load_content_settings( MENU_SETTING_ACTION, 0, 0); } +#ifdef HAVE_VIDEO_LAYOUT + if (settings->bools.menu_show_video_layout && !settings->bools.kiosk_mode_enable) + { + menu_entries_append_enum(info->list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ONSCREEN_VIDEO_LAYOUT_SETTINGS), + msg_hash_to_str(MENU_ENUM_LABEL_ONSCREEN_VIDEO_LAYOUT_SETTINGS), + MENU_ENUM_LABEL_ONSCREEN_VIDEO_LAYOUT_SETTINGS, + MENU_SETTING_ACTION, 0, 0); + } +#endif + if (settings->bools.menu_show_rewind && !settings->bools.kiosk_mode_enable) { menu_entries_append_enum(info->list, @@ -3779,6 +3790,25 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct } } break; +#ifdef HAVE_VIDEO_LAYOUT + case DISPLAYLIST_ONSCREEN_VIDEO_LAYOUT_SETTINGS_LIST: + { + menu_displaylist_build_info_t build_list[] = { + {MENU_ENUM_LABEL_VIDEO_LAYOUT_ENABLE, PARSE_ONLY_BOOL }, + {MENU_ENUM_LABEL_VIDEO_LAYOUT_PATH, PARSE_ONLY_PATH }, + {MENU_ENUM_LABEL_VIDEO_LAYOUT_SELECTED_VIEW, PARSE_ONLY_UINT }, + }; + + for (i = 0; i < ARRAY_SIZE(build_list); i++) + { + if (menu_displaylist_parse_settings_enum(list, + build_list[i].enum_idx, build_list[i].parse_type, + false) == 0) + count++; + } + } + break; +#endif case DISPLAYLIST_LATENCY_SETTINGS_LIST: { menu_displaylist_build_info_t build_list[] = { @@ -3961,6 +3991,9 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct { menu_displaylist_build_info_t build_list[] = { {MENU_ENUM_LABEL_ONSCREEN_OVERLAY_SETTINGS, PARSE_ACTION}, +#ifdef HAVE_VIDEO_LAYOUT + {MENU_ENUM_LABEL_ONSCREEN_VIDEO_LAYOUT_SETTINGS, PARSE_ACTION}, +#endif {MENU_ENUM_LABEL_ONSCREEN_NOTIFICATIONS_SETTINGS, PARSE_ACTION}, }; @@ -4064,6 +4097,9 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct {MENU_ENUM_LABEL_CONTENT_SHOW_REWIND, PARSE_ONLY_BOOL}, {MENU_ENUM_LABEL_CONTENT_SHOW_LATENCY, PARSE_ONLY_BOOL}, {MENU_ENUM_LABEL_CONTENT_SHOW_OVERLAYS, PARSE_ONLY_BOOL}, +#ifdef HAVE_VIDEO_LAYOUT + {MENU_ENUM_LABEL_CONTENT_SHOW_VIDEO_LAYOUT, PARSE_ONLY_BOOL}, +#endif {MENU_ENUM_LABEL_QUICK_MENU_SHOW_SAVE_CORE_OVERRIDES, PARSE_ONLY_BOOL}, {MENU_ENUM_LABEL_QUICK_MENU_SHOW_SAVE_GAME_OVERRIDES, PARSE_ONLY_BOOL}, {MENU_ENUM_LABEL_QUICK_MENU_SHOW_INFORMATION, PARSE_ONLY_BOOL}, @@ -4135,6 +4171,9 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct {MENU_ENUM_LABEL_RECORDING_OUTPUT_DIRECTORY, PARSE_ONLY_DIR}, {MENU_ENUM_LABEL_RECORDING_CONFIG_DIRECTORY, PARSE_ONLY_DIR}, {MENU_ENUM_LABEL_OVERLAY_DIRECTORY, PARSE_ONLY_DIR}, +#ifdef HAVE_VIDEO_LAYOUT + {MENU_ENUM_LABEL_VIDEO_LAYOUT_DIRECTORY, PARSE_ONLY_DIR}, +#endif {MENU_ENUM_LABEL_SCREENSHOT_DIRECTORY, PARSE_ONLY_DIR}, {MENU_ENUM_LABEL_JOYPAD_AUTOCONFIG_DIR, PARSE_ONLY_DIR}, {MENU_ENUM_LABEL_INPUT_REMAPPING_DIRECTORY, PARSE_ONLY_DIR}, @@ -5470,6 +5509,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, case DISPLAYLIST_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST: case DISPLAYLIST_LATENCY_SETTINGS_LIST: case DISPLAYLIST_ONSCREEN_OVERLAY_SETTINGS_LIST: +#ifdef HAVE_VIDEO_LAYOUT + case DISPLAYLIST_ONSCREEN_VIDEO_LAYOUT_SETTINGS_LIST: +#endif case DISPLAYLIST_ACCOUNTS_CHEEVOS_LIST: case DISPLAYLIST_ACCOUNTS_LIST: case DISPLAYLIST_MENU_FILE_BROWSER_SETTINGS_LIST: @@ -7101,6 +7143,18 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, load_content = false; use_filebrowser = true; break; +#ifdef HAVE_VIDEO_LAYOUT + case DISPLAYLIST_VIDEO_LAYOUT_PATH: + menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); + filebrowser_clear_type(); + info->type_default = FILE_TYPE_VIDEO_LAYOUT; + load_content = false; + use_filebrowser = true; + if (!string_is_empty(info->exts)) + free(info->exts); + info->exts = strdup("lay|zip"); + break; +#endif case DISPLAYLIST_CONTENT_HISTORY: menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); filebrowser_clear_type(); diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index 9909759a4d..c0dd6a4bcf 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -114,6 +114,9 @@ enum menu_displaylist_ctl_state DISPLAYLIST_IMAGES, DISPLAYLIST_FONTS, DISPLAYLIST_OVERLAYS, +#ifdef HAVE_VIDEO_LAYOUT + DISPLAYLIST_VIDEO_LAYOUT_PATH, +#endif DISPLAYLIST_SHADER_PARAMETERS, DISPLAYLIST_SHADER_PARAMETERS_PRESET, DISPLAYLIST_NETWORK_INFO, @@ -139,6 +142,9 @@ enum menu_displaylist_ctl_state DISPLAYLIST_LATENCY_SETTINGS_LIST, DISPLAYLIST_INPUT_HOTKEY_BINDS_LIST, DISPLAYLIST_ONSCREEN_OVERLAY_SETTINGS_LIST, +#ifdef HAVE_VIDEO_LAYOUT + DISPLAYLIST_ONSCREEN_VIDEO_LAYOUT_SETTINGS_LIST, +#endif DISPLAYLIST_ONSCREEN_DISPLAY_SETTINGS_LIST, DISPLAYLIST_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST, DISPLAYLIST_MENU_FILE_BROWSER_SETTINGS_LIST, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 65ab26fb80..d463766c3c 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -99,6 +99,10 @@ #include "../network/netplay/netplay.h" #endif +#ifdef HAVE_VIDEO_LAYOUT +#include "../gfx/video_layout.h" +#endif + /* Required for 3DS display mode setting */ #if defined(_3DS) #include "gfx/common/ctr_common.h" @@ -127,6 +131,9 @@ enum settings_list_type SETTINGS_LIST_FRAME_THROTTLING, SETTINGS_LIST_FONT, SETTINGS_LIST_OVERLAY, +#ifdef HAVE_VIDEO_LAYOUT + SETTINGS_LIST_VIDEO_LAYOUT, +#endif SETTINGS_LIST_MENU, SETTINGS_LIST_MENU_FILE_BROWSER, SETTINGS_LIST_MULTIMEDIA, @@ -5934,6 +5941,39 @@ static void overlay_enable_toggle_change_handler(rarch_setting_t *setting) } #endif +#ifdef HAVE_VIDEO_LAYOUT +static void change_handler_video_layout_enable(rarch_setting_t *setting) +{ + if(*setting->value.target.boolean) + { + settings_t *settings = config_get_ptr(); + void *driver = video_driver_get_ptr(false); + + video_layout_init(driver, video_driver_layout_render_interface()); + video_layout_load(settings->paths.path_video_layout); + video_layout_view_select(settings->uints.video_layout_selected_view); + } + else + { + video_layout_deinit(); + } +} + +static void change_handler_video_layout_path(rarch_setting_t *setting) +{ + settings_t *settings = config_get_ptr(); + settings->uints.video_layout_selected_view = 0; + + video_layout_load(setting->value.target.string); +} + +static void change_handler_video_layout_selected_view(rarch_setting_t *setting) +{ + unsigned *v = setting->value.target.unsigned_integer; + *v = video_layout_view_select(*v); +} +#endif + #ifdef HAVE_CHEEVOS static void achievement_hardcore_mode_write_handler(rarch_setting_t *setting) { @@ -6889,6 +6929,17 @@ static bool setting_append_list( SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_LAKKA_ADVANCED); #endif +#ifdef HAVE_VIDEO_LAYOUT + CONFIG_ACTION( + list, list_info, + MENU_ENUM_LABEL_ONSCREEN_VIDEO_LAYOUT_SETTINGS, + MENU_ENUM_LABEL_VALUE_ONSCREEN_VIDEO_LAYOUT_SETTINGS, + &group_info, + &subgroup_info, + parent_group); + SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_LAKKA_ADVANCED); +#endif + CONFIG_ACTION( list, list_info, MENU_ENUM_LABEL_ONSCREEN_NOTIFICATIONS_SETTINGS, @@ -10649,6 +10700,61 @@ static bool setting_append_list( END_GROUP(list, list_info, parent_group); #endif break; +#ifdef HAVE_VIDEO_LAYOUT + case SETTINGS_LIST_VIDEO_LAYOUT: + START_GROUP(list, list_info, &group_info, + msg_hash_to_str(MENU_ENUM_LABEL_ONSCREEN_VIDEO_LAYOUT_SETTINGS), + parent_group); + + parent_group = msg_hash_to_str(MENU_ENUM_LABEL_ONSCREEN_VIDEO_LAYOUT_SETTINGS); + + START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + + CONFIG_BOOL( + list, list_info, + &settings->bools.video_layout_enable, + MENU_ENUM_LABEL_VIDEO_LAYOUT_ENABLE, + MENU_ENUM_LABEL_VALUE_VIDEO_LAYOUT_ENABLE, + true, + MENU_ENUM_LABEL_VALUE_OFF, + MENU_ENUM_LABEL_VALUE_ON, + &group_info, + &subgroup_info, + parent_group, + change_handler_video_layout_enable, + general_read_handler, + SD_FLAG_NONE); + + CONFIG_PATH( + list, list_info, + settings->paths.path_video_layout, + sizeof(settings->paths.path_video_layout), + MENU_ENUM_LABEL_VIDEO_LAYOUT_PATH, + MENU_ENUM_LABEL_VALUE_VIDEO_LAYOUT_PATH, + settings->paths.directory_video_layout, + &group_info, + &subgroup_info, + parent_group, + change_handler_video_layout_path, + general_read_handler); + + CONFIG_UINT( + list, list_info, + &settings->uints.video_layout_selected_view, + MENU_ENUM_LABEL_VIDEO_LAYOUT_SELECTED_VIEW, + MENU_ENUM_LABEL_VALUE_VIDEO_LAYOUT_SELECTED_VIEW, + 0, + &group_info, + &subgroup_info, + parent_group, + change_handler_video_layout_selected_view, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 0, 1, false, false); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); + break; +#endif case SETTINGS_LIST_MENU: START_GROUP(list, list_info, &group_info, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_MENU_SETTINGS), @@ -11477,6 +11583,23 @@ static bool setting_append_list( general_read_handler, SD_FLAG_LAKKA_ADVANCED); +#ifdef HAVE_VIDEO_LAYOUT + CONFIG_BOOL( + list, list_info, + &settings->bools.menu_show_video_layout, + MENU_ENUM_LABEL_CONTENT_SHOW_VIDEO_LAYOUT, + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_VIDEO_LAYOUT, + true, + MENU_ENUM_LABEL_VALUE_OFF, + MENU_ENUM_LABEL_VALUE_ON, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler, + SD_FLAG_LAKKA_ADVANCED); +#endif + CONFIG_BOOL( list, list_info, &settings->bools.menu_show_latency, @@ -14028,6 +14151,23 @@ static bool setting_append_list( (*list)[list_info->index - 1].action_start = directory_action_start_generic; #endif +#ifdef HAVE_VIDEO_LAYOUT + CONFIG_DIR( + list, list_info, + settings->paths.directory_video_layout, + sizeof(settings->paths.directory_video_layout), + MENU_ENUM_LABEL_VIDEO_LAYOUT_DIRECTORY, + MENU_ENUM_LABEL_VALUE_VIDEO_LAYOUT_DIRECTORY, + g_defaults.dirs[DEFAULT_DIR_VIDEO_LAYOUT], + MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + (*list)[list_info->index - 1].action_start = directory_action_start_generic; +#endif + CONFIG_DIR( list, list_info, settings->paths.directory_screenshot, @@ -14397,6 +14537,9 @@ static rarch_setting_t *menu_setting_new_internal(rarch_setting_info_t *list_inf SETTINGS_LIST_FRAME_THROTTLING, SETTINGS_LIST_FONT, SETTINGS_LIST_OVERLAY, +#ifdef HAVE_VIDEO_LAYOUT + SETTINGS_LIST_VIDEO_LAYOUT, +#endif SETTINGS_LIST_MENU, SETTINGS_LIST_MENU_FILE_BROWSER, SETTINGS_LIST_MULTIMEDIA,