From e8f55e8b244ab36ea1dea0f4bdd9a60d0ae582a6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 1 Dec 2019 22:38:53 +0100 Subject: [PATCH] Refactor deferred push callbacks --- menu/cbs/menu_cbs_deferred_push.c | 328 ++++++------------------------ 1 file changed, 67 insertions(+), 261 deletions(-) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index da7fbb14d9..9111d64843 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -641,274 +641,80 @@ static int menu_cbs_init_bind_deferred_push_compare_label( menu_file_list_cbs_t *cbs, const char *label, uint32_t label_hash) { - if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DUMP_DISC_LIST))) + unsigned i; + typedef struct deferred_info_list { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_dump_disk_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_LOAD_DISC_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_load_disk_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_FAVORITES_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_favorites_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_dropdown_box_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_SPECIAL))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_dropdown_box_list_special); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_RESOLUTION))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_dropdown_box_list_resolution); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_DEFAULT_CORE))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_dropdown_box_list_playlist_default_core); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LABEL_DISPLAY_MODE))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_dropdown_box_list_playlist_label_display_mode); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_dropdown_box_list_playlist_right_thumbnail_mode); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_dropdown_box_list_playlist_left_thumbnail_mode); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_browse_url_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_START))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_browse_url_start); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CONFIGURATION_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_configuration_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_SAVING_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_saving_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MIXER_STREAM_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_mixer_stream_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_LOGGING_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_logging_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_FRAME_THROTTLE_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_frame_throttle_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_FRAME_TIME_COUNTER_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_frame_time_counter_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_REWIND_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_rewind_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CHEAT_DETAILS_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_cheat_details_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CHEAT_SEARCH_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_cheat_search_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_DISPLAY_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_onscreen_display_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_onscreen_notifications_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_ONSCREEN_OVERLAY_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_onscreen_overlay_settings_list); - return 0; - } + unsigned type; + int (*cb)(menu_displaylist_info_t *info); + } deferred_info_list_t; + + deferred_info_list_t info_list[] = { + {MENU_ENUM_LABEL_DEFERRED_DUMP_DISC_LIST, deferred_push_dump_disk_list}, + {MENU_ENUM_LABEL_DEFERRED_LOAD_DISC_LIST, deferred_push_load_disk_list}, + {MENU_ENUM_LABEL_DEFERRED_FAVORITES_LIST, deferred_push_favorites_list}, + {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST, deferred_push_dropdown_box_list}, + {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_SPECIAL, deferred_push_dropdown_box_list_special}, + {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_RESOLUTION, deferred_push_dropdown_box_list_resolution}, + {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_DEFAULT_CORE, deferred_push_dropdown_box_list_playlist_default_core}, + {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LABEL_DISPLAY_MODE, deferred_push_dropdown_box_list_playlist_label_display_mode}, + {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE, deferred_push_dropdown_box_list_playlist_right_thumbnail_mode}, + {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE, deferred_push_dropdown_box_list_playlist_left_thumbnail_mode}, + {MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_LIST, deferred_push_browse_url_list}, + {MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_START, deferred_push_browse_url_start}, + {MENU_ENUM_LABEL_DEFERRED_CORE_SETTINGS_LIST, deferred_push_core_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_CONFIGURATION_SETTINGS_LIST, deferred_push_configuration_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_SAVING_SETTINGS_LIST, deferred_push_saving_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_MIXER_STREAM_SETTINGS_LIST, deferred_push_mixer_stream_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_LOGGING_SETTINGS_LIST, deferred_push_logging_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_FRAME_THROTTLE_SETTINGS_LIST, deferred_push_frame_throttle_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_FRAME_TIME_COUNTER_SETTINGS_LIST, deferred_push_frame_time_counter_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_REWIND_SETTINGS_LIST, deferred_push_rewind_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_CHEAT_DETAILS_SETTINGS_LIST, deferred_push_cheat_details_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_CHEAT_SEARCH_SETTINGS_LIST, deferred_push_cheat_search_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_ONSCREEN_DISPLAY_SETTINGS_LIST, deferred_push_onscreen_display_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST, deferred_push_onscreen_notifications_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_ONSCREEN_OVERLAY_SETTINGS_LIST, deferred_push_onscreen_overlay_settings_list}, #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; - } + {MENU_ENUM_LABEL_DEFERRED_ONSCREEN_VIDEO_LAYOUT_SETTINGS_LIST, deferred_push_onscreen_video_layout_settings_list}, #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); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_VIEWS_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_menu_views_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_SETTINGS_VIEWS_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_settings_views_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_QUICK_MENU_VIEWS_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_quick_menu_views_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_menu_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_USER_INTERFACE_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_user_interface_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_POWER_MANAGEMENT_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_power_management_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_SOUNDS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_menu_sounds_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_RETRO_ACHIEVEMENTS_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_retro_achievements_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_UPDATER_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_updater_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_NETWORK_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_network_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_WIFI_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_wifi_settings_list); - return 0; - } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_LAKKA_SERVICES_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_lakka_services_list); - return 0; - } - - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_USER_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_user_settings_list); - return 0; - } - - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DIRECTORY_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_directory_settings_list); - return 0; - } - - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_PRIVACY_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_privacy_settings_list); - return 0; - } - - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MIDI_SETTINGS_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_midi_settings_list); - return 0; - } - - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_CONTENT_DIRS_LIST))) - { + {MENU_ENUM_LABEL_DEFERRED_MENU_FILE_BROWSER_SETTINGS_LIST, deferred_push_menu_file_browser_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_MENU_VIEWS_SETTINGS_LIST, deferred_push_menu_views_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_SETTINGS_VIEWS_SETTINGS_LIST, deferred_push_settings_views_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_QUICK_MENU_VIEWS_SETTINGS_LIST, deferred_push_quick_menu_views_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_MENU_SETTINGS_LIST, deferred_push_menu_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_USER_INTERFACE_SETTINGS_LIST, deferred_push_user_interface_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_POWER_MANAGEMENT_SETTINGS_LIST, deferred_push_power_management_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_MENU_SOUNDS_LIST, deferred_push_menu_sounds_list}, + {MENU_ENUM_LABEL_DEFERRED_RETRO_ACHIEVEMENTS_SETTINGS_LIST, deferred_push_retro_achievements_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_UPDATER_SETTINGS_LIST, deferred_push_updater_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_NETWORK_SETTINGS_LIST, deferred_push_network_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_WIFI_SETTINGS_LIST, deferred_push_wifi_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_LAKKA_SERVICES_LIST, deferred_push_lakka_services_list}, + {MENU_ENUM_LABEL_DEFERRED_USER_SETTINGS_LIST, deferred_push_user_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_DIRECTORY_SETTINGS_LIST, deferred_push_directory_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_PRIVACY_SETTINGS_LIST, deferred_push_privacy_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_MIDI_SETTINGS_LIST, deferred_push_midi_settings_list}, #ifdef HAVE_NETWORKING - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_content_dirs_list); + {MENU_ENUM_LABEL_DEFERRED_CORE_CONTENT_DIRS_LIST, deferred_push_core_content_dirs_list}, + {MENU_ENUM_LABEL_DEFERRED_CORE_CONTENT_DIRS_SUBDIR_LIST, deferred_push_core_content_dirs_subdir_list}, #endif - return 0; + {MENU_ENUM_LABEL_DEFERRED_MUSIC, deferred_music_list}, + {MENU_ENUM_LABEL_DEFERRED_MUSIC_LIST, deferred_music_history_list}, + {MENU_ENUM_LABEL_DEFERRED_PLAYLIST_LIST, deferred_playlist_list}, + {MENU_ENUM_LABEL_DEFERRED_IMAGES_LIST, deferred_image_history_list}, + {MENU_ENUM_LABEL_DEFERRED_VIDEO_LIST, deferred_video_history_list}, + }; + + for (i = 0; i < ARRAY_SIZE(info_list); i++) + { + if (string_is_equal(label, msg_hash_to_str(info_list[i].type))) + { + BIND_ACTION_DEFERRED_PUSH(cbs, info_list[i].cb); + return 0; + } } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_CONTENT_DIRS_SUBDIR_LIST))) - { -#ifdef HAVE_NETWORKING - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_content_dirs_subdir_list); -#endif - return 0; - } - else if ( - string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MUSIC))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_music_list); - return 0; - } - else if ( - string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MUSIC_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_music_history_list); - return 0; - } - else if ( - string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_PLAYLIST_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_playlist_list); - return 0; - } - else if ( - string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_IMAGES_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_image_history_list); - return 0; - } - else if ( - string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_VIDEO_LIST))) - { - BIND_ACTION_DEFERRED_PUSH(cbs, deferred_video_history_list); - return 0; - } - else if (strstr(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_RDB_ENTRY_DETAIL))) + if (strstr(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_RDB_ENTRY_DETAIL))) { BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_rdb_entry_detail); }