From ed4aae2d18af7a52800ed6fb224a53367796b324 Mon Sep 17 00:00:00 2001 From: hunterk Date: Mon, 11 Nov 2019 12:48:13 -0600 Subject: [PATCH 001/148] switch to nearest neighbor scaling as default --- config.def.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.def.h b/config.def.h index a8f4049b64..fba44b8c49 100644 --- a/config.def.h +++ b/config.def.h @@ -317,7 +317,7 @@ #endif /* Smooths picture. */ -#define DEFAULT_VIDEO_SMOOTH true +#define DEFAULT_VIDEO_SMOOTH false /* On resize and fullscreen, rendering area will stay 4:3 */ #define DEFAULT_FORCE_ASPECT true From b142a44fd0ab48cbad3528b0086f007e3ff38cb1 Mon Sep 17 00:00:00 2001 From: hunterk Date: Mon, 11 Nov 2019 12:56:55 -0600 Subject: [PATCH 002/148] keep bilinear filtering for low-res targets --- config.def.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config.def.h b/config.def.h index fba44b8c49..703d8a8ca3 100644 --- a/config.def.h +++ b/config.def.h @@ -317,7 +317,11 @@ #endif /* Smooths picture. */ +#if defined(_3DS) || defined(GEKKO) || defined(HW_RVL) || defined(PSP) || defined(VITA) || defined(SN_TARGET_PSP2) || defined(PS2) || defined(_XBOX) +#define DEFAULT_VIDEO_SMOOTH true +#else #define DEFAULT_VIDEO_SMOOTH false +#endif /* On resize and fullscreen, rendering area will stay 4:3 */ #define DEFAULT_FORCE_ASPECT true From ef2ddf69127f15f933e73436c030fd725c40aa04 Mon Sep 17 00:00:00 2001 From: Mats A Date: Thu, 26 Dec 2019 18:55:00 +0100 Subject: [PATCH 003/148] fix breaking changes from the 3.0.0 libnx release --- audio/drivers/switch_audio_compat.h | 2 +- audio/drivers/switch_libnx_audren_thread_audio.c | 2 +- frontend/drivers/platform_switch.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/audio/drivers/switch_audio_compat.h b/audio/drivers/switch_audio_compat.h index bc65f72ed9..8f9b228376 100644 --- a/audio/drivers/switch_audio_compat.h +++ b/audio/drivers/switch_audio_compat.h @@ -17,7 +17,7 @@ typedef Thread compat_thread; typedef CondVar compat_condvar; #define compat_thread_create(thread, func, data, stack_size, prio, cpu) \ - threadCreate(thread, func, data, stack_size, prio, cpu) + threadCreate(thread, func, data, NULL, stack_size, prio, cpu) #define compat_thread_start(thread) \ threadStart(thread) #define compat_thread_join(thread) \ diff --git a/audio/drivers/switch_libnx_audren_thread_audio.c b/audio/drivers/switch_libnx_audren_thread_audio.c index a4cde5a52e..c44f18aab4 100644 --- a/audio/drivers/switch_libnx_audren_thread_audio.c +++ b/audio/drivers/switch_libnx_audren_thread_audio.c @@ -232,7 +232,7 @@ static void *libnx_audren_thread_audio_init(const char *device, unsigned rate, u svcGetThreadPriority(&thread_priority, CUR_THREAD_HANDLE); rc = threadCreate(&aud->thread, &thread_job, - (void*)aud, thread_stack_size, + (void*)aud, NULL, thread_stack_size, thread_priority - 1, thread_preferred_cpu); if (R_FAILED(rc)) { diff --git a/frontend/drivers/platform_switch.c b/frontend/drivers/platform_switch.c index 92685e5aa2..df18934f91 100644 --- a/frontend/drivers/platform_switch.c +++ b/frontend/drivers/platform_switch.c @@ -691,7 +691,7 @@ static void frontend_switch_init(void *data) uint32_t width = 0; uint32_t height = 0; - nifmInitialize(); + nifmInitialize(NifmServiceType_User); if(hosversionBefore(8, 0, 0)) pcvInitialize(); From edec9448c4b8d1e6d2674f841439dc09d776e109 Mon Sep 17 00:00:00 2001 From: jdgleaver Date: Thu, 9 Jan 2020 14:13:21 +0000 Subject: [PATCH 004/148] Fix manual core installation --- menu/cbs/menu_cbs_deferred_push.c | 8 ++ menu/cbs/menu_cbs_ok.c | 173 ++++++++++++++++++++++-------- menu/cbs/menu_cbs_title.c | 7 -- menu/menu_displaylist.c | 19 +++- menu/widgets/menu_filebrowser.c | 2 +- msg_hash.h | 3 +- 6 files changed, 156 insertions(+), 56 deletions(-) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 26215d0e75..3ed5a065c9 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -238,6 +238,8 @@ generic_deferred_push(deferred_push_switch_backlight_control, DISPLAYLIST_ generic_deferred_push(deferred_push_manual_content_scan_list, DISPLAYLIST_MANUAL_CONTENT_SCAN_LIST) generic_deferred_push(deferred_push_manual_content_scan_dat_file, DISPLAYLIST_MANUAL_CONTENT_SCAN_DAT_FILES) +generic_deferred_push(deferred_push_file_browser_select_sideload_core, DISPLAYLIST_FILE_BROWSER_SELECT_SIDELOAD_CORE) + static int deferred_push_cursor_manager_list_deferred( menu_displaylist_info_t *info) { @@ -1172,6 +1174,9 @@ static int menu_cbs_init_bind_deferred_push_compare_label( case MENU_ENUM_LABEL_MANUAL_CONTENT_SCAN_DAT_FILE: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_manual_content_scan_dat_file); break; + case MENU_ENUM_LABEL_SIDELOAD_CORE_LIST: + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_file_browser_select_sideload_core); + break; default: return -1; } @@ -1391,6 +1396,9 @@ static int menu_cbs_init_bind_deferred_push_compare_label( case MENU_LABEL_MANUAL_CONTENT_SCAN_DAT_FILE: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_manual_content_scan_dat_file); break; + case MENU_LABEL_SIDELOAD_CORE_LIST: + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_file_browser_select_sideload_core); + break; default: return -1; } diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 99e3ad9462..0a95e1dc34 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -104,7 +104,6 @@ enum ACTION_OK_SUBSYSTEM_ADD, ACTION_OK_LOAD_CONFIG_FILE, ACTION_OK_LOAD_CORE, - ACTION_OK_SIDELOAD_CORE, ACTION_OK_LOAD_WALLPAPER, ACTION_OK_SET_PATH, ACTION_OK_SET_PATH_AUDIO_FILTER, @@ -817,7 +816,7 @@ int generic_action_ok_displaylist_push(const char *path, info.directory_ptr = idx; info_path = settings->paths.directory_core_assets; info_label = label; - dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_SIDELOAD_CORE; + dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE; break; case ACTION_OK_DL_CONTENT_COLLECTION_LIST: info.type = type; @@ -1513,9 +1512,28 @@ int generic_action_ok_command(enum event_command cmd) /* TO-DO: Localization for errors */ static bool file_copy(const char *src_path, const char *dst_path, char *msg, size_t size) { + RFILE *src = NULL; RFILE *dst = NULL; bool ret = true; - RFILE *src = filestream_open(src_path, + + /* Sanity check */ + if (string_is_empty(src_path) || string_is_empty(dst_path)) + { + strlcpy(msg, "invalid arguments", size); + ret = false; + goto end; + } + + if (!path_is_valid(src_path)) + { + strlcpy(msg, "source file does not exist", size); + ret = false; + goto end; + } + + /* Open source file */ + src = filestream_open( + src_path, RETRO_VFS_FILE_ACCESS_READ, RETRO_VFS_FILE_ACCESS_HINT_NONE); @@ -1523,9 +1541,12 @@ static bool file_copy(const char *src_path, const char *dst_path, char *msg, siz { strlcpy(msg, "unable to open source file", size); ret = false; + goto end; } - dst = filestream_open(dst_path, + /* Open destination file */ + dst = filestream_open( + dst_path, RETRO_VFS_FILE_ACCESS_WRITE, RETRO_VFS_FILE_ACCESS_HINT_NONE); @@ -1533,8 +1554,10 @@ static bool file_copy(const char *src_path, const char *dst_path, char *msg, siz { strlcpy(msg, "unable to open destination file", size); ret = false; + goto end; } + /* Copy file contents */ while (!filestream_eof(src)) { int64_t numw; @@ -1543,23 +1566,27 @@ static bool file_copy(const char *src_path, const char *dst_path, char *msg, siz if (filestream_error(dst) != 0) { - strlcpy(msg, "error reading file\n", size); + strlcpy(msg, "error reading source file", size); ret = false; - break; + goto end; } numw = filestream_write(dst, buffer, numr); if (numw != numr) { - strlcpy(msg, "error writing to file\n", size); + strlcpy(msg, "error writing to destination file", size); ret = false; - break; + goto end; } } - filestream_close(src); - filestream_close(dst); +end: + if (src) + filestream_close(src); + + if (dst) + filestream_close(dst); return ret; } @@ -1636,31 +1663,6 @@ static int generic_action_ok(const char *path, } } break; - case ACTION_OK_SIDELOAD_CORE: - { - settings_t *settings = config_get_ptr(); - char destination_path[PATH_MAX_LENGTH]; - char message[PATH_MAX_LENGTH]; - - fill_pathname_join(destination_path, settings->paths.directory_libretro, path_basename(action_path), sizeof(destination_path)); - - if (!file_copy( - action_path, destination_path, message, sizeof(message))) - { - runloop_msg_queue_push(msg_hash_to_str( - MENU_ENUM_LABEL_VALUE_SIDELOAD_CORE_ERROR), 1, 100, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - RARCH_LOG("[sideload] %s: %s\n", msg_hash_to_str( - MENU_ENUM_LABEL_VALUE_SIDELOAD_CORE_ERROR), message); - RARCH_LOG(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SIDELOAD_CORE_ERROR)); - } - else - { - runloop_msg_queue_push(msg_hash_to_str( - MENU_ENUM_LABEL_VALUE_SIDELOAD_CORE_SUCCESS), 1, 100, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - RARCH_LOG("[sideload] %s\n", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SIDELOAD_CORE_SUCCESS)); - } - } - break; case ACTION_OK_LOAD_CONFIG_FILE: { settings_t *settings = config_get_ptr(); @@ -1866,7 +1868,6 @@ default_action_ok_set(action_ok_set_path_video_layout,ACTION_OK_SET_PATH_VIDEO_L #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) default_action_ok_set(action_ok_config_load, ACTION_OK_LOAD_CONFIG_FILE, MSG_UNKNOWN) default_action_ok_set(action_ok_disk_image_append, ACTION_OK_APPEND_DISK_IMAGE, MSG_UNKNOWN) default_action_ok_set(action_ok_subsystem_add, ACTION_OK_SUBSYSTEM_ADD, MSG_UNKNOWN) @@ -4337,6 +4338,94 @@ static int action_ok_update_installed_cores(const char *path, return 0; } +static int action_ok_sideload_core(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + settings_t *settings = config_get_ptr(); + menu_handle_t *menu = menu_driver_get_ptr(); + const char *menu_path = NULL; + const char *core_file = path; + int ret = -1; + char src_path[PATH_MAX_LENGTH]; + char dst_path[PATH_MAX_LENGTH]; + char msg[PATH_MAX_LENGTH]; + + src_path[0] = '\0'; + dst_path[0] = '\0'; + msg[0] = '\0'; + + /* Sanity check */ + if (!menu) + return menu_cbs_exit(); + + if (!settings || string_is_empty(core_file)) + goto end; + + if (string_is_empty(settings->paths.directory_libretro)) + goto end; + + /* Get source core path */ + menu_entries_get_last_stack( + &menu_path, NULL, NULL, NULL, NULL); + + if (!string_is_empty(menu_path)) + fill_pathname_join( + src_path, menu_path, core_file, sizeof(src_path)); + else + strlcpy(src_path, core_file, sizeof(src_path)); + + /* Get destination core path */ + fill_pathname_join( + dst_path, settings->paths.directory_libretro, + core_file, sizeof(dst_path)); + + /* Copy core file from source to destination */ + if (file_copy(src_path, dst_path, msg, sizeof(msg))) + { + /* Success */ + + /* Reload core info files */ + command_event(CMD_EVENT_CORE_INFO_INIT, NULL); + + /* Log result */ + runloop_msg_queue_push( + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SIDELOAD_CORE_SUCCESS), + 1, 100, true, + NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + + RARCH_LOG( + "[sideload] %s\n", + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SIDELOAD_CORE_SUCCESS)); + } + else + { + /* Failure - just log result */ + runloop_msg_queue_push( + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SIDELOAD_CORE_ERROR), + 1, 100, true, + NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + + RARCH_LOG( + "[sideload] %s: %s\n", + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SIDELOAD_CORE_ERROR), msg); + } + + /* Regardless of file copy success/failure, function + * should return zero if we get this far (since a + * failure would correspond to a filesystem error, + * not a menu error...) */ + ret = 0; + +end: + /* Flush stack + * > Since the 'sideload core' option is present + * in several locations, can't flush to a predefined + * level - just go to the top */ + menu_entries_flush_stack(NULL, 0); + + return ret; +} + #define default_action_ok_download(funcname, _id) \ static int (funcname)(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) \ { \ @@ -6359,9 +6448,6 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_FILE_BROWSER_CORE: BIND_ACTION_OK(cbs, action_ok_load_core); break; - case MENU_ENUM_LABEL_FILE_BROWSER_SIDELOAD_CORE: - BIND_ACTION_OK(cbs, action_ok_sideload_core); - break; case MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION: case MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION_CURRENT_CORE: BIND_ACTION_OK(cbs, action_ok_core_deferred_set); @@ -7025,6 +7111,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_LABEL_LOAD_ARCHIVE: BIND_ACTION_OK(cbs, action_ok_load_archive); break; + case MENU_LABEL_SIDELOAD_CORE_LIST: + BIND_ACTION_OK(cbs, action_ok_sideload_core_list); + break; case MENU_LABEL_VIDEO_SHADER_PASS: #if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_SLANG) || defined(HAVE_HLSL) BIND_ACTION_OK(cbs, action_ok_shader_pass); @@ -7437,9 +7526,6 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, case MENU_LABEL_CORE_LIST: BIND_ACTION_OK(cbs, action_ok_load_core); break; - case MENU_LABEL_SIDELOAD_CORE_LIST: - BIND_ACTION_OK(cbs, action_ok_sideload_core); - break; } } break; @@ -7455,6 +7541,9 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, case FILE_TYPE_DOWNLOAD_CORE: BIND_ACTION_OK(cbs, action_ok_core_updater_download); break; + case FILE_TYPE_SIDELOAD_CORE: + BIND_ACTION_OK(cbs, action_ok_sideload_core); + break; case FILE_TYPE_DOWNLOAD_URL: BIND_ACTION_OK(cbs, action_ok_download_url); break; diff --git a/menu/cbs/menu_cbs_title.c b/menu/cbs/menu_cbs_title.c index 8de989abcf..348dd634a4 100644 --- a/menu/cbs/menu_cbs_title.c +++ b/menu/cbs/menu_cbs_title.c @@ -317,7 +317,6 @@ default_title_macro(action_get_download_core_content_list, MENU_ENUM_LABEL_ default_title_macro(action_get_user_accounts_list, MENU_ENUM_LABEL_VALUE_ACCOUNTS_LIST) default_title_macro(action_get_core_information_list, MENU_ENUM_LABEL_VALUE_CORE_INFORMATION) default_title_macro(action_get_core_list, MENU_ENUM_LABEL_VALUE_CORE_LIST) -default_title_macro(action_get_sideload_core_list, MENU_ENUM_LABEL_VALUE_SIDELOAD_CORE_LIST) default_title_macro(action_get_online_updater_list, MENU_ENUM_LABEL_VALUE_ONLINE_UPDATER) default_title_macro(action_get_netplay_list, MENU_ENUM_LABEL_VALUE_NETPLAY) default_title_macro(action_get_online_thumbnails_updater_list, MENU_ENUM_LABEL_VALUE_THUMBNAILS_UPDATER_LIST) @@ -894,9 +893,6 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_CORE_LIST: BIND_ACTION_GET_TITLE(cbs, action_get_core_list); break; - case MENU_ENUM_LABEL_SIDELOAD_CORE_LIST: - BIND_ACTION_GET_TITLE(cbs, action_get_sideload_core_list); - break; case MENU_ENUM_LABEL_LOAD_CONTENT_SPECIAL: BIND_ACTION_GET_TITLE(cbs, action_get_load_content_special); break; @@ -1257,9 +1253,6 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs, case MENU_LABEL_CORE_LIST: BIND_ACTION_GET_TITLE(cbs, action_get_core_list); break; - case MENU_LABEL_SIDELOAD_CORE_LIST: - BIND_ACTION_GET_TITLE(cbs, action_get_core_list); - break; case MENU_ENUM_LABEL_LOAD_CONTENT_SPECIAL: BIND_ACTION_GET_TITLE(cbs, action_get_load_content_special); break; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 5ac74f5745..466582de6a 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2673,10 +2673,7 @@ static unsigned menu_displaylist_parse_cores( else { file_type = FILE_TYPE_CORE; - if (string_is_equal(info->label, msg_hash_to_str(MENU_ENUM_LABEL_SIDELOAD_CORE_LIST))) - enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_SIDELOAD_CORE; - else - enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_CORE; + enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_CORE; } items_found++; @@ -9676,7 +9673,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, case DISPLAYLIST_FILE_BROWSER_SELECT_DIR: case DISPLAYLIST_FILE_BROWSER_SELECT_FILE: case DISPLAYLIST_FILE_BROWSER_SELECT_CORE: - case DISPLAYLIST_FILE_BROWSER_SELECT_SIDELOAD_CORE: case DISPLAYLIST_FILE_BROWSER_SELECT_COLLECTION: case DISPLAYLIST_GENERIC: info->need_navigation_clear = true; @@ -9906,6 +9902,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, case DISPLAYLIST_AUDIO_FILTERS: case DISPLAYLIST_CHEAT_FILES: case DISPLAYLIST_MANUAL_CONTENT_SCAN_DAT_FILES: + case DISPLAYLIST_FILE_BROWSER_SELECT_SIDELOAD_CORE: menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); filebrowser_clear_type(); if (!string_is_empty(info->exts)) @@ -9956,6 +9953,18 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, info->type_default = FILE_TYPE_MANUAL_SCAN_DAT; info->exts = strdup("dat|xml"); break; + case DISPLAYLIST_FILE_BROWSER_SELECT_SIDELOAD_CORE: + { + char ext_name[PATH_MAX_LENGTH]; + ext_name[0] = '\0'; + + info->type_default = FILE_TYPE_SIDELOAD_CORE; + + if (frontend_driver_get_core_extension( + ext_name, sizeof(ext_name))) + info->exts = strdup(ext_name); + } + break; default: break; } diff --git a/menu/widgets/menu_filebrowser.c b/menu/widgets/menu_filebrowser.c index ce662144d1..6b56db1e2e 100644 --- a/menu/widgets/menu_filebrowser.c +++ b/menu/widgets/menu_filebrowser.c @@ -109,7 +109,7 @@ void filebrowser_parse(menu_displaylist_info_t *info, unsigned type_data) (filter_ext && info) ? subsystem->roms[content_get_subsystem_rom_id()].valid_extensions : NULL, true, settings->bools.show_hidden_files, true, false); } - else if (info && (info->type_default == FILE_TYPE_MANUAL_SCAN_DAT)) + else if (info && ((info->type_default == FILE_TYPE_MANUAL_SCAN_DAT) || (info->type_default == FILE_TYPE_SIDELOAD_CORE))) str_list = dir_list_new(path, info->exts, true, settings->bools.show_hidden_files, false, false); else diff --git a/msg_hash.h b/msg_hash.h index 8bc7acd822..d0166bb93f 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -154,6 +154,8 @@ enum msg_file_type FILE_TYPE_MANUAL_SCAN_DIRECTORY, FILE_TYPE_MANUAL_SCAN_DAT, + FILE_TYPE_SIDELOAD_CORE, + FILE_TYPE_LAST }; @@ -1109,7 +1111,6 @@ enum msg_hash_enums MENU_ENUM_LABEL_FILE_BROWSER_SHADER, MENU_ENUM_LABEL_FILE_BROWSER_REMAP, MENU_ENUM_LABEL_FILE_BROWSER_CORE, - MENU_ENUM_LABEL_FILE_BROWSER_SIDELOAD_CORE, MENU_ENUM_LABEL_FILE_BROWSER_OVERLAY, #ifdef HAVE_VIDEO_LAYOUT MENU_ENUM_LABEL_FILE_BROWSER_VIDEO_LAYOUT, From df8f93e9d572cbf22a6071ec3cd8f9030c0bf2ad Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 9 Jan 2020 15:44:48 +0100 Subject: [PATCH 005/148] Split up VFS file_path code into separate file --- Makefile.common | 1 + Makefile.ps3.salamander | 1 + Makefile.psp1.salamander | 1 + Makefile.vita.salamander | 1 + Makefile.wii.salamander | 1 + cores/libretro-imageviewer/Makefile | 1 + griffin/griffin.c | 1 + libretro-common/file/file_path.c | 129 ---------- libretro-common/file/file_path_io.c | 242 ++++++++++++++++++ libretro-db/Makefile | 1 + .../RetroArch-Salamander.vcxproj | 8 + .../RetroArch-Salamander.vcproj | 3 + samples/tasks/database/Makefile | 1 + 13 files changed, 262 insertions(+), 129 deletions(-) create mode 100644 libretro-common/file/file_path_io.c diff --git a/Makefile.common b/Makefile.common index 9d06030b4d..90edc8a84d 100644 --- a/Makefile.common +++ b/Makefile.common @@ -201,6 +201,7 @@ endif OBJ += \ $(LIBRETRO_COMM_DIR)/file/nbio/nbio_intf.o \ $(LIBRETRO_COMM_DIR)/file/file_path.o \ + $(LIBRETRO_COMM_DIR)/file/file_path_io.o \ file_path_special.o \ file_path_str.o \ $(LIBRETRO_COMM_DIR)/hash/rhash.o \ diff --git a/Makefile.ps3.salamander b/Makefile.ps3.salamander index 419fcffbe7..5ef63d2372 100644 --- a/Makefile.ps3.salamander +++ b/Makefile.ps3.salamander @@ -46,6 +46,7 @@ PPU_SRCS = frontend/frontend_salamander.c \ frontend/frontend_driver.c \ frontend/drivers/platform_ps3.c \ libretro-common/file/file_path.c \ + libretro-common/file/file_path_io.c \ libretro-common/lists/dir_list.c \ libretro-common/lists/string_list.c \ libretro-common/file/retro_dirent.c \ diff --git a/Makefile.psp1.salamander b/Makefile.psp1.salamander index 98ae539786..ce72543fae 100644 --- a/Makefile.psp1.salamander +++ b/Makefile.psp1.salamander @@ -36,6 +36,7 @@ OBJS = frontend/frontend_salamander.o \ frontend/frontend_driver.o \ frontend/drivers/platform_psp.o \ libretro-common/file/file_path.o \ + libretro-common/file/file_path_io.o \ libretro-common/string/stdstring.o \ libretro-common/lists/string_list.o \ libretro-common/lists/dir_list.o \ diff --git a/Makefile.vita.salamander b/Makefile.vita.salamander index 8898d5bab9..7081793bf8 100644 --- a/Makefile.vita.salamander +++ b/Makefile.vita.salamander @@ -36,6 +36,7 @@ OBJS = frontend/frontend_salamander.o \ frontend/frontend_driver.o \ frontend/drivers/platform_psp.o \ libretro-common/file/file_path.o \ + libretro-common/file/file_path_io.o \ libretro-common/string/stdstring.o \ libretro-common/lists/string_list.o \ libretro-common/lists/dir_list.o \ diff --git a/Makefile.wii.salamander b/Makefile.wii.salamander index 0fe78655da..81117e7151 100644 --- a/Makefile.wii.salamander +++ b/Makefile.wii.salamander @@ -56,6 +56,7 @@ OBJ = frontend/frontend_salamander.o \ frontend/drivers/platform_gx.o \ frontend/drivers/platform_wii.o \ libretro-common/file/file_path.o \ + libretro-common/file/file_path_io.o \ libretro-common/hash/rhash.o \ libretro-common/string/stdstring.o \ libretro-common/lists/string_list.o \ diff --git a/cores/libretro-imageviewer/Makefile b/cores/libretro-imageviewer/Makefile index 9916b3eeee..e3f4554a75 100644 --- a/cores/libretro-imageviewer/Makefile +++ b/cores/libretro-imageviewer/Makefile @@ -8,6 +8,7 @@ image_core.so: image_core.c ../../libretro-common/compat/compat_strcasestr.c \ ../../libretro-common/compat/compat_strl.c \ ../../libretro-common/file/file_path.c \ + ../../libretro-common/file/file_path_io.c \ ../../libretro-common/file/retro_dirent.c \ ../../libretro-common/lists/dir_list.c \ ../../libretro-common/lists/string_list.c \ diff --git a/griffin/griffin.c b/griffin/griffin.c index 715ba35faf..30c958d36f 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -967,6 +967,7 @@ CORES FILE ============================================================ */ #include "../libretro-common/file/file_path.c" +#include "../libretro-common/file/file_path_io.c" #include "../file_path_special.c" #include "../file_path_str.c" #include "../libretro-common/lists/dir_list.c" diff --git a/libretro-common/file/file_path.c b/libretro-common/file/file_path.c index 65b8f5b944..0b637554f3 100644 --- a/libretro-common/file/file_path.c +++ b/libretro-common/file/file_path.c @@ -32,8 +32,6 @@ #include #include #include -#define VFS_FRONTEND -#include /* TODO: There are probably some unnecessary things on this huge include list now but I'm too afraid to touch it */ #ifdef __APPLE__ @@ -114,133 +112,6 @@ #endif -static retro_vfs_stat_t path_stat_cb = retro_vfs_stat_impl; -static retro_vfs_mkdir_t path_mkdir_cb = retro_vfs_mkdir_impl; - -void path_vfs_init(const struct retro_vfs_interface_info* vfs_info) -{ - const struct retro_vfs_interface* - vfs_iface = vfs_info->iface; - - path_stat_cb = retro_vfs_stat_impl; - path_mkdir_cb = retro_vfs_mkdir_impl; - - if (vfs_info->required_interface_version < PATH_REQUIRED_VFS_VERSION || !vfs_iface) - return; - - path_stat_cb = vfs_iface->stat; - path_mkdir_cb = vfs_iface->mkdir; -} - -int path_stat(const char *path) -{ - return path_stat_cb(path, NULL); -} - -/** - * path_is_directory: - * @path : path - * - * Checks if path is a directory. - * - * Returns: true (1) if path is a directory, otherwise false (0). - */ -bool path_is_directory(const char *path) -{ - return (path_stat_cb(path, NULL) & RETRO_VFS_STAT_IS_DIRECTORY) != 0; -} - -bool path_is_character_special(const char *path) -{ - return (path_stat_cb(path, NULL) & RETRO_VFS_STAT_IS_CHARACTER_SPECIAL) != 0; -} - -bool path_is_valid(const char *path) -{ - return (path_stat_cb(path, NULL) & RETRO_VFS_STAT_IS_VALID) != 0; -} - -int32_t path_get_size(const char *path) -{ - int32_t filesize = 0; - if (path_stat_cb(path, &filesize) != 0) - return filesize; - - return -1; -} - -/** - * path_mkdir: - * @dir : directory - * - * Create directory on filesystem. - * - * Returns: true (1) if directory could be created, otherwise false (0). - **/ -bool path_mkdir(const char *dir) -{ - bool sret = false; - bool norecurse = false; - char *basedir = NULL; - - if (!(dir && *dir)) - return false; - - /* Use heap. Real chance of stack - * overflow if we recurse too hard. */ - basedir = strdup(dir); - - if (!basedir) - return false; - - path_parent_dir(basedir); - - if (!*basedir || !strcmp(basedir, dir)) - { - free(basedir); - return false; - } - -#if defined(GEKKO) - { - size_t len = strlen(basedir); - - /* path_parent_dir() keeps the trailing slash. - * On Wii, mkdir() fails if the path has a - * trailing slash... - * We must therefore remove it. */ - if (len > 0) - if (basedir[len - 1] == '/') - basedir[len - 1] = '\0'; - } -#endif - - if (path_is_directory(basedir)) - norecurse = true; - else - { - sret = path_mkdir(basedir); - - if (sret) - norecurse = true; - } - - free(basedir); - - if (norecurse) - { - int ret = path_mkdir_cb(dir); - - /* Don't treat this as an error. */ - if (ret == -2 && path_is_directory(dir)) - return true; - - return (ret == 0); - } - - return sret; -} - /** * path_get_archive_delim: * @path : path diff --git a/libretro-common/file/file_path_io.c b/libretro-common/file/file_path_io.c new file mode 100644 index 0000000000..c44afc5119 --- /dev/null +++ b/libretro-common/file/file_path_io.c @@ -0,0 +1,242 @@ +/* Copyright (C) 2010-2019 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (file_path_io.c). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#define VFS_FRONTEND +#include + +/* TODO: There are probably some unnecessary things on this huge include list now but I'm too afraid to touch it */ +#ifdef __APPLE__ +#include +#endif +#ifdef __HAIKU__ +#include +#endif +#ifndef __MACH__ +#include +#include +#endif +#include +#include +#include + +#if defined(_WIN32) +#ifdef _MSC_VER +#define setmode _setmode +#endif +#include +#ifdef _XBOX +#include +#define INVALID_FILE_ATTRIBUTES -1 +#else +#include +#include +#include +#include +#if defined(_MSC_VER) && _MSC_VER <= 1200 +#define INVALID_FILE_ATTRIBUTES ((DWORD)-1) +#endif +#endif +#elif defined(VITA) +#define SCE_ERROR_ERRNO_EEXIST 0x80010011 +#include +#include +#include +#else +#include +#include +#include +#endif + +#if defined(PSP) +#include +#endif + +#if defined(PS2) +#include +#include +#endif + +#if defined(__CELLOS_LV2__) +#include +#endif + +#if defined(VITA) +#define FIO_S_ISDIR SCE_S_ISDIR +#endif + +#if (defined(__CELLOS_LV2__) && !defined(__PSL1GHT__)) || defined(__QNX__) || defined(PSP) || defined(PS2) +#include /* stat() is defined here */ +#endif + +#if !defined(RARCH_CONSOLE) && defined(RARCH_INTERNAL) +#ifdef __WINRT__ +#include +#endif +#endif + +/* Assume W-functions do not work below Win2K and Xbox platforms */ +#if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0500 || defined(_XBOX) + +#ifndef LEGACY_WIN32 +#define LEGACY_WIN32 +#endif + +#endif + +static retro_vfs_stat_t path_stat_cb = retro_vfs_stat_impl; +static retro_vfs_mkdir_t path_mkdir_cb = retro_vfs_mkdir_impl; + +void path_vfs_init(const struct retro_vfs_interface_info* vfs_info) +{ + const struct retro_vfs_interface* + vfs_iface = vfs_info->iface; + + path_stat_cb = retro_vfs_stat_impl; + path_mkdir_cb = retro_vfs_mkdir_impl; + + if (vfs_info->required_interface_version < PATH_REQUIRED_VFS_VERSION || !vfs_iface) + return; + + path_stat_cb = vfs_iface->stat; + path_mkdir_cb = vfs_iface->mkdir; +} + +int path_stat(const char *path) +{ + return path_stat_cb(path, NULL); +} + +/** + * path_is_directory: + * @path : path + * + * Checks if path is a directory. + * + * Returns: true (1) if path is a directory, otherwise false (0). + */ +bool path_is_directory(const char *path) +{ + return (path_stat_cb(path, NULL) & RETRO_VFS_STAT_IS_DIRECTORY) != 0; +} + +bool path_is_character_special(const char *path) +{ + return (path_stat_cb(path, NULL) & RETRO_VFS_STAT_IS_CHARACTER_SPECIAL) != 0; +} + +bool path_is_valid(const char *path) +{ + return (path_stat_cb(path, NULL) & RETRO_VFS_STAT_IS_VALID) != 0; +} + +int32_t path_get_size(const char *path) +{ + int32_t filesize = 0; + if (path_stat_cb(path, &filesize) != 0) + return filesize; + + return -1; +} + +/** + * path_mkdir: + * @dir : directory + * + * Create directory on filesystem. + * + * Returns: true (1) if directory could be created, otherwise false (0). + **/ +bool path_mkdir(const char *dir) +{ + bool sret = false; + bool norecurse = false; + char *basedir = NULL; + + if (!(dir && *dir)) + return false; + + /* Use heap. Real chance of stack + * overflow if we recurse too hard. */ + basedir = strdup(dir); + + if (!basedir) + return false; + + path_parent_dir(basedir); + + if (!*basedir || !strcmp(basedir, dir)) + { + free(basedir); + return false; + } + +#if defined(GEKKO) + { + size_t len = strlen(basedir); + + /* path_parent_dir() keeps the trailing slash. + * On Wii, mkdir() fails if the path has a + * trailing slash... + * We must therefore remove it. */ + if (len > 0) + if (basedir[len - 1] == '/') + basedir[len - 1] = '\0'; + } +#endif + + if (path_is_directory(basedir)) + norecurse = true; + else + { + sret = path_mkdir(basedir); + + if (sret) + norecurse = true; + } + + free(basedir); + + if (norecurse) + { + int ret = path_mkdir_cb(dir); + + /* Don't treat this as an error. */ + if (ret == -2 && path_is_directory(dir)) + return true; + + return (ret == 0); + } + + return sret; +} diff --git a/libretro-db/Makefile b/libretro-db/Makefile index ec3c055a8b..bd717bb0a3 100644 --- a/libretro-db/Makefile +++ b/libretro-db/Makefile @@ -15,6 +15,7 @@ LIBRETRO_COMMON_C = \ $(LIBRETRO_COMM_DIR)/streams/file_stream.c \ $(LIBRETRO_COMM_DIR)/compat/compat_strcasestr.c \ $(LIBRETRO_COMM_DIR)/file/file_path.c \ + $(LIBRETRO_COMM_DIR)/file/file_path_io.c \ $(LIBRETRO_COMM_DIR)/vfs/vfs_implementation.c \ $(LIBRETRO_COMM_DIR)/encodings/encoding_utf.c \ $(LIBRETRO_COMM_DIR)/compat/compat_strl.c \ diff --git a/pkg/msvc/RetroArch-360-Salamander/RetroArch-Salamander.vcxproj b/pkg/msvc/RetroArch-360-Salamander/RetroArch-Salamander.vcxproj index 3503eea80d..8430cd3d0e 100644 --- a/pkg/msvc/RetroArch-360-Salamander/RetroArch-Salamander.vcxproj +++ b/pkg/msvc/RetroArch-360-Salamander/RetroArch-Salamander.vcxproj @@ -350,6 +350,14 @@ CompileAsC CompileAsC + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + CompileAsC + CompileAsC + CompileAsC CompileAsC diff --git a/pkg/msvc/RetroArch-Xbox1-Salamander/RetroArch-Salamander.vcproj b/pkg/msvc/RetroArch-Xbox1-Salamander/RetroArch-Salamander.vcproj index fddffc630b..1e4a3e11ff 100644 --- a/pkg/msvc/RetroArch-Xbox1-Salamander/RetroArch-Salamander.vcproj +++ b/pkg/msvc/RetroArch-Xbox1-Salamander/RetroArch-Salamander.vcproj @@ -334,6 +334,9 @@ + + diff --git a/samples/tasks/database/Makefile b/samples/tasks/database/Makefile index 4421a9efdc..4fb16b2f8f 100644 --- a/samples/tasks/database/Makefile +++ b/samples/tasks/database/Makefile @@ -107,6 +107,7 @@ SOURCES_C := \ $(LIBRETRO_COMM_DIR)/file/archive_file.c \ $(LIBRETRO_COMM_DIR)/file/config_file.c \ $(LIBRETRO_COMM_DIR)/file/file_path.c \ + $(LIBRETRO_COMM_DIR)/file/file_path_io.c \ $(LIBRETRO_COMM_DIR)/file/retro_dirent.c \ $(LIBRETRO_COMM_DIR)/hash/rhash.c \ $(LIBRETRO_COMM_DIR)/compat/compat_fnmatch.c \ From 61c4e3a5e49d8ec7136d3359ef6898ba40522cf2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 9 Jan 2020 15:49:24 +0100 Subject: [PATCH 006/148] Update Makefile.ctr.salamander --- Makefile.ctr.salamander | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.ctr.salamander b/Makefile.ctr.salamander index 14fb2f276f..9c05fd6b54 100644 --- a/Makefile.ctr.salamander +++ b/Makefile.ctr.salamander @@ -28,6 +28,7 @@ OBJ := ctr/ctr_system.o \ libretro-common/compat/compat_strcasestr.o \ libretro-common/compat/fopen_utf8.o \ libretro-common/file/file_path.o \ + libretro-common/file/file_path_io.o \ libretro-common/string/stdstring.o \ libretro-common/lists/string_list.o \ libretro-common/lists/dir_list.o \ From a65396ba56b4e2dafad52014774d8a9b5ea4822e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 9 Jan 2020 16:44:04 +0100 Subject: [PATCH 007/148] Add title for sideload core setting --- menu/cbs/menu_cbs_title.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/menu/cbs/menu_cbs_title.c b/menu/cbs/menu_cbs_title.c index 348dd634a4..3ee9693dfb 100644 --- a/menu/cbs/menu_cbs_title.c +++ b/menu/cbs/menu_cbs_title.c @@ -541,6 +541,16 @@ default_title_generic_macro(action_get_title_list_rdb_entry_bbfc_rating,MENU_ENU default_title_generic_macro(action_get_title_list_rdb_entry_max_users,MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_MAX_USERS) default_title_generic_macro(action_get_title_list_rdb_entry_database_info,MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_DATABASE_INFO) +static int action_get_sideload_core_list(const char *path, const char *label, + unsigned menu_type, char *s, size_t len) +{ + strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SIDELOAD_CORE_LIST), len); + strlcat(s, " ", len); + if (!string_is_empty(path)) + strlcat(s, path, len); + return 0; +} + static int action_get_title_default(const char *path, const char *label, unsigned menu_type, char *s, size_t len) { @@ -707,6 +717,7 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs, {MENU_ENUM_LABEL_DEFERRED_INPUT_HAPTIC_FEEDBACK_SETTINGS_LIST, action_get_input_haptic_feedback_settings_list}, {MENU_ENUM_LABEL_DEFERRED_VIDEO_WINDOWED_MODE_SETTINGS_LIST, action_get_video_windowed_mode_settings_list}, {MENU_ENUM_LABEL_DEFERRED_VIDEO_FULLSCREEN_MODE_SETTINGS_LIST, action_get_video_fullscreen_mode_settings_list}, + {MENU_ENUM_LABEL_SIDELOAD_CORE_LIST, action_get_sideload_core_list}, }; if (cbs->setting) From a96ae6e987671da71be4aa840e80eb341d4d62f3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 9 Jan 2020 16:49:52 +0100 Subject: [PATCH 008/148] (Playlists) Make sure history list can be set to 1 as a bare minimum - bump up default to 200 for history and favorites lists --- config.def.h | 4 ++-- menu/menu_setting.c | 2 +- retroarch.cfg | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config.def.h b/config.def.h index 366bcd0b18..0dac001668 100644 --- a/config.def.h +++ b/config.def.h @@ -915,11 +915,11 @@ static const bool network_on_demand_thumbnails = false; #endif /* Number of entries that will be kept in content history playlist file. */ -static const unsigned default_content_history_size = 100; +static const unsigned default_content_history_size = 200; /* Number of entries that will be kept in content favorites playlist file. * -1 == 'unlimited' (99999) */ -static const int default_content_favorites_size = 100; +static const int default_content_favorites_size = 200; /* Sort all playlists (apart from histories) alphabetically */ static const bool playlist_sort_alphabetical = true; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 1e2f8989be..867b2565e6 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -15126,7 +15126,7 @@ static bool setting_append_list( 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.0f, (float)COLLECTION_SIZE, 1.0f, true, false); + menu_settings_list_current_add_range(list, list_info, 1.0f, (float)COLLECTION_SIZE, 1.0f, true, false); END_SUB_GROUP(list, list_info, parent_group); diff --git a/retroarch.cfg b/retroarch.cfg index 9d7c109bfe..2454b1bd62 100644 --- a/retroarch.cfg +++ b/retroarch.cfg @@ -59,7 +59,7 @@ # content_video_history_path = # Number of entries that will be kept in content history file. -# content_history_size = 100 +# content_history_size = 200 # Content directory. Interacts with RETRO_ENVIRONMENT_GET_CONTENT_DIRECTORY. # Usually set by developers who bundle libretro/RetroArch apps to point to assets. From 617940fb8da48ded4b80555cf7ccb5fae1ade7ba Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 9 Jan 2020 17:00:46 +0100 Subject: [PATCH 009/148] Move midi_null driver to retroarch.c --- Makefile.common | 1 - griffin/griffin.c | 2 - midi/drivers/null_midi.c | 99 ---------------------------------------- retroarch.c | 24 +++++++++- 4 files changed, 23 insertions(+), 103 deletions(-) delete mode 100644 midi/drivers/null_midi.c diff --git a/Makefile.common b/Makefile.common index 90edc8a84d..ba02e642bf 100644 --- a/Makefile.common +++ b/Makefile.common @@ -246,7 +246,6 @@ OBJ += \ $(LIBRETRO_COMM_DIR)/features/features_cpu.o \ performance_counters.o \ verbosity.o \ - midi/drivers/null_midi.o \ $(LIBRETRO_COMM_DIR)/playlists/label_sanitization.o \ manual_content_scan.o diff --git a/griffin/griffin.c b/griffin/griffin.c index 30c958d36f..5f8bd10d51 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -889,8 +889,6 @@ AUDIO /*============================================================ MIDI ============================================================ */ -#include "../midi/drivers/null_midi.c" - #ifdef HAVE_WINMM #include "../midi/drivers/winmm_midi.c" #endif diff --git a/midi/drivers/null_midi.c b/midi/drivers/null_midi.c deleted file mode 100644 index ca1dc3b129..0000000000 --- a/midi/drivers/null_midi.c +++ /dev/null @@ -1,99 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2018 The RetroArch team - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#include - -#include -#include -#include - -#include "../midi_driver.h" - -static bool null_midi_get_avail_inputs(struct string_list *inputs) -{ - union string_list_elem_attr attr = {0}; - - return string_list_append(inputs, "Null", attr); -} - -static bool null_midi_get_avail_outputs(struct string_list *outputs) -{ - union string_list_elem_attr attr = {0}; - - return string_list_append(outputs, "Null", attr); -} - -static void *null_midi_init(const char *input, const char *output) -{ - (void)input; - (void)output; - - return (void*)-1; -} - -static void null_midi_free(void *p) -{ - (void)p; -} - -static bool null_midi_set_input(void *p, const char *input) -{ - (void)p; - - return input == NULL || string_is_equal(input, "Null"); -} - -static bool null_midi_set_output(void *p, const char *output) -{ - (void)p; - - return output == NULL || string_is_equal(output, "Null"); -} - -static bool null_midi_read(void *p, midi_event_t *event) -{ - (void)p; - (void)event; - - return false; -} - -static bool null_midi_write(void *p, const midi_event_t *event) -{ - (void)p; - (void)event; - - return true; -} - -static bool null_midi_flush(void *p) -{ - (void)p; - - return true; -} - -midi_driver_t midi_null = { - "null", - null_midi_get_avail_inputs, - null_midi_get_avail_outputs, - null_midi_init, - null_midi_free, - null_midi_set_input, - null_midi_set_output, - null_midi_read, - null_midi_write, - null_midi_flush -}; diff --git a/retroarch.c b/retroarch.c index 95b76147be..2cf64b3549 100644 --- a/retroarch.c +++ b/retroarch.c @@ -881,7 +881,29 @@ static const record_driver_t *record_drivers[] = { extern midi_driver_t midi_winmm; extern midi_driver_t midi_alsa; -extern midi_driver_t midi_null; + +static void null_midi_free(void *p) { } +static bool null_midi_get_avail_inputs(struct string_list *inputs) { union string_list_elem_attr attr = {0}; return string_list_append(inputs, "Null", attr); } +static bool null_midi_get_avail_outputs(struct string_list *outputs) { union string_list_elem_attr attr = {0}; return string_list_append(outputs, "Null", attr); } +static void *null_midi_init(const char *input, const char *output) { return (void*)-1; } +static bool null_midi_set_input(void *p, const char *input) { return input == NULL || string_is_equal(input, "Null"); } +static bool null_midi_set_output(void *p, const char *output) { return output == NULL || string_is_equal(output, "Null"); } +static bool null_midi_read(void *p, midi_event_t *event) { return false; } +static bool null_midi_write(void *p, const midi_event_t *event) { return true; } +static bool null_midi_flush(void *p) { return true; } + +static midi_driver_t midi_null = { + "null", + null_midi_get_avail_inputs, + null_midi_get_avail_outputs, + null_midi_init, + null_midi_free, + null_midi_set_input, + null_midi_set_output, + null_midi_read, + null_midi_write, + null_midi_flush +}; static midi_driver_t *midi_drivers[] = { #if defined(HAVE_ALSA) && !defined(HAVE_HAKCHI) && !defined(HAVE_SEGAM) From be3acb902bf991910aca15fc74429f3a0e6325c3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 9 Jan 2020 17:19:00 +0100 Subject: [PATCH 010/148] (Discord) use fill_pathname_application_path --- discord/discord.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/discord/discord.c b/discord/discord.c index 321a612edc..539575dca7 100644 --- a/discord/discord.c +++ b/discord/discord.c @@ -488,7 +488,7 @@ void discord_init(const char *discord_app_id) Discord_Initialize(discord_app_id, &handlers, 0, NULL); #ifdef _WIN32 - GetModuleFileNameA(NULL, full_path, sizeof(full_path)); + fill_pathname_application_path(full_path, sizeof(full_path)); if (strstr(get_retroarch_launch_arguments(), full_path)) strlcpy(command, get_retroarch_launch_arguments(), sizeof(command)); else From 38e3cc20870f41d97c30cbddf28bb1a01a12395d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 9 Jan 2020 18:11:00 +0100 Subject: [PATCH 011/148] Update CHANGES.md --- CHANGES.md | 6 ++++++ retroarch.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 302af6b523..e0cba6cf1d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,7 +1,9 @@ # Future # 1.8.3 +- ANDROID/BUGFIX: Fix 'Install or Restore Core' regression - BUGFIX: Ensure core info is always initialised when calling 'drivers_init()'. This bug could prevent cores from doing content runtime logging +- BUGFIX/MENU: History size can only be set to 1 at a minimum - BUGFIX/MENU: (XMB/OZONE) Fix 'quick menu' detection. XMB would not display savestate thumbnails in the quick menu if it was accessed via the main menu - BUGFIX/CRASH/CORE UPDATER: Fix potential double free error - BUGFIX/MENU/DESKTOP UI: Show desktop menu on startup does not launch Qt UI on Linux @@ -13,6 +15,8 @@ - D3D11: Block FL9_3 devices from D3D11 driver because they don't work anyway (current D3D11 driver uses SM4.0 which requires FL10_0 and up) - D3D11: Fallback to GL driver when D3D11 fails - EMSCRIPTEN: Fix assets +- HISTORY/FAVORITES: Bump up default to 200 entries from 100 +- FFMPEG CORE: Implement packet buffer, fixes MP4 video playback for many files - LOCALIZATION: Update Italian translation - LOCALIZATION: Update Polish translation - LOCALIZATION: Update Russian translation @@ -20,11 +24,13 @@ - MENU: Added 'Hosting' menu under Netplay menu - MENU: Added 'Subsystems' menu - MENU/FILEBROWSER: Fix file selection issues when starting from (or navigating to) the top level directory +- MENU/WIDGETS: Prevent looping of task title text - RASPBERRY PI: Fix BGRA8888 color inversion issues in the menu and elsewhere with VideoCore GL drivers - NETPLAY/RELAY: Add Sao Paulo (Brazil) relay server - NETPLAY/RELAY: Fix the “spectator” bug when using the relay server – When a player switches into the spectator mode (pressing “i”) while using the relay server, all players will disconnect. - NETPLAY/RELAY: Overall stability has improved. Fixed a memory leak that would cause the relay server to become unresponsive after some time. - NETPLAY/RELAY: Fixed critical bug that would cause all players to be disconnected from the relay server if one player was leaving the game. That bug had been open for one year and we were finally able to fix it. +- SWITCH/LIBNX/BUGFIX: Fix onscreen keyboard input regression - UWP: Add ANGLE support - UWP: Wire up get_metrics to the fake context of D3D9/10/11/12 driver, enabling proper scaling and mouse/touch gestures - VITA: Re-add Online Updater diff --git a/retroarch.c b/retroarch.c index 2cf64b3549..a6b28924d3 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2642,6 +2642,8 @@ bool menu_input_dialog_start(menu_input_ctx_line_t *line) bool menu_input_dialog_get_display_kb(void) { #ifdef HAVE_LIBNX + SwkbdConfig kbd; + Result rc; /* Indicates that we are "typing" from the swkbd * result to RetroArch with repeated calls to input_keyboard_event * This prevents input_keyboard_event from calling back @@ -2651,8 +2653,6 @@ bool menu_input_dialog_get_display_kb(void) if (typing) return false; - SwkbdConfig kbd; - Result rc; /* swkbd only works on "real" titles */ if ( __nx_applet_type != AppletType_Application From 2b1d1bc8cb564a39439fa01263e30c3252d80a9d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 9 Jan 2020 18:21:25 +0100 Subject: [PATCH 012/148] (MaterialUI) Add icons for rooms --- menu/drivers/materialui.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 5577605570..68f618a325 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -7393,6 +7393,12 @@ static void materialui_list_insert( node->icon_texture_index = MUI_TEXTURE_FOLDER; node->has_icon = true; break; + case MENU_ROOM_LAN: + case MENU_ROOM_RELAY: + case MENU_ROOM: + node->icon_texture_index = MUI_TEXTURE_SETTINGS; + node->has_icon = true; + break; default: if ( string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_INFORMATION_LIST)) || From 09239855160fc3ad2d2daf67db7ec2915afaf5cd Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 9 Jan 2020 19:26:53 +0100 Subject: [PATCH 013/148] (GL/WGL) This regression caused cores that required GL to fail because it would try to erroneously load GLESv2.dll instead of OpenGL32.dll --- gfx/drivers_context/wgl_ctx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gfx/drivers_context/wgl_ctx.c b/gfx/drivers_context/wgl_ctx.c index b8ae57e35e..e93dc784cb 100644 --- a/gfx/drivers_context/wgl_ctx.c +++ b/gfx/drivers_context/wgl_ctx.c @@ -652,9 +652,9 @@ static void *gfx_ctx_wgl_init(video_frame_info_t *video_info, void *video_driver #ifdef HAVE_DYNAMIC #ifdef HAVE_OPENGL - dll_handle = dylib_load("libGLESv2.dll"); -#else dll_handle = dylib_load("OpenGL32.dll"); +#else + dll_handle = dylib_load("libGLESv2.dll"); #endif #endif From 1fc1acd3d0dd7245db227f1492f31649cda4aff4 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Thu, 9 Jan 2020 19:54:04 +0100 Subject: [PATCH 014/148] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index e0cba6cf1d..55d64003a1 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,7 @@ - BUGFIX/MENU: History size can only be set to 1 at a minimum - BUGFIX/MENU: (XMB/OZONE) Fix 'quick menu' detection. XMB would not display savestate thumbnails in the quick menu if it was accessed via the main menu - BUGFIX/CRASH/CORE UPDATER: Fix potential double free error +- BUGFIX/CRASH/OPENGL/WINDOWS: Fix regression in 1.8.2 that would cause GL-based cores to fail because it would try to erroneously load libGLESv2.dll instead of OpenGL32.dll (cores affected: VitaQuake 2/3/Dhewm3, possibly more) - BUGFIX/MENU/DESKTOP UI: Show desktop menu on startup does not launch Qt UI on Linux - CHEEVOS: Don't disable achievement when AddAddress generates an out-of-range address - CHEEVOS: Don't reset triggers/leaderboards that failed to load From bbb09f75577e4e4535dbec60e5a671dac9069868 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Thu, 9 Jan 2020 21:36:14 +0100 Subject: [PATCH 015/148] Update AndroidManifest.xml --- pkg/android/phoenix-legacy/AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/android/phoenix-legacy/AndroidManifest.xml b/pkg/android/phoenix-legacy/AndroidManifest.xml index 251592464a..745dd451b6 100644 --- a/pkg/android/phoenix-legacy/AndroidManifest.xml +++ b/pkg/android/phoenix-legacy/AndroidManifest.xml @@ -1,8 +1,8 @@ From 8fea733a1fa03acbc70509babd3701ab02ab410e Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Thu, 9 Jan 2020 21:36:23 +0100 Subject: [PATCH 016/148] Update AndroidManifest.xml --- pkg/android/phoenix-legacy/AndroidManifest.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/android/phoenix-legacy/AndroidManifest.xml b/pkg/android/phoenix-legacy/AndroidManifest.xml index 745dd451b6..55bc95a7dc 100644 --- a/pkg/android/phoenix-legacy/AndroidManifest.xml +++ b/pkg/android/phoenix-legacy/AndroidManifest.xml @@ -15,7 +15,6 @@ - Date: Thu, 9 Jan 2020 21:36:38 +0100 Subject: [PATCH 017/148] Update AndroidManifest.xml --- pkg/android/phoenix/AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/android/phoenix/AndroidManifest.xml b/pkg/android/phoenix/AndroidManifest.xml index aad35d6aee..578f55f265 100644 --- a/pkg/android/phoenix/AndroidManifest.xml +++ b/pkg/android/phoenix/AndroidManifest.xml @@ -2,7 +2,7 @@ From e2952586d1b47a69120c30ad2ee22ced1fe4db7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Burdukiewicz?= Date: Thu, 9 Jan 2020 22:42:21 +0100 Subject: [PATCH 018/148] Added additional CI test for passing sysroot flags via CC and CXX. --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 492484bc55..b1f11c8c56 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,6 +32,8 @@ matrix: env: CXX_BUILD=1 CROSS_COMPILE=x86_64-w64-mingw32- CFLAGS="-D_WIN32_WINNT=0x0501" - compiler: gcc env: CC=gcc-8 CXX=g++-8 + - compiler: gcc + env: CC="gcc-8 --sysroot=/" CXX="g++-8 --sysroot=/" - compiler: gcc env: C89_BUILD=1 CC=gcc-8 CXX=g++-8 - compiler: gcc @@ -105,7 +107,7 @@ matrix: before_install: - | - if [ "$CC" = gcc-8 ]; then + if [[ "$CC" =~ ^gcc-8.* ]]; then # Install a more recent gcc than the default sudo apt-get install -y g++-8 elif [ "$CC" = clang-6.0 ]; then From 3a5dace58382bed448b87adddfbf88acfb64cdd2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 10 Jan 2020 01:16:25 +0100 Subject: [PATCH 019/148] (WiiU) fix build --- Makefile.wiiu | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.wiiu b/Makefile.wiiu index 2fb859375f..c105ace984 100644 --- a/Makefile.wiiu +++ b/Makefile.wiiu @@ -57,6 +57,7 @@ ifeq ($(SALAMANDER_BUILD),1) OBJ += libretro-common/compat/compat_strcasestr.o OBJ += libretro-common/compat/fopen_utf8.o OBJ += libretro-common/file/file_path.o + OBJ += libretro-common/file/file_path_io.o OBJ += libretro-common/string/stdstring.o OBJ += libretro-common/lists/string_list.o OBJ += libretro-common/lists/dir_list.o From d591529e7a8f17a1fb325f742e67a78780939dba Mon Sep 17 00:00:00 2001 From: Nils Hasenbanck Date: Fri, 10 Jan 2020 08:23:18 +0100 Subject: [PATCH 020/148] Fix the ffmpeg core packet buffer logic. The logic for when to consider to decode a buffered packet did had used a "magic number" when considering when the current packet should be decoded when compared to the reference packet. This change uses the media fps so that we never "overshoot" our target and don't need to rely on a "magic number". --- cores/libretro-ffmpeg/ffmpeg_core.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/cores/libretro-ffmpeg/ffmpeg_core.c b/cores/libretro-ffmpeg/ffmpeg_core.c index 9e3dd0493f..055c4053c9 100644 --- a/cores/libretro-ffmpeg/ffmpeg_core.c +++ b/cores/libretro-ffmpeg/ffmpeg_core.c @@ -1530,8 +1530,16 @@ static void decode_thread_seek(double time) #endif } -static bool earlier_or_close_enough(double p1, double p2) { - return (p1 <= p2 || (p1-p2) <= 0.001); +/** + * This function makes sure that we don't decode too many + * packets and cause stalls in our decoding pipeline. + * This could happen if we decode too many packets and + * saturate our buffers. We have a window of "still okay" + * to decode, that depends on the media fps. + **/ +static bool earlier_or_close_enough(double p1, double p2) +{ + return (p1 <= p2 || (p1-p2) < (1.0 / media.interpolate_fps) ); } static void decode_thread(void *data) @@ -1643,15 +1651,14 @@ static void decode_thread(void *data) /* * Decode audio packet if: - * 1. there is a vido packet for in the buffer - * 2. it's the start of file - * 3. it's audio only media - * 4. EOF + * 1. it's the start of file or it's audio only media + * 2. there is a video packet for in the buffer + * 3. EOF **/ if (!packet_buffer_empty(audio_packet_buffer) && - ((!eof && earlier_or_close_enough(next_audio_start, next_video_end)) || - next_video_end == 0.0 || - eof)) + ((next_video_end == 0.0 || + !eof && earlier_or_close_enough(next_audio_start, next_video_end)) || + eof)) { packet_buffer_get_packet(audio_packet_buffer, pkt); last_audio_end = audio_timebase * (pkt->pts + pkt->duration); From 495ad417412a23cc972f8adc9ef2e36370589de8 Mon Sep 17 00:00:00 2001 From: jdgleaver Date: Fri, 10 Jan 2020 11:08:36 +0000 Subject: [PATCH 021/148] Thumbnail downloader clean-ups --- intl/msg_hash_lbl.h | 2 + menu/cbs/menu_cbs_ok.c | 14 --- menu/menu_displaylist.c | 2 +- menu/menu_thumbnail_path.c | 3 + msg_hash.h | 1 + tasks/task_pl_thumbnail_download.c | 159 ++++++++++++++++++++++++----- 6 files changed, 141 insertions(+), 40 deletions(-) diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index f74217ce02..6928a9ea92 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -1307,6 +1307,8 @@ MSG_HASH(MENU_ENUM_LABEL_THUMBNAILS_UPDATER_LIST, "thumbnails_updater_list") MSG_HASH(MENU_ENUM_LABEL_PL_THUMBNAILS_UPDATER_LIST, "pl_thumbnails_updater_list") +MSG_HASH(MENU_ENUM_LABEL_PL_THUMBNAILS_UPDATER_ENTRY, + "pl_thumbnails_updater_entry") MSG_HASH(MENU_ENUM_LABEL_TIMEDATE_ENABLE, "menu_timedate_enable") MSG_HASH(MENU_ENUM_LABEL_TIMEDATE_STYLE, diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 0a95e1dc34..0afa074df3 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -4094,8 +4094,6 @@ void cb_generic_download(retro_task_t *task, dir_path = buf; break; } - case MENU_ENUM_LABEL_CB_SINGLE_THUMBNAIL: - break; default: RARCH_WARN("Unknown transfer type '%s' bailing out.\n", msg_hash_to_str(transf->enum_idx)); @@ -4105,12 +4103,6 @@ void cb_generic_download(retro_task_t *task, if (!string_is_empty(dir_path)) fill_pathname_join(output_path, dir_path, transf->path, sizeof(output_path)); - else if (transf->enum_idx == MENU_ENUM_LABEL_CB_SINGLE_THUMBNAIL) - { - /* In this particular case we have the whole path - * already built from the task */ - strlcpy(output_path, transf->path, sizeof(output_path)); - } /* Make sure the directory exists * This function is horrible. It mutates the original path @@ -4128,12 +4120,6 @@ void cb_generic_download(retro_task_t *task, if (!string_is_empty(dir_path)) fill_pathname_join(output_path, dir_path, transf->path, sizeof(output_path)); - else if (transf->enum_idx == MENU_ENUM_LABEL_CB_SINGLE_THUMBNAIL) - { - /* In this particular case we have the whole path - * already built from the task */ - strlcpy(output_path, transf->path, sizeof(output_path)); - } #ifdef HAVE_COMPRESSION if (path_is_compressed_file(output_path)) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 466582de6a..9f072eeea8 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2974,7 +2974,7 @@ static unsigned menu_displaylist_parse_pl_thumbnail_download_list( menu_entries_append_enum(info->list, path_base, path, - MENU_ENUM_LABEL_PLAYLIST_ENTRY, + MENU_ENUM_LABEL_PL_THUMBNAILS_UPDATER_ENTRY, FILE_TYPE_DOWNLOAD_PL_THUMBNAIL_CONTENT, 0, 0); count++; diff --git a/menu/menu_thumbnail_path.c b/menu/menu_thumbnail_path.c index a6c137f04b..346a777999 100644 --- a/menu/menu_thumbnail_path.c +++ b/menu/menu_thumbnail_path.c @@ -470,6 +470,9 @@ bool menu_thumbnail_set_content_playlist(menu_thumbnail_path_data_t *path_data, /* Read playlist values */ playlist_get_index(playlist, idx, &entry); + if (!entry) + return false; + content_path = entry->path; content_label = entry->label; core_name = entry->core_name; diff --git a/msg_hash.h b/msg_hash.h index d0166bb93f..6ac4413e89 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -1177,6 +1177,7 @@ enum msg_hash_enums MENU_LABEL(MENU_SETTINGS), MENU_LABEL(THUMBNAILS_UPDATER_LIST), MENU_LABEL(PL_THUMBNAILS_UPDATER_LIST), + MENU_LABEL(PL_THUMBNAILS_UPDATER_ENTRY), MENU_LABEL(USER_INTERFACE_SETTINGS), MENU_LABEL(POWER_MANAGEMENT_SETTINGS), MENU_LABEL(RETRO_ACHIEVEMENTS_SETTINGS), diff --git a/tasks/task_pl_thumbnail_download.c b/tasks/task_pl_thumbnail_download.c index faaa2fa9f6..b8f3d571b8 100644 --- a/tasks/task_pl_thumbnail_download.c +++ b/tasks/task_pl_thumbnail_download.c @@ -23,6 +23,7 @@ #include #include #include +#include #include "tasks_internal.h" #include "task_file_transfer.h" @@ -30,6 +31,7 @@ #include "../configuration.h" #include "../file_path_special.h" #include "../playlist.h" +#include "../verbosity.h" #ifdef RARCH_INTERNAL #ifdef HAVE_MENU @@ -55,6 +57,7 @@ typedef struct pl_thumb_handle playlist_t *playlist; menu_thumbnail_path_data_t *thumbnail_path_data; retro_task_t *http_task; + bool http_task_complete; size_t list_size; size_t list_index; unsigned type_idx; @@ -162,16 +165,90 @@ static bool get_thumbnail_paths( return true; } +/* Thumbnail download http task callback function + * > Writes thumbnail file to disk */ +void cb_http_task_download_pl_thumbnail( + retro_task_t *task, void *task_data, + void *user_data, const char *err) +{ + http_transfer_data_t *data = (http_transfer_data_t*)task_data; + file_transfer_t *transf = (file_transfer_t*)user_data; + pl_thumb_handle_t *pl_thumb = NULL; + char output_dir[PATH_MAX_LENGTH]; + + output_dir[0] = '\0'; + + /* Update pl_thumb task status + * > Do this first, to minimise the risk of hanging + * the parent task in the event of an http error */ + if (!transf) + goto finish; + + pl_thumb = (pl_thumb_handle_t*)transf->user_data; + + if (!pl_thumb) + goto finish; + + pl_thumb->http_task_complete = true; + + /* Remaining sanity checks... */ + if (!data) + goto finish; + + if (!data->data || string_is_empty(transf->path)) + goto finish; + + /* Create output directory, if required */ + strlcpy(output_dir, transf->path, sizeof(output_dir)); + path_basedir_wrapper(output_dir); + + if (!path_mkdir(output_dir)) + { + err = msg_hash_to_str(MSG_FAILED_TO_CREATE_THE_DIRECTORY); + goto finish; + } + + /* Write thumbnail file to disk */ + if (!filestream_write_file(transf->path, data->data, data->len)) + { + err = "Write failed."; + goto finish; + } + +finish: + + /* Log any error messages */ + if (!string_is_empty(err)) + { + RARCH_ERR("Download of '%s' failed: %s\n", + (transf ? transf->path: "unknown"), err); + } + + if (data) + { + if (data->data) + free(data->data); + free(data); + } + + if (transf) + free(transf); +} + /* Download thumbnail of the current type for the current * playlist entry */ static void download_pl_thumbnail(pl_thumb_handle_t *pl_thumb) { char path[PATH_MAX_LENGTH]; char url[2048]; - + path[0] = '\0'; - url[0] = '\0'; - + url[0] = '\0'; + + /* Sanity check */ + if (!pl_thumb) + return; + /* Check if paths are valid */ if (get_thumbnail_paths(pl_thumb, path, sizeof(path), url, sizeof(url))) { @@ -181,15 +258,24 @@ static void download_pl_thumbnail(pl_thumb_handle_t *pl_thumb) file_transfer_t *transf = (file_transfer_t*)calloc(1, sizeof(file_transfer_t)); if (!transf) return; /* If this happens then everything is broken anyway... */ - + + /* Initialise http task status */ + pl_thumb->http_task_complete = false; + /* Initialise file transfer */ - transf->enum_idx = MENU_ENUM_LABEL_CB_SINGLE_THUMBNAIL; + transf->user_data = (void*)pl_thumb; strlcpy(transf->path, path, sizeof(transf->path)); - + /* Note: We don't actually care if this fails since that * just means the file is missing from the server, so it's * not something we can handle here... */ - pl_thumb->http_task = (retro_task_t*)task_push_http_transfer(url, true, NULL, cb_generic_download, transf); + pl_thumb->http_task = (retro_task_t*)task_push_http_transfer( + url, true, NULL, cb_http_task_download_pl_thumbnail, transf); + + /* ...if it does fail, however, we can immediately + * signal that the task is 'complete' */ + if (!pl_thumb->http_task) + pl_thumb->http_task_complete = true; } } } @@ -318,13 +404,19 @@ static void task_pl_thumbnail_download_handler(retro_task_t *task) { /* Ensure that we only enqueue one transfer * at a time... */ - if (pl_thumb->http_task) - { - if (task_get_finished(pl_thumb->http_task)) - pl_thumb->http_task = NULL; - else - break; - } + + /* > If HTTP task is NULL, then it either finished + * or an error occurred - in either case, + * current task is 'complete' */ + if (!pl_thumb->http_task) + pl_thumb->http_task_complete = true; + + /* > Wait for task_push_http_transfer() + * callback to trigger */ + if (pl_thumb->http_task_complete) + pl_thumb->http_task = NULL; + else + break; /* Check whether all thumbnail types have been processed */ if (pl_thumb->type_idx > 3) @@ -339,8 +431,7 @@ static void task_pl_thumbnail_download_handler(retro_task_t *task) } /* Download current thumbnail */ - if (pl_thumb) - download_pl_thumbnail(pl_thumb); + download_pl_thumbnail(pl_thumb); /* Increment thumbnail type */ pl_thumb->type_idx++; @@ -431,6 +522,7 @@ bool task_push_pl_thumbnail_download( pl_thumb->playlist = NULL; pl_thumb->thumbnail_path_data = NULL; pl_thumb->http_task = NULL; + pl_thumb->http_task_complete = false; pl_thumb->list_size = 0; pl_thumb->list_index = 0; pl_thumb->type_idx = 1; @@ -574,6 +666,17 @@ static void task_pl_entry_thumbnail_download_handler(retro_task_t *task) const char *right_thumbnail_path = NULL; const char *left_thumbnail_path = NULL; + /* Redundant safety check - ensure that playlist is + * non-NULL, and that the playlist path is the same + * as that recorded when task_push_pl_entry_thumbnail_download() + * was called... */ + if (!pl_thumb->playlist) + goto task_finished; + + if (!string_is_equal(pl_thumb->playlist_path, + playlist_get_conf_path(pl_thumb->playlist))) + goto task_finished; + /* Initialise thumbnail path data */ pl_thumb->thumbnail_path_data = menu_thumbnail_path_init(); @@ -616,13 +719,19 @@ static void task_pl_entry_thumbnail_download_handler(retro_task_t *task) { /* Ensure that we only enqueue one transfer * at a time... */ - if (pl_thumb->http_task) - { - if (task_get_finished(pl_thumb->http_task)) - pl_thumb->http_task = NULL; - else - break; - } + + /* > If HTTP task is NULL, then it either finished + * or an error occurred - in either case, + * current task is 'complete' */ + if (!pl_thumb->http_task) + pl_thumb->http_task_complete = true; + + /* > Wait for task_push_http_transfer() + * callback to trigger */ + if (pl_thumb->http_task_complete) + pl_thumb->http_task = NULL; + else + break; /* Check whether all thumbnail types have been processed */ if (pl_thumb->type_idx > 3) @@ -635,8 +744,7 @@ static void task_pl_entry_thumbnail_download_handler(retro_task_t *task) task_set_progress(task, ((pl_thumb->type_idx - 1) * 100) / 3); /* Download current thumbnail */ - if (pl_thumb) - download_pl_thumbnail(pl_thumb); + download_pl_thumbnail(pl_thumb); /* Increment thumbnail type */ pl_thumb->type_idx++; @@ -746,6 +854,7 @@ bool task_push_pl_entry_thumbnail_download( pl_thumb->playlist = playlist; pl_thumb->thumbnail_path_data = NULL; pl_thumb->http_task = NULL; + pl_thumb->http_task_complete = false; pl_thumb->list_size = playlist_size(playlist); pl_thumb->list_index = idx; pl_thumb->type_idx = 1; From dfafcb0513c6e6663115f614a965fbc7ac465808 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Fri, 10 Jan 2020 15:05:34 +0100 Subject: [PATCH 022/148] Update AndroidManifest.xml --- pkg/android/phoenix/AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/android/phoenix/AndroidManifest.xml b/pkg/android/phoenix/AndroidManifest.xml index 578f55f265..3eb7173549 100644 --- a/pkg/android/phoenix/AndroidManifest.xml +++ b/pkg/android/phoenix/AndroidManifest.xml @@ -2,7 +2,7 @@ From 311ee2db62fcda17db48ba5f30f23705c0d7534b Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Fri, 10 Jan 2020 15:06:00 +0100 Subject: [PATCH 023/148] Update build.gradle --- pkg/android/phoenix/build.gradle | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pkg/android/phoenix/build.gradle b/pkg/android/phoenix/build.gradle index 8d31d62954..ca3db1b582 100644 --- a/pkg/android/phoenix/build.gradle +++ b/pkg/android/phoenix/build.gradle @@ -56,12 +56,6 @@ android { abiFilters 'armeabi-v7a', 'x86' } } - gold { - applicationIdSuffix '.gold' - resValue "string", "app_name", "RetroArch Gold" - - dimension "variant" - } } sourceSets { From 0b0455975b1a804952ec3e28e4c2ab69e68bd61c Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Fri, 10 Jan 2020 15:09:37 +0100 Subject: [PATCH 024/148] Update CHANGES.md --- CHANGES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 55d64003a1..0247aa3a7e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -8,6 +8,7 @@ - BUGFIX/CRASH/CORE UPDATER: Fix potential double free error - BUGFIX/CRASH/OPENGL/WINDOWS: Fix regression in 1.8.2 that would cause GL-based cores to fail because it would try to erroneously load libGLESv2.dll instead of OpenGL32.dll (cores affected: VitaQuake 2/3/Dhewm3, possibly more) - BUGFIX/MENU/DESKTOP UI: Show desktop menu on startup does not launch Qt UI on Linux +- BUGFIX: Entries in the Playlist Thumbnails Updater list were displaying improper sublabels. I have no idea when this broke... The issue is now fixed - CHEEVOS: Don't disable achievement when AddAddress generates an out-of-range address - CHEEVOS: Don't reset triggers/leaderboards that failed to load - CHEEVOS: Don't count unsupported achievements as unlocked @@ -32,6 +33,7 @@ - NETPLAY/RELAY: Overall stability has improved. Fixed a memory leak that would cause the relay server to become unresponsive after some time. - NETPLAY/RELAY: Fixed critical bug that would cause all players to be disconnected from the relay server if one player was leaving the game. That bug had been open for one year and we were finally able to fix it. - SWITCH/LIBNX/BUGFIX: Fix onscreen keyboard input regression +- THUMBNAIL UPDATER: When waiting for individual thumbnail file http transfers to complete, the task status checking is more accurate. This uses the same method as the new core updater - we now wait until the task is 'really' complete, instead of relying on the (slightly nebulous) 'task finished' state - UWP: Add ANGLE support - UWP: Wire up get_metrics to the fake context of D3D9/10/11/12 driver, enabling proper scaling and mouse/touch gestures - VITA: Re-add Online Updater From 99d5dba6ae4595ddfac803c2ef3772216e971804 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 10 Jan 2020 15:14:09 +0100 Subject: [PATCH 025/148] Add signal.h check for linux/unix --- retroarch.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/retroarch.c b/retroarch.c index a6b28924d3..2f52985fba 100644 --- a/retroarch.c +++ b/retroarch.c @@ -31,10 +31,13 @@ #if defined(DINGUX) #include -#include #include #endif +#if (defined(__linux__) || defined(__unix__) || defined(DINGUX)) && !defined(EMSCRIPTEN) +#include +#endif + #if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0500 || defined(_XBOX) #ifndef LEGACY_WIN32 #define LEGACY_WIN32 From 8032ff6e1915e8b7213f53d02d0a3705388919f3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 11 Jan 2020 03:07:54 +0100 Subject: [PATCH 026/148] (RCheevos) Cleanups --- deps/rcheevos/src/rcheevos/trigger.c | 3 +++ deps/rcheevos/src/rcheevos/value.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/deps/rcheevos/src/rcheevos/trigger.c b/deps/rcheevos/src/rcheevos/trigger.c index 0e76e031bb..fdb9002fb8 100644 --- a/deps/rcheevos/src/rcheevos/trigger.c +++ b/deps/rcheevos/src/rcheevos/trigger.c @@ -1,7 +1,10 @@ #include "internal.h" #include +#if !defined( __CELLOS_LV2__) && !defined(__MWERKS__) #include +#endif +#include void rc_parse_trigger_internal(rc_trigger_t* self, const char** memaddr, rc_parse_state_t* parse) { rc_condset_t** next; diff --git a/deps/rcheevos/src/rcheevos/value.c b/deps/rcheevos/src/rcheevos/value.c index b9a7db49a5..fcbc6c21e2 100644 --- a/deps/rcheevos/src/rcheevos/value.c +++ b/deps/rcheevos/src/rcheevos/value.c @@ -1,6 +1,9 @@ #include "internal.h" +#if !defined( __CELLOS_LV2__) && !defined(__MWERKS__) #include +#endif +#include static void rc_parse_cond_value(rc_value_t* self, const char** memaddr, rc_parse_state_t* parse) { rc_condition_t** next; From 066089873b0a3b5ae0bdd099b8ff86af02563cea Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 11 Jan 2020 04:13:05 +0100 Subject: [PATCH 027/148] Prevent warning when HAVE_NETWORKING is not defined --- menu/cbs/menu_cbs_ok.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 0afa074df3..417c66b887 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -4310,19 +4310,19 @@ static int action_ok_core_updater_download(const char *path, return 0; } +#ifdef HAVE_NETWORKING static int action_ok_update_installed_cores(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { -#ifdef HAVE_NETWORKING /* Ensure networking is initialised */ generic_action_ok_command(CMD_EVENT_NETWORK_INIT); /* Push update task */ task_push_update_installed_cores(); -#endif return 0; } +#endif static int action_ok_sideload_core(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) From 98a573033d9a7da60582011617e5c664dbaf9367 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 11 Jan 2020 04:26:31 +0100 Subject: [PATCH 028/148] Prevent another warning --- retroarch.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/retroarch.c b/retroarch.c index 2f52985fba..0923101ce4 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1168,7 +1168,9 @@ static const void *wifi_driver_find_handle(int idx); static const void *camera_driver_find_handle(int idx); static const void *input_driver_find_handle(int idx); static const void *joypad_driver_find_handle(int idx); +#ifdef HAVE_HID static const void *hid_driver_find_handle(int idx); +#endif static bool midi_driver_read(uint8_t *byte); static bool midi_driver_write(uint8_t byte, uint32_t delta_time); @@ -16503,13 +16505,6 @@ void input_pad_connect(unsigned port, input_device_driver_t *driver) } #ifdef HAVE_HID -/** - * hid_driver_find_handle: - * @idx : index of driver to get handle to. - * - * Returns: handle to HID driver at index. Can be NULL - * if nothing found. - **/ static const void *hid_driver_find_handle(int idx) { const void *drv = hid_drivers[idx]; From f9ed6cbbfe91b1588d91d7fb69bc25841670ba60 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 11 Jan 2020 04:27:38 +0100 Subject: [PATCH 029/148] Prevent another warning --- config.def.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config.def.h b/config.def.h index 0dac001668..d56fb2fcc5 100644 --- a/config.def.h +++ b/config.def.h @@ -468,7 +468,9 @@ static bool quick_menu_show_save_core_overrides = true; static bool quick_menu_show_save_game_overrides = true; static bool quick_menu_show_save_content_dir_overrides = true; +#ifdef HAVE_NETWORKING static bool quick_menu_show_download_thumbnails = true; +#endif static bool kiosk_mode_enable = false; From 3492ba5fd6e08595814ce32e95c9583011b5b024 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 11 Jan 2020 04:48:33 +0100 Subject: [PATCH 030/148] (libretro-common) Prevent warning --- libretro-common/media/media_detect_cd.c | 34 +++++++++++++++---------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/libretro-common/media/media_detect_cd.c b/libretro-common/media/media_detect_cd.c index 9faa747a5a..db33e89829 100644 --- a/libretro-common/media/media_detect_cd.c +++ b/libretro-common/media/media_detect_cd.c @@ -334,9 +334,11 @@ bool media_detect_cd_info(const char *path, uint64_t pregap_bytes, media_detect_ if (!memcmp(buf + offset, "SEGADISCSYSTEM", strlen("SEGADISCSYSTEM"))) { - const char *title_pos; - const char *serial_pos; - bool title_found = false; + const char *title_pos = NULL; + const char *serial_pos = NULL; +#if 0 + bool title_found = false; +#endif /* All discs currently in Redump for MCD start with SEGADISCSYSTEM. There are other strings mentioned elsewhere online, * but I have not seen any real examples of them. */ @@ -366,11 +368,13 @@ bool media_detect_cd_info(const char *path, uint64_t pregap_bytes, media_detect_ } else if (!memcmp(buf + offset, "SEGA SEGASATURN", strlen("SEGA SEGASATURN"))) { - const char *title_pos; - const char *serial_pos; - const char *version_pos; - const char *release_date_pos; - bool title_found = false; + const char *title_pos = NULL; + const char *serial_pos = NULL; + const char *version_pos = NULL; + const char *release_date_pos = NULL; +#if 0 + bool title_found = false; +#endif info->system_id = MEDIA_CD_SYSTEM_SATURN; @@ -418,11 +422,13 @@ bool media_detect_cd_info(const char *path, uint64_t pregap_bytes, media_detect_ } else if (!memcmp(buf + offset, "SEGA SEGAKATANA", strlen("SEGA SEGAKATANA"))) { - const char *title_pos; - const char *serial_pos; - const char *version_pos; - const char *release_date_pos; - bool title_found = false; + const char *title_pos = NULL; + const char *serial_pos = NULL; + const char *version_pos = NULL; + const char *release_date_pos = NULL; +#if 0 + bool title_found = false; +#endif info->system_id = MEDIA_CD_SYSTEM_DREAMCAST; @@ -472,7 +478,9 @@ bool media_detect_cd_info(const char *path, uint64_t pregap_bytes, media_detect_ else if (!memcmp(buf + offset + (16 * sector_size), "\1CD001\1\0PLAYSTATION", 19)) { const char *title_pos = NULL; +#if 0 bool title_found = false; +#endif info->system_id = MEDIA_CD_SYSTEM_PSX; From 78e02bf3dd74ac4d70d76940d6ba53a2643d320a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 11 Jan 2020 05:02:46 +0100 Subject: [PATCH 031/148] Avoid warnings when HAVE_RUNAHEAD is not defined --- retroarch.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/retroarch.c b/retroarch.c index 0923101ce4..bbbe09451a 100644 --- a/retroarch.c +++ b/retroarch.c @@ -3172,13 +3172,13 @@ typedef struct input_list_element_t unsigned int state_size; } input_list_element; +#ifdef HAVE_RUNAHEAD static size_t runahead_save_state_size = 0; static bool runahead_save_state_size_known = false; static bool request_fast_savestate = false; static bool hard_disable_audio = false; -#ifdef HAVE_RUNAHEAD /* Save State List for Run Ahead */ static MyList *runahead_save_state_list = NULL; static MyList *input_state_list = NULL; @@ -3534,7 +3534,9 @@ static bool bsv_movie_check(void); static void driver_uninit(int flags); static void drivers_init(int flags); +#if defined(HAVE_RUNAHEAD) static void core_free_retro_game_info(struct retro_game_info *dest); +#endif static bool core_load(unsigned poll_type_behavior); static bool core_unload_game(void); @@ -29244,6 +29246,7 @@ bool core_has_set_input_descriptor(void) return current_core.has_set_input_descriptors; } +#if defined(HAVE_RUNAHEAD) static void core_free_retro_game_info(struct retro_game_info *dest) { if (!dest) @@ -29258,6 +29261,7 @@ static void core_free_retro_game_info(struct retro_game_info *dest) dest->data = NULL; dest->meta = NULL; } +#endif unsigned int retroarch_get_rotation(void) { From 6319262b9c6a0ae78674a78d56cbd1adf26d3998 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 11 Jan 2020 05:03:27 +0100 Subject: [PATCH 032/148] (RGUI) Prevent warning --- menu/drivers/rgui.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index 78ae897936..5cfb99f51f 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -496,6 +496,7 @@ static const rgui_theme_t rgui_theme_anti_zenburn = { 0xE0B090B0 /* particle_color */ }; +#if 0 static const rgui_theme_t rgui_theme_flux = { 0xFF6FCB9F, /* hover_color */ 0xFF666547, /* normal_color */ @@ -507,6 +508,7 @@ static const rgui_theme_t rgui_theme_flux = { 0xE0FFE28A, /* shadow_color */ 0xE0FB2E01 /* particle_color */ }; +#endif typedef struct { From b9c69e24a9abbf53d123bd90785abe959c38ab75 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 11 Jan 2020 05:06:38 +0100 Subject: [PATCH 033/148] Cleanups --- retroarch.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/retroarch.c b/retroarch.c index bbbe09451a..c96a828a09 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1123,7 +1123,7 @@ static char runtime_content_path[PATH_MAX_LENGTH] = {0}; static char runtime_core_path[PATH_MAX_LENGTH] = {0}; static char timestamped_log_file_name[64] = {0}; static char log_file_override_path[PATH_MAX_LENGTH] = {0}; -static char launch_arguments[4096]; +static char launch_arguments[4096] = {0}; static char current_library_name[1024] = {0}; static char current_library_version[1024] = {0}; static char current_valid_extensions[1024] = {0}; @@ -1131,9 +1131,6 @@ static char error_string[255] = {0}; static char cached_video_driver[32] = {0}; /* PATHS */ - -#define MENU_VALUE_NO_CORE 0x7d5472cbU - struct rarch_dir_list { struct string_list *list; From 354c50039b6d64b91faf3fd24decb2c85ba3b887 Mon Sep 17 00:00:00 2001 From: Nils Hasenbanck Date: Sat, 11 Jan 2020 15:01:21 +0100 Subject: [PATCH 034/148] Fix brackets in buffer logic of the ffmpeg core. --- cores/libretro-ffmpeg/ffmpeg_core.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/cores/libretro-ffmpeg/ffmpeg_core.c b/cores/libretro-ffmpeg/ffmpeg_core.c index 055c4053c9..9c9dc00e8e 100644 --- a/cores/libretro-ffmpeg/ffmpeg_core.c +++ b/cores/libretro-ffmpeg/ffmpeg_core.c @@ -1656,9 +1656,12 @@ static void decode_thread(void *data) * 3. EOF **/ if (!packet_buffer_empty(audio_packet_buffer) && - ((next_video_end == 0.0 || - !eof && earlier_or_close_enough(next_audio_start, next_video_end)) || - eof)) + ( + next_video_end == 0.0 || + (!eof && earlier_or_close_enough(next_audio_start, next_video_end)) || + eof + ) + ) { packet_buffer_get_packet(audio_packet_buffer, pkt); last_audio_end = audio_timebase * (pkt->pts + pkt->duration); @@ -1675,7 +1678,12 @@ static void decode_thread(void *data) * 3. EOF **/ if (!packet_buffer_empty(video_packet_buffer) && - ((!eof && earlier_or_close_enough(next_video_end, last_audio_end)) || !actx_active || eof )) + ( + (!eof && earlier_or_close_enough(next_video_end, last_audio_end)) || + !actx_active || + eof + ) + ) { packet_buffer_get_packet(video_packet_buffer, pkt); From 36e67108fb44a78d1e8883707ee792129967c627 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 11 Jan 2020 23:03:52 +0100 Subject: [PATCH 035/148] Cleanups --- menu/menu_displaylist.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 9f072eeea8..e4a1d34bb5 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -601,12 +601,10 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list) { char tmp[PATH_MAX_LENGTH]; - char tmp2[PATH_MAX_LENGTH]; - char tmp3[PATH_MAX_LENGTH]; uint64_t memory_free = frontend_driver_get_free_memory(); uint64_t memory_total = frontend_driver_get_total_memory(); - tmp[0] = tmp2[0] = tmp3[0] = '\0'; + tmp[0] = '\0'; if (memory_free != 0 && memory_total != 0) { @@ -628,6 +626,7 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list) if (frontend->get_powerstate) { int seconds = 0, percent = 0; + char tmp2[PATH_MAX_LENGTH]; enum frontend_powerstate state = frontend->get_powerstate(&seconds, &percent); From 81f8cae52a19c947ad7cecb3834e41e19ae382f0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 11 Jan 2020 23:22:23 +0100 Subject: [PATCH 036/148] (RGUI) Prevent 'potential uninitialized reference to variables' in load_custom_theme --- menu/drivers/rgui.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index 5cfb99f51f..8c226cf5b6 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -2173,15 +2173,20 @@ static const rgui_theme_t *get_theme(rgui_t *rgui) static void load_custom_theme(rgui_t *rgui, rgui_theme_t *theme_colors, const char *theme_path) { - unsigned normal_color, hover_color, title_color, - bg_dark_color, bg_light_color, - border_dark_color, border_light_color, - shadow_color, particle_color; char wallpaper_file[PATH_MAX_LENGTH]; - config_file_t *conf = NULL; - char *wallpaper_key = NULL; - settings_t *settings = config_get_ptr(); - bool success = false; + unsigned normal_color = 0; + unsigned hover_color = 0; + unsigned title_color = 0; + unsigned bg_dark_color = 0; + unsigned bg_light_color = 0; + unsigned border_dark_color = 0; + unsigned border_light_color = 0; + unsigned shadow_color = 0; + unsigned particle_color = 0; + config_file_t *conf = NULL; + char *wallpaper_key = NULL; + settings_t *settings = config_get_ptr(); + bool success = false; /* Determine which type of wallpaper to load */ switch (settings->uints.menu_rgui_aspect_ratio) From e9adb44c4a94de21f134d250818b7bc183b8a9ac Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 12 Jan 2020 00:07:41 +0100 Subject: [PATCH 037/148] Avoid two warnings --- intl/msg_hash_es.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/intl/msg_hash_es.c b/intl/msg_hash_es.c index 9e6753bd33..722513b7b1 100644 --- a/intl/msg_hash_es.c +++ b/intl/msg_hash_es.c @@ -1348,6 +1348,8 @@ int menu_hash_get_help_es_enum(enum msg_hash_enums msg, char *s, size_t len) "o similar a 60 Hz, desactiva la sincronía\n" "vertical y deja esta opción en su valor\n" "predeterminado."); + strlcpy(s, t, len); + strlcat(s, u, len); } break; case MENU_ENUM_LABEL_VIDEO_REFRESH_RATE_POLLED: @@ -1860,6 +1862,8 @@ int menu_hash_get_help_es_enum(enum msg_hash_enums msg, char *s, size_t len) "Selecciona cero para no hacer comprobaciones.\n" "Este valor es usado únicamente por el servidor\n" "de juego en red."); + strlcpy(s, t, len); + strlcat(s, u, len); } break; case MENU_ENUM_LABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN: From 70e472e9e230dc58da65f579eca7d160831bf744 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 12 Jan 2020 21:11:26 +0100 Subject: [PATCH 038/148] (menu widgets) Minor variable cleanups; shouldn't affect anything --- menu/widgets/menu_widgets.c | 114 ++++++++++++++++++------------------ 1 file changed, 58 insertions(+), 56 deletions(-) diff --git a/menu/widgets/menu_widgets.c b/menu/widgets/menu_widgets.c index 35906867d1..4ea9a22a88 100644 --- a/menu/widgets/menu_widgets.c +++ b/menu/widgets/menu_widgets.c @@ -857,7 +857,6 @@ static void menu_widgets_hourglass_tick(void *userdata) void menu_widgets_iterate(unsigned width, unsigned height) { size_t i; - settings_t *settings = config_get_ptr(); /* Messages queue */ @@ -936,13 +935,16 @@ void menu_widgets_iterate(unsigned width, unsigned height) if (screenshot_filename[0] != '\0') { menu_timer_ctx_entry_t timer; + settings_t *settings = config_get_ptr(); + float video_font_size = settings->floats.video_font_size; + video_driver_texture_unload(&screenshot_texture); menu_display_reset_textures_list(screenshot_filename, "", &screenshot_texture, TEXTURE_FILTER_MIPMAP_LINEAR, &screenshot_texture_width, &screenshot_texture_height); - screenshot_height = settings->floats.video_font_size * 4; + screenshot_height = video_font_size * 4; screenshot_width = width; screenshot_scale_factor = menu_widgets_get_thumbnail_scale_factor( @@ -973,7 +975,6 @@ static int menu_widgets_draw_indicator(video_frame_info_t *video_info, enum msg_hash_enums msg) { unsigned width; - settings_t *settings = config_get_ptr(); menu_display_set_alpha(menu_widgets_backdrop_orig, DEFAULT_BACKDROP); @@ -1001,8 +1002,11 @@ static int menu_widgets_draw_indicator(video_frame_info_t *video_info, } else { - unsigned height = simple_widget_height; - const char *txt = msg_hash_to_str(msg); + unsigned height = simple_widget_height; + const char *txt = msg_hash_to_str(msg); + settings_t *settings = config_get_ptr(); + float video_font_size = settings->floats.video_font_size; + width = font_driver_get_message_width(font_regular, txt, (unsigned)strlen(txt), 1) + simple_widget_padding*2; menu_display_draw_quad(video_info, @@ -1014,7 +1018,7 @@ static int menu_widgets_draw_indicator(video_frame_info_t *video_info, menu_display_draw_text(font_regular, txt, - top_right_x_advance - width + simple_widget_padding, settings->floats.video_font_size + simple_widget_padding/4, + top_right_x_advance - width + simple_widget_padding, video_font_size + simple_widget_padding/4, video_info->width, video_info->height, 0xFFFFFFFF, TEXT_ALIGN_LEFT, 1.0f, @@ -1042,6 +1046,7 @@ static void menu_widgets_draw_task_msg(menu_widget_msg_t *msg, video_frame_info_ unsigned task_percentage_offset = 0; char task_percentage[256] = {0}; settings_t *settings = config_get_ptr(); + float video_font_size = settings->floats.video_font_size; if (msg->msg_new) draw_msg_new = !string_is_equal(msg->msg_new, msg->msg); @@ -1129,7 +1134,7 @@ static void menu_widgets_draw_task_msg(menu_widget_msg_t *msg, video_frame_info_ menu_display_draw_text(font_regular, msg->msg_new, msg_queue_task_text_start_x, - video_info->height - msg->offset_y + msg_queue_text_scale_factor * settings->floats.video_font_size + msg_queue_height/4 - settings->floats.video_font_size/2.25f - msg_queue_height/2 + msg->msg_transition_animation, + video_info->height - msg->offset_y + msg_queue_text_scale_factor * video_font_size + msg_queue_height/4 - video_font_size/2.25f - msg_queue_height/2 + msg->msg_transition_animation, video_info->width, video_info->height, text_color, TEXT_ALIGN_LEFT, @@ -1143,7 +1148,7 @@ static void menu_widgets_draw_task_msg(menu_widget_msg_t *msg, video_frame_info_ menu_display_draw_text(font_regular, msg->msg, msg_queue_task_text_start_x, - video_info->height - msg->offset_y + msg_queue_text_scale_factor * settings->floats.video_font_size + msg_queue_height/4 - settings->floats.video_font_size/2.25f + msg->msg_transition_animation, + video_info->height - msg->offset_y + msg_queue_text_scale_factor * video_font_size + msg_queue_height/4 - video_font_size/2.25f + msg->msg_transition_animation, video_info->width, video_info->height, text_color, TEXT_ALIGN_LEFT, @@ -1166,7 +1171,7 @@ static void menu_widgets_draw_task_msg(menu_widget_msg_t *msg, video_frame_info_ menu_display_draw_text(font_regular, task_percentage, msg_queue_rect_start_x - msg_queue_icon_size_x + rect_width - msg_queue_glyph_width, - video_info->height - msg->offset_y + msg_queue_text_scale_factor * settings->floats.video_font_size + msg_queue_height/4 - settings->floats.video_font_size/2.25f, + video_info->height - msg->offset_y + msg_queue_text_scale_factor * video_font_size + msg_queue_height/4 - video_font_size/2.25f, video_info->width, video_info->height, text_color, TEXT_ALIGN_RIGHT, @@ -1341,9 +1346,9 @@ void menu_widgets_frame(video_frame_info_t *video_info) { size_t i; int top_right_x_advance = video_info->width; - int scissor_me_timbers = 0; - - settings_t *settings = config_get_ptr(); + int scissor_me_timbers = 0; + settings_t *settings = config_get_ptr(); + float video_font_size = settings->floats.video_font_size; menu_widgets_frame_count++; @@ -1474,7 +1479,7 @@ void menu_widgets_frame(video_frame_info_t *video_info) menu_display_draw_text(font_regular, msg_hash_to_str(MSG_SCREENSHOT_SAVED), - screenshot_thumbnail_width + simple_widget_padding, settings->floats.video_font_size * 1.9f + screenshot_y, + screenshot_thumbnail_width + simple_widget_padding, video_font_size * 1.9f + screenshot_y, video_info->width, video_info->height, text_color_faint, TEXT_ALIGN_LEFT, @@ -1491,7 +1496,7 @@ void menu_widgets_frame(video_frame_info_t *video_info) menu_display_draw_text(font_regular, shotname, - screenshot_thumbnail_width + simple_widget_padding, settings->floats.video_font_size * 2.9f + screenshot_y, + screenshot_thumbnail_width + simple_widget_padding, video_font_size * 2.9f + screenshot_y, video_info->width, video_info->height, text_color_info, TEXT_ALIGN_LEFT, @@ -1555,7 +1560,7 @@ void menu_widgets_frame(video_frame_info_t *video_info) /* Title */ menu_display_draw_text(font_regular, msg_hash_to_str(MSG_ACHIEVEMENT_UNLOCKED), - cheevo_height + simple_widget_padding - unfold_offet, settings->floats.video_font_size * 1.9f + cheevo_y, + cheevo_height + simple_widget_padding - unfold_offet, video_font_size * 1.9f + cheevo_y, video_info->width, video_info->height, text_color_faint, TEXT_ALIGN_LEFT, @@ -1568,7 +1573,7 @@ void menu_widgets_frame(video_frame_info_t *video_info) menu_display_draw_text(font_regular, cheevo_title, - cheevo_height + simple_widget_padding - unfold_offet, settings->floats.video_font_size * 2.9f + cheevo_y, + cheevo_height + simple_widget_padding - unfold_offet, video_font_size * 2.9f + cheevo_y, video_info->width, video_info->height, text_color_info, TEXT_ALIGN_LEFT, @@ -1592,24 +1597,22 @@ void menu_widgets_frame(video_frame_info_t *video_info) menu_texture_item volume_icon = 0; unsigned volume_width = video_info->width / 3; - unsigned volume_height = settings->floats.video_font_size * 4; + unsigned volume_height = video_font_size * 4; unsigned icon_size = menu_widgets_icons_textures[MENU_WIDGETS_ICON_VOLUME_MED] ? volume_height : simple_widget_padding; unsigned text_color = COLOR_TEXT_ALPHA(0xffffffff, (unsigned)(volume_text_alpha*255.0f)); unsigned text_color_db = COLOR_TEXT_ALPHA(text_color_faint, (unsigned)(volume_text_alpha*255.0f)); - unsigned bar_x = icon_size; - unsigned bar_height = settings->floats.video_font_size/2; - unsigned bar_width = volume_width - bar_x - simple_widget_padding; - unsigned bar_y = volume_height / 2 + bar_height/2; + unsigned bar_x = icon_size; + unsigned bar_height = video_font_size / 2; + unsigned bar_width = volume_width - bar_x - simple_widget_padding; + unsigned bar_y = volume_height / 2 + bar_height/2; - float *bar_background = NULL; - float *bar_foreground = NULL; - float bar_percentage = 0.0f; + float *bar_background = NULL; + float *bar_foreground = NULL; + float bar_percentage = 0.0f; if (volume_mute) - { volume_icon = menu_widgets_icons_textures[MENU_WIDGETS_ICON_VOLUME_MUTE]; - } else if (volume_percent <= 1.0f) { if (volume_percent <= 0.5f) @@ -1676,7 +1679,7 @@ void menu_widgets_frame(video_frame_info_t *video_info) const char *text = msg_hash_to_str(MSG_AUDIO_MUTED); menu_display_draw_text(font_regular, text, - volume_width/2, volume_height/2 + settings->floats.video_font_size/3, + volume_width/2, volume_height/2 + video_font_size / 3, video_info->width, video_info->height, text_color, TEXT_ALIGN_CENTER, 1, false, 0, false @@ -1712,7 +1715,7 @@ void menu_widgets_frame(video_frame_info_t *video_info) menu_display_draw_text(font_regular, msg, - volume_width - simple_widget_padding, settings->floats.video_font_size * 2, + volume_width - simple_widget_padding, video_font_size * 2, video_info->width, video_info->height, text_color_db, TEXT_ALIGN_RIGHT, @@ -1721,7 +1724,7 @@ void menu_widgets_frame(video_frame_info_t *video_info) menu_display_draw_text(font_regular, percentage_msg, - icon_size, settings->floats.video_font_size * 2, + icon_size, video_font_size * 2, video_info->width, video_info->height, text_color, TEXT_ALIGN_LEFT, @@ -1767,7 +1770,7 @@ void menu_widgets_frame(video_frame_info_t *video_info) menu_display_draw_text(font_regular, text, - top_right_x_advance - simple_widget_padding - text_width, settings->floats.video_font_size + simple_widget_padding/4, + top_right_x_advance - simple_widget_padding - text_width, video_font_size + simple_widget_padding/4, video_info->width, video_info->height, 0xFFFFFFFF, TEXT_ALIGN_LEFT, @@ -1861,7 +1864,8 @@ void menu_widgets_context_reset(bool is_threaded, char theme_path[PATH_MAX_LENGTH]; char ozone_path[PATH_MAX_LENGTH]; char font_path[PATH_MAX_LENGTH]; - settings_t *settings = config_get_ptr(); + settings_t *settings = config_get_ptr(); + float video_font_size = settings->floats.video_font_size; /* Textures paths */ fill_pathname_join( @@ -1919,24 +1923,24 @@ void menu_widgets_context_reset(bool is_threaded, if (settings->paths.path_font[0] == '\0') { fill_pathname_join(font_path, ozone_path, "regular.ttf", sizeof(font_path)); - font_regular = menu_display_font_file(font_path, settings->floats.video_font_size, is_threaded); + font_regular = menu_display_font_file(font_path, video_font_size, is_threaded); fill_pathname_join(font_path, ozone_path, "bold.ttf", sizeof(font_path)); - font_bold = menu_display_font_file(font_path, settings->floats.video_font_size, is_threaded); + font_bold = menu_display_font_file(font_path, video_font_size, is_threaded); } else { - font_regular = menu_display_font_file(settings->paths.path_font, settings->floats.video_font_size, is_threaded); - font_bold = menu_display_font_file(settings->paths.path_font, settings->floats.video_font_size, is_threaded); + font_regular = menu_display_font_file(settings->paths.path_font, video_font_size, is_threaded); + font_bold = menu_display_font_file(settings->paths.path_font, video_font_size, is_threaded); } /* Metrics */ - simple_widget_padding = settings->floats.video_font_size * 2/3; - simple_widget_height = settings->floats.video_font_size + simple_widget_padding; - glyph_width = font_driver_get_message_width(font_regular, "a", 1, 1); - line_height = font_driver_get_line_height(font_regular, 1); + simple_widget_padding = video_font_size * 2/3; + simple_widget_height = video_font_size + simple_widget_padding; + glyph_width = font_driver_get_message_width(font_regular, "a", 1, 1); + line_height = font_driver_get_line_height(font_regular, 1); - msg_queue_height = settings->floats.video_font_size * 2.5f; + msg_queue_height = video_font_size * 2.5f; if (msg_queue_has_icons) { @@ -1973,11 +1977,11 @@ void menu_widgets_context_reset(bool is_threaded, msg_queue_task_text_start_x -= msg_queue_glyph_width*2; msg_queue_regular_text_start = msg_queue_rect_start_x + msg_queue_regular_padding_x; - msg_queue_regular_text_base_y = settings->floats.video_font_size * msg_queue_text_scale_factor + msg_queue_height/2; + msg_queue_regular_text_base_y = video_font_size * msg_queue_text_scale_factor + msg_queue_height/2; msg_queue_task_hourglass_x = msg_queue_rect_start_x - msg_queue_icon_size_x; - generic_message_height = settings->floats.video_font_size * 2; + generic_message_height = video_font_size * 2; } void menu_widgets_context_destroy(void) @@ -1988,9 +1992,7 @@ void menu_widgets_context_destroy(void) /* Textures */ for (i = 0; i < MENU_WIDGETS_ICON_LAST; i++) - { video_driver_texture_unload(&menu_widgets_icons_textures[i]); - } video_driver_texture_unload(&msg_queue_icon); video_driver_texture_unload(&msg_queue_icon_outline); @@ -2112,10 +2114,10 @@ static void menu_widgets_volume_timer_end(void *userdata) void menu_widgets_volume_update_and_show(void) { + menu_timer_ctx_entry_t entry; settings_t *settings = config_get_ptr(); bool mute = *(audio_get_bool_ptr(AUDIO_ACTION_MUTE_ENABLE)); float new_volume = settings->floats.audio_volume; - menu_timer_ctx_entry_t entry; menu_animation_kill_by_tag(&volume_tag); @@ -2389,18 +2391,18 @@ static void menu_widgets_achievement_unfold(void *userdata) menu_timer_start(&cheevo_timer, &timer); } -static void menu_widgets_start_achievement_notification() +static void menu_widgets_start_achievement_notification(void) { - settings_t *settings = config_get_ptr(); menu_animation_ctx_entry_t entry; - cheevo_height = settings->floats.video_font_size * 4; - cheevo_width = MAX( + settings_t *settings = config_get_ptr(); + cheevo_height = settings->floats.video_font_size * 4; + cheevo_width = MAX( font_driver_get_message_width(font_regular, msg_hash_to_str(MSG_ACHIEVEMENT_UNLOCKED), 0, 1), font_driver_get_message_width(font_regular, cheevo_title, 0, 1) ); - cheevo_width += simple_widget_padding * 2; - cheevo_y = (float)(-(int)cheevo_height); - cheevo_unfold = 0.0f; + cheevo_width += simple_widget_padding * 2; + cheevo_y = (float)(-(int)cheevo_height); + cheevo_unfold = 0.0f; /* Slide down animation */ entry.cb = menu_widgets_achievement_unfold; @@ -2449,8 +2451,8 @@ void menu_widgets_push_achievement(const char *title, const char *badge) static void menu_widgets_generic_message_fadeout(void *userdata) { - menu_animation_ctx_tag tag = (uintptr_t) &generic_message_timer; menu_animation_ctx_entry_t entry; + menu_animation_ctx_tag tag = (uintptr_t) &generic_message_timer; /* Start fade out animation */ entry.cb = NULL; @@ -2466,8 +2468,8 @@ static void menu_widgets_generic_message_fadeout(void *userdata) void menu_widgets_set_message(char *msg) { - menu_animation_ctx_tag tag = (uintptr_t) &generic_message_timer; menu_timer_ctx_entry_t timer; + menu_animation_ctx_tag tag = (uintptr_t) &generic_message_timer; strlcpy(generic_message, msg, GENERIC_MESSAGE_SIZE); @@ -2486,8 +2488,8 @@ void menu_widgets_set_message(char *msg) static void menu_widgets_libretro_message_fadeout(void *userdata) { - menu_animation_ctx_tag tag = (uintptr_t) &libretro_message_timer; menu_animation_ctx_entry_t entry; + menu_animation_ctx_tag tag = (uintptr_t) &libretro_message_timer; /* Start fade out animation */ entry.cb = NULL; @@ -2503,8 +2505,8 @@ static void menu_widgets_libretro_message_fadeout(void *userdata) void menu_widgets_set_libretro_message(const char *msg, unsigned duration) { - menu_animation_ctx_tag tag = (uintptr_t) &libretro_message_timer; menu_timer_ctx_entry_t timer; + menu_animation_ctx_tag tag = (uintptr_t) &libretro_message_timer; strlcpy(libretro_message, msg, LIBRETRO_MESSAGE_SIZE); From 88ee7cbfa84dc6f61b5f0963a334296b1c683feb Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 12 Jan 2020 21:33:00 +0100 Subject: [PATCH 039/148] Add HAVE_ACCESSIBILITY switch --- Makefile.common | 5 ++ menu/drivers/menu_generic.c | 23 +++++++-- menu/widgets/menu_widgets.c | 4 +- pkg/apple/RetroArch.xcodeproj/project.pbxproj | 2 + .../project.pbxproj | 2 + .../RetroArch_PPC.xcodeproj/project.pbxproj | 2 + qb/config.params.sh | 1 + retroarch.c | 49 +++++++++++++++---- retroarch.h | 9 ---- 9 files changed, 72 insertions(+), 25 deletions(-) diff --git a/Makefile.common b/Makefile.common index ba02e642bf..bd0f504e88 100644 --- a/Makefile.common +++ b/Makefile.common @@ -1748,6 +1748,11 @@ ifeq ($(HAVE_V4L2),1) LIBS += $(V4L2_LIBS) endif +# Accessibility +ifeq ($(HAVE_ACCESSIBILITY), 1) + DEFINES += -DHAVE_ACCESSIBILITY +endif + # Things that depend on network availability ifeq ($(HAVE_NETWORKING), 1) diff --git a/menu/drivers/menu_generic.c b/menu/drivers/menu_generic.c index 19753ab608..f568f8ba0a 100644 --- a/menu/drivers/menu_generic.c +++ b/menu/drivers/menu_generic.c @@ -27,6 +27,9 @@ #include "../../verbosity.h" #include "../../content.h" +#ifdef HAVE_ACCESSIBILITY +#include "../../accessibility.h" +#endif #include "../../retroarch.h" static enum action_iterate_type action_iterate_type(const char *label) @@ -77,6 +80,8 @@ int generic_menu_iterate(void *data, void *userdata, enum menu_action action) const char *label = NULL; menu_handle_t *menu = (menu_handle_t*)data; + (void)last_iterate_type; + if (!menu) return 0; @@ -100,10 +105,10 @@ int generic_menu_iterate(void *data, void *userdata, enum menu_action action) ret = menu_dialog_iterate( menu->menu_state_msg, sizeof(menu->menu_state_msg), label); +#ifdef HAVE_ACCESSIBILITY if (iterate_type != last_iterate_type && is_accessibility_enabled()) - { accessibility_speak(menu->menu_state_msg); - } +#endif BIT64_SET(menu->state, MENU_STATE_RENDER_MESSAGEBOX); BIT64_SET(menu->state, MENU_STATE_POST_ITERATE); @@ -149,6 +154,8 @@ int generic_menu_iterate(void *data, void *userdata, enum menu_action action) { ret = menu_hash_get_help_enum(cbs->enum_idx, menu->menu_state_msg, sizeof(menu->menu_state_msg)); + +#ifdef HAVE_ACCESSIBILITY if (iterate_type != last_iterate_type && is_accessibility_enabled()) { if (string_is_equal(menu->menu_state_msg, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE))) @@ -163,6 +170,7 @@ int generic_menu_iterate(void *data, void *userdata, enum menu_action action) else accessibility_speak(menu->menu_state_msg); } +#endif } else { @@ -278,10 +286,10 @@ int generic_menu_iterate(void *data, void *userdata, enum menu_action action) break; } +#ifdef HAVE_ACCESSIBILITY if ((last_iterate_type == ITERATE_TYPE_HELP || last_iterate_type == ITERATE_TYPE_INFO) && last_iterate_type != iterate_type && is_accessibility_enabled()) - { accessibility_speak("Closed dialog."); - } +#endif last_iterate_type = iterate_type; BIT64_SET(menu->state, MENU_STATE_BLIT); @@ -414,7 +422,10 @@ int generic_menu_entry_action( } } - if (action != 0 && is_accessibility_enabled() && !is_input_keyboard_display_on()) +#ifdef HAVE_ACCESSIBILITY + if ( action != 0 + && is_accessibility_enabled() + && !is_input_keyboard_display_on()) { char current_label[255]; char current_value[255]; @@ -465,5 +476,7 @@ int generic_menu_entry_action( if (!string_is_equal(speak_string, "")) accessibility_speak(speak_string); } +#endif + return ret; } diff --git a/menu/widgets/menu_widgets.c b/menu/widgets/menu_widgets.c index 4ea9a22a88..a3209a810a 100644 --- a/menu/widgets/menu_widgets.c +++ b/menu/widgets/menu_widgets.c @@ -332,10 +332,10 @@ void menu_widgets_msg_queue_push( { menu_widget_msg_t* msg_widget = NULL; +#ifdef HAVE_ACCESSIBILITY if (is_accessibility_enabled()) - { accessibility_speak_priority((char*)msg, 0); - } +#endif if (fifo_write_avail(msg_queue) > 0) { /* Get current msg if it exists */ diff --git a/pkg/apple/RetroArch.xcodeproj/project.pbxproj b/pkg/apple/RetroArch.xcodeproj/project.pbxproj index 0f02efc5a2..d0e03ed21c 100644 --- a/pkg/apple/RetroArch.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch.xcodeproj/project.pbxproj @@ -507,6 +507,7 @@ OTHER_CFLAGS = ( "-DHAVE_RUNAHEAD", "-DHAVE_TRANSLATE", + "-DHAVE_ACCESSIBILITY", "-DHAVE_SSL", "-DHAVE_BUILTINMBEDTLS", "-DHAVE_GRIFFIN", @@ -580,6 +581,7 @@ OTHER_CFLAGS = ( "-DHAVE_RUNAHEAD", "-DHAVE_TRANSLATE", + "-DHAVE_ACCESSIBILITY", "-DHAVE_SSL", "-DHAVE_BUILTINMBEDTLS", "-DHAVE_GRIFFIN", diff --git a/pkg/apple/RetroArch_OSX107.xcodeproj/project.pbxproj b/pkg/apple/RetroArch_OSX107.xcodeproj/project.pbxproj index 010450e483..e9cc1207c0 100644 --- a/pkg/apple/RetroArch_OSX107.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch_OSX107.xcodeproj/project.pbxproj @@ -555,6 +555,7 @@ OTHER_CFLAGS = ( "-DHAVE_RUNAHEAD", "-DHAVE_TRANSLATE", + "-DHAVE_ACCESSIBILITY", "-DHAVE_SSL", "-DHAVE_BUILTINMBEDTLS", "-DHAVE_GRIFFIN", @@ -632,6 +633,7 @@ OTHER_CFLAGS = ( "-DHAVE_RUNAHEAD", "-DHAVE_TRANSLATE", + "-DHAVE_ACCESSIBILITY", "-DHAVE_SSL", "-DHAVE_BUILTINMBEDTLS", "-DHAVE_GRIFFIN", diff --git a/pkg/apple/RetroArch_PPC.xcodeproj/project.pbxproj b/pkg/apple/RetroArch_PPC.xcodeproj/project.pbxproj index cadd7950f1..f8d24bb17f 100644 --- a/pkg/apple/RetroArch_PPC.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch_PPC.xcodeproj/project.pbxproj @@ -292,6 +292,7 @@ "-DMSB_FIRST", "-DHAVE_RUNAHEAD", "-DHAVE_TRANSLATE", + "-DHAVE_ACCESSIBILITY", "-DHAVE_GRIFFIN", "-DHAVE_MINIUPNPC", "-DHAVE_BUILTINMINIUPNPC", @@ -374,6 +375,7 @@ "-DMSB_FIRST", "-DHAVE_RUNAHEAD", "-DHAVE_TRANSLATE", + "-DHAVE_ACCESSIBILITY", "-DHAVE_GRIFFIN", "-DHAVE_MINIUPNPC", "-DHAVE_BUILTINMINIUPNPC", diff --git a/qb/config.params.sh b/qb/config.params.sh index 9adbce566d..9c8c38f660 100644 --- a/qb/config.params.sh +++ b/qb/config.params.sh @@ -135,6 +135,7 @@ HAVE_CHEEVOS=yes # Retro Achievements HAVE_LUA=no # Lua support (for Retro Achievements) HAVE_DISCORD=yes # Discord Integration C89_DISCORD=no +HAVE_ACCESSIBILITY=yes # Accessibility Integration HAVE_TRANSLATE=yes # OCR and Translation Server Integration HAVE_SHADERPIPELINE=yes # Additional shader-based pipelines C89_SHADERPIPELINE=no diff --git a/retroarch.c b/retroarch.c index c96a828a09..c6ff5ee276 100644 --- a/retroarch.c +++ b/retroarch.c @@ -228,6 +228,10 @@ #include "runahead/mem_util.h" #endif +#ifdef HAVE_ACCESSIBILITY +#include "accessibility.h" +#endif + #ifdef HAVE_THREADS #include "audio/audio_thread_wrapper.h" #endif @@ -2476,8 +2480,10 @@ void dir_check_defaults(void) } } +#ifdef HAVE_ACCESSIBILITY /* Is text-to-speech accessibility turned on? */ static bool accessibility_enabled = false; +#endif #ifdef HAVE_MENU /* MENU INPUT GLOBAL VARIABLES */ @@ -2600,10 +2606,11 @@ bool menu_input_dialog_start_search(void) input_keyboard_ctl(RARCH_INPUT_KEYBOARD_CTL_LINE_FREE, NULL); +#ifdef HAVE_ACCESSIBILITY if (is_accessibility_enabled()) - { - accessibility_speak((char*) msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SEARCH)); - } + accessibility_speak((char*) + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SEARCH)); +#endif menu_input_dialog_keyboard_buffer = input_keyboard_start_line(menu, menu_input_search_cb); @@ -2633,7 +2640,9 @@ bool menu_input_dialog_start(menu_input_ctx_line_t *line) input_keyboard_ctl(RARCH_INPUT_KEYBOARD_CTL_LINE_FREE, NULL); +#ifdef HAVE_ACCESSIBILITY accessibility_speak("Keyboard input:"); +#endif menu_input_dialog_keyboard_buffer = input_keyboard_start_line(menu, line->cb); @@ -4621,8 +4630,10 @@ static void handle_translation_cb( } #endif +#ifdef HAVE_ACCESSIBILITY if (text_string && is_accessibility_enabled()) accessibility_speak(text_string); +#endif finish: if (error) @@ -6551,8 +6562,10 @@ bool command_event(enum event_command cmd, void *data) } else { +#ifdef HAVE_ACCESSIBILITY if (is_accessibility_enabled()) accessibility_speak((char*) msg_hash_to_str(MSG_UNPAUSED)); +#endif command_event(CMD_EVENT_UNPAUSE, NULL); } } @@ -7254,6 +7267,8 @@ TODO: Add a setting for these tweaks */ case CMD_EVENT_PAUSE_TOGGLE: boolean = runloop_paused; boolean = !boolean; + +#ifdef HAVE_ACCESSIBILITY if (is_accessibility_enabled()) { if (boolean) @@ -7261,6 +7276,7 @@ TODO: Add a setting for these tweaks */ else accessibility_speak((char*) msg_hash_to_str(MSG_UNPAUSED)); } +#endif runloop_paused = boolean; retroarch_pause_checks(); @@ -7722,12 +7738,16 @@ TODO: Add a setting for these tweaks */ if (settings->uints.ai_service_mode == 1 && is_ai_service_speech_running()) { ai_service_speech_stop(); +#ifdef HAVE_ACCESSIBILITY if (is_accessibility_enabled()) accessibility_speak("stopped."); +#endif } +#ifdef HAVE_ACCESSIBILITY else if (is_accessibility_enabled() && settings->uints.ai_service_mode == 2 && is_narrator_running()) accessibility_speak("stopped."); +#endif else { RARCH_LOG("AI Service Called...\n"); @@ -16758,6 +16778,7 @@ void input_keyboard_event(bool down, unsigned code, uint32_t character, uint16_t mod, unsigned device) { static bool deferred_wait_keys; +#ifdef HAVE_ACCESSIBILITY #ifdef HAVE_MENU if (menu_input_dialog_get_display_kb() && down && is_accessibility_enabled()) @@ -16844,6 +16865,7 @@ void input_keyboard_event(bool down, unsigned code, } } } +#endif #endif if (deferred_wait_keys) @@ -25090,7 +25112,9 @@ static void retroarch_parse_input_and_config(int argc, char *argv[]) retroarch_print_help(argv[0]); retroarch_fail(1, "retroarch_parse_input()"); case RA_OPT_ACCESSIBILITY: +#ifdef HAVE_ACCESSIBILITY accessibility_enabled = true; +#endif break; default: RARCH_ERR("%s\n", msg_hash_to_str(MSG_ERROR_PARSING_ARGUMENTS)); @@ -25290,8 +25314,10 @@ bool retroarch_main_init(int argc, char *argv[]) retroarch_parse_input_and_config(argc, argv); +#ifdef HAVE_ACCESSIBILITY if (is_accessibility_enabled()) accessibility_startup_message(); +#endif if (verbosity_is_enabled()) { @@ -26601,8 +26627,10 @@ void runloop_msg_queue_push(const char *msg, enum message_queue_category category) { runloop_msg_queue_lock(); +#ifdef HAVE_ACCESSIBILITY if (is_accessibility_enabled()) accessibility_speak_priority((char*) msg, 0); +#endif #if defined(HAVE_MENU) && defined(HAVE_MENU_WIDGETS) if (menu_widgets_inited) { @@ -29267,6 +29295,7 @@ unsigned int retroarch_get_rotation(void) } +#ifdef HAVE_ACCESSIBILITY /* Accessibility */ int speak_pid = 0; @@ -29277,6 +29306,7 @@ bool is_accessibility_enabled(void) return true; return false; } +#endif bool is_input_keyboard_display_on(void) { @@ -29287,11 +29317,12 @@ bool is_input_keyboard_display_on(void) #endif } +#ifdef HAVE_ACCESSIBILITY bool accessibility_speak(const char* speak_text) { return accessibility_speak_priority(speak_text, 10); } - +#endif #if defined(__MACH__) && defined(__APPLE__) #include @@ -29300,6 +29331,8 @@ bool accessibility_speak(const char* speak_text) #endif #endif +#ifdef HAVE_ACCESSIBILITY + #if defined(_IS_OSX) static char* accessibility_mac_language_code(const char* language) { @@ -29442,7 +29475,6 @@ static bool accessibility_speak_macos( #endif #if defined(_WIN32) && !defined(_XBOX) && !defined(__WINRT__) && !defined(EMSCRIPTEN) - static const char *accessibility_win_language_code(const char* language) { if (string_is_equal(language,"en")) @@ -29589,8 +29621,6 @@ static bool accessibility_speak_windows( #endif #if (defined(__linux__) || defined(__unix__)) && !defined(EMSCRIPTEN) - - bool is_narrator_running_linux(void) { if (kill(speak_pid, 0) == 0) @@ -29710,8 +29740,8 @@ bool is_narrator_running(void) return true; } - -bool accessibility_speak_ai_service(const char* speak_text, const char* language, int priority) +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. */ @@ -29760,3 +29790,4 @@ bool accessibility_startup_message(void) accessibility_speak("RetroArch accessibility on. Main Menu Load Core."); return true; } +#endif diff --git a/retroarch.h b/retroarch.h index c9d03648d5..6a2079dbe8 100644 --- a/retroarch.h +++ b/retroarch.h @@ -2020,15 +2020,6 @@ bool menu_widgets_ready(void); unsigned int retroarch_get_rotation(void); bool is_input_keyboard_display_on(void); -bool is_accessibility_enabled(void); -bool accessibility_speak(const char* speak_text); -bool accessibility_speak_priority(const char* speak_text, int priority); -bool accessibility_startup_message(void); - -bool is_narrator_running(void); - -bool accessibility_speak_ai_service( - const char* speak_text, const char* voice, int priority); RETRO_END_DECLS From 34a922433478310a8a9a4111225d222af9632ece Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 12 Jan 2020 21:34:31 +0100 Subject: [PATCH 040/148] Add accessibility.h --- accessibility.h | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 accessibility.h diff --git a/accessibility.h b/accessibility.h new file mode 100644 index 0000000000..33ebc44009 --- /dev/null +++ b/accessibility.h @@ -0,0 +1,51 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#ifndef __RETROARCH_ACCESSIBILITY_H +#define __RETROARCH_ACCESSIBILITY_H + +#include +#include +#include +#include + +#include +#include +#include + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + + +RETRO_BEGIN_DECLS + +bool is_accessibility_enabled(void); + +bool accessibility_speak(const char* speak_text); + +bool accessibility_speak_priority(const char* speak_text, int priority); + +bool accessibility_startup_message(void); + +bool is_narrator_running(void); + +bool accessibility_speak_ai_service( + const char* speak_text, const char* voice, int priority); + +RETRO_END_DECLS + +#endif From 682d8f23e9c6450f254f3e0871b2ba8a40062ec4 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 12 Jan 2020 21:38:30 +0100 Subject: [PATCH 041/148] Strip out accessibility settings in menu if HAVE_ACCESSIBILITY is not defined --- menu/menu_setting.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 867b2565e6..7dde827f93 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -8000,6 +8000,7 @@ static bool setting_append_list( &subgroup_info, parent_group); +#ifdef HAVE_ACCESSIBILITY CONFIG_ACTION( list, list_info, MENU_ENUM_LABEL_ACCESSIBILITY_SETTINGS, @@ -8007,6 +8008,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group); +#endif CONFIG_ACTION( list, list_info, From 5b8411fe77fa785795a9fb52f58a6bbfd9b9fad4 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 12 Jan 2020 21:46:28 +0100 Subject: [PATCH 042/148] Silence implicit definition warnings --- menu/widgets/menu_widgets.c | 32 ++++++++++++++++++-------------- menu/widgets/menu_widgets.h | 13 +++++++------ 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/menu/widgets/menu_widgets.c b/menu/widgets/menu_widgets.c index a3209a810a..dd6a4d9df9 100644 --- a/menu/widgets/menu_widgets.c +++ b/menu/widgets/menu_widgets.c @@ -15,8 +15,20 @@ * If not, see . */ +#include + +#include +#include +#include +#include +#include + #include "menu_widgets.h" +#ifdef HAVE_ACCESSIBILITY +#include "../../accessibility.h" +#endif + #include "../../verbosity.h" #include "../../retroarch.h" #include "../../configuration.h" @@ -30,14 +42,6 @@ #include "../../gfx/font_driver.h" -#include -#include -#include -#include -#include -#include -#include - #ifndef PI #define PI 3.14159265359f #endif @@ -1341,14 +1345,14 @@ static void menu_widgets_draw_load_content_animation(video_frame_info_t *video_i menu_widgets_draw_backdrop(video_info, load_content_animation_final_fade_alpha); } - -void menu_widgets_frame(video_frame_info_t *video_info) +void menu_widgets_frame(void *data) { size_t i; - int top_right_x_advance = video_info->width; - int scissor_me_timbers = 0; - settings_t *settings = config_get_ptr(); - float video_font_size = settings->floats.video_font_size; + video_frame_info_t *video_info = (video_frame_info_t*)data; + int top_right_x_advance = video_info->width; + int scissor_me_timbers = 0; + settings_t *settings = config_get_ptr(); + float video_font_size = settings->floats.video_font_size; menu_widgets_frame_count++; diff --git a/menu/widgets/menu_widgets.h b/menu/widgets/menu_widgets.h index 453efa100f..287bd21cdc 100644 --- a/menu/widgets/menu_widgets.h +++ b/menu/widgets/menu_widgets.h @@ -16,11 +16,10 @@ #ifndef _MENU_WIDGETS_H #define _MENU_WIDGETS_H +#include #include #include -#include "../../retroarch.h" - #define DEFAULT_BACKDROP 0.75f #define MSG_QUEUE_PENDING_MAX 32 @@ -60,11 +59,13 @@ int menu_widgets_ai_service_overlay_get_state(void); bool menu_widgets_ai_service_overlay_set_state(int state); bool menu_widgets_ai_service_overlay_load( - char* buffer, unsigned buffer_len, enum image_type_enum image_type); + char* buffer, unsigned buffer_len, + enum image_type_enum image_type); + void menu_widgets_ai_service_overlay_unload(void); - -void menu_widgets_start_load_content_animation(const char *content_name, bool remove_extension); +void menu_widgets_start_load_content_animation( + const char *content_name, bool remove_extension); void menu_widgets_cleanup_load_content_animation(void); @@ -84,7 +85,7 @@ void menu_widgets_set_libretro_message(const char *message, unsigned duration); /* All the functions below should be called in * the video driver - once they are all added, set * enable_menu_widgets to true for that driver */ -void menu_widgets_frame(video_frame_info_t *video_info); +void menu_widgets_frame(void *data); bool menu_widgets_set_fps_text(const char *new_fps_text); From b8328a9fdfe04469655fa15010c11e7bcd549b66 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 12 Jan 2020 22:04:31 +0100 Subject: [PATCH 043/148] (Accessibility) Cleanups --- accessibility.h | 9 --- menu/drivers/menu_generic.c | 12 ++-- retroarch.c | 127 ++++++++++++++++++------------------ 3 files changed, 71 insertions(+), 77 deletions(-) diff --git a/accessibility.h b/accessibility.h index 33ebc44009..f43107a206 100644 --- a/accessibility.h +++ b/accessibility.h @@ -35,17 +35,8 @@ RETRO_BEGIN_DECLS bool is_accessibility_enabled(void); -bool accessibility_speak(const char* speak_text); - bool accessibility_speak_priority(const char* speak_text, int priority); -bool accessibility_startup_message(void); - -bool is_narrator_running(void); - -bool accessibility_speak_ai_service( - const char* speak_text, const char* voice, int priority); - RETRO_END_DECLS #endif diff --git a/menu/drivers/menu_generic.c b/menu/drivers/menu_generic.c index f568f8ba0a..20976955ed 100644 --- a/menu/drivers/menu_generic.c +++ b/menu/drivers/menu_generic.c @@ -107,7 +107,7 @@ int generic_menu_iterate(void *data, void *userdata, enum menu_action action) #ifdef HAVE_ACCESSIBILITY if (iterate_type != last_iterate_type && is_accessibility_enabled()) - accessibility_speak(menu->menu_state_msg); + accessibility_speak_priority(menu->menu_state_msg, 10); #endif BIT64_SET(menu->state, MENU_STATE_RENDER_MESSAGEBOX); @@ -163,12 +163,12 @@ int generic_menu_iterate(void *data, void *userdata, enum menu_action action) char current_sublabel[255]; get_current_menu_sublabel(current_sublabel, sizeof(current_sublabel)); if (string_is_equal(current_sublabel, "")) - accessibility_speak(menu->menu_state_msg); + accessibility_speak_priority(menu->menu_state_msg, 10); else - accessibility_speak(current_sublabel); + accessibility_speak_priority(current_sublabel, 10); } else - accessibility_speak(menu->menu_state_msg); + accessibility_speak_priority(menu->menu_state_msg, 10); } #endif } @@ -288,7 +288,7 @@ int generic_menu_iterate(void *data, void *userdata, enum menu_action action) #ifdef HAVE_ACCESSIBILITY if ((last_iterate_type == ITERATE_TYPE_HELP || last_iterate_type == ITERATE_TYPE_INFO) && last_iterate_type != iterate_type && is_accessibility_enabled()) - accessibility_speak("Closed dialog."); + accessibility_speak_priority("Closed dialog.", 10); #endif last_iterate_type = iterate_type; @@ -474,7 +474,7 @@ int generic_menu_entry_action( } if (!string_is_equal(speak_string, "")) - accessibility_speak(speak_string); + accessibility_speak_priority(speak_string, 10); } #endif diff --git a/retroarch.c b/retroarch.c index c6ff5ee276..d3fa27746a 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1172,6 +1172,10 @@ static const void *joypad_driver_find_handle(int idx); #ifdef HAVE_HID static const void *hid_driver_find_handle(int idx); #endif +#ifdef HAVE_ACCESSIBILITY +static bool is_narrator_running(void); +static bool accessibility_startup_message(void); +#endif static bool midi_driver_read(uint8_t *byte); static bool midi_driver_write(uint8_t byte, uint32_t delta_time); @@ -2608,8 +2612,8 @@ bool menu_input_dialog_start_search(void) #ifdef HAVE_ACCESSIBILITY if (is_accessibility_enabled()) - accessibility_speak((char*) - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SEARCH)); + accessibility_speak_priority((char*) + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SEARCH), 10); #endif menu_input_dialog_keyboard_buffer = @@ -2641,7 +2645,7 @@ bool menu_input_dialog_start(menu_input_ctx_line_t *line) input_keyboard_ctl(RARCH_INPUT_KEYBOARD_CTL_LINE_FREE, NULL); #ifdef HAVE_ACCESSIBILITY - accessibility_speak("Keyboard input:"); + accessibility_speak_priority("Keyboard input:", 10); #endif menu_input_dialog_keyboard_buffer = @@ -4632,7 +4636,7 @@ static void handle_translation_cb( #ifdef HAVE_ACCESSIBILITY if (text_string && is_accessibility_enabled()) - accessibility_speak(text_string); + accessibility_speak_priority(text_string, 10); #endif finish: @@ -5084,7 +5088,7 @@ static bool run_translation_service(void) settings->arrays.ai_service_url, sizeof(new_ai_service_url)); /* if query already exists in url, then use &'s instead */ - if (strrchr(new_ai_service_url, '?') != NULL) + if (strrchr(new_ai_service_url, '?')) separator = '&'; /* source lang */ @@ -6564,7 +6568,7 @@ bool command_event(enum event_command cmd, void *data) { #ifdef HAVE_ACCESSIBILITY if (is_accessibility_enabled()) - accessibility_speak((char*) msg_hash_to_str(MSG_UNPAUSED)); + accessibility_speak_priority((char*) msg_hash_to_str(MSG_UNPAUSED), 10); #endif command_event(CMD_EVENT_UNPAUSE, NULL); } @@ -7272,9 +7276,9 @@ TODO: Add a setting for these tweaks */ if (is_accessibility_enabled()) { if (boolean) - accessibility_speak((char*) msg_hash_to_str(MSG_PAUSED)); + accessibility_speak_priority((char*) msg_hash_to_str(MSG_PAUSED), 10); else - accessibility_speak((char*) msg_hash_to_str(MSG_UNPAUSED)); + accessibility_speak_priority((char*) msg_hash_to_str(MSG_UNPAUSED), 10); } #endif @@ -7740,13 +7744,13 @@ TODO: Add a setting for these tweaks */ ai_service_speech_stop(); #ifdef HAVE_ACCESSIBILITY if (is_accessibility_enabled()) - accessibility_speak("stopped."); + accessibility_speak_priority("stopped.", 10); #endif } #ifdef HAVE_ACCESSIBILITY else if (is_accessibility_enabled() && settings->uints.ai_service_mode == 2 && is_narrator_running()) - accessibility_speak("stopped."); + accessibility_speak_priority("stopped.", 10); #endif else { @@ -16786,81 +16790,81 @@ void input_keyboard_event(bool down, unsigned code, if (code != 303 && code != 0) { char* say_char = (char*) malloc(sizeof(char)+1); - if (say_char != NULL) + if (say_char) { char c = (char) character; *say_char = c; if (character == 127) - accessibility_speak("backspace"); + accessibility_speak_priority("backspace", 10); else if (c == '`') - accessibility_speak("left quote"); + accessibility_speak_priority("left quote", 10); else if (c == '`') - accessibility_speak("tilde"); + accessibility_speak_priority("tilde", 10); else if (c == '!') - accessibility_speak("exclamation point"); + accessibility_speak_priority("exclamation point", 10); else if (c == '@') - accessibility_speak("at sign"); + accessibility_speak_priority("at sign", 10); else if (c == '#') - accessibility_speak("hash sign"); + accessibility_speak_priority("hash sign", 10); else if (c == '$') - accessibility_speak("dollar sign"); + accessibility_speak_priority("dollar sign", 10); else if (c == '%') - accessibility_speak("percent sign"); + accessibility_speak_priority("percent sign", 10); else if (c == '^') - accessibility_speak("carrot"); + accessibility_speak_priority("carrot", 10); else if (c == '&') - accessibility_speak("ampersand"); + accessibility_speak_priority("ampersand", 10); else if (c == '*') - accessibility_speak("asterisk"); + accessibility_speak_priority("asterisk", 10); else if (c == '(') - accessibility_speak("left bracket"); + accessibility_speak_priority("left bracket", 10); else if (c == ')') - accessibility_speak("right bracket"); + accessibility_speak_priority("right bracket", 10); else if (c == '-') - accessibility_speak("minus"); + accessibility_speak_priority("minus", 10); else if (c == '_') - accessibility_speak("underscore"); + accessibility_speak_priority("underscore", 10); else if (c == '=') - accessibility_speak("equals"); + accessibility_speak_priority("equals", 10); else if (c == '+') - accessibility_speak("plus"); + accessibility_speak_priority("plus", 10); else if (c == '[') - accessibility_speak("left square bracket"); + accessibility_speak_priority("left square bracket", 10); else if (c == '{') - accessibility_speak("left curl bracket"); + accessibility_speak_priority("left curl bracket", 10); else if (c == ']') - accessibility_speak("right square bracket"); + accessibility_speak_priority("right square bracket", 10); else if (c == '}') - accessibility_speak("right curl bracket"); + accessibility_speak_priority("right curl bracket", 10); else if (c == '\\') - accessibility_speak("back slash"); + accessibility_speak_priority("back slash", 10); else if (c == '|') - accessibility_speak("pipe"); + accessibility_speak_priority("pipe", 10); else if (c == ';') - accessibility_speak("semicolon"); + accessibility_speak_priority("semicolon", 10); else if (c == ':') - accessibility_speak("colon"); + accessibility_speak_priority("colon", 10); else if (c == '\'') - accessibility_speak("single quote"); + accessibility_speak_priority("single quote", 10); else if (c == '\"') - accessibility_speak("double quote"); + accessibility_speak_priority("double quote", 10); else if (c == ',') - accessibility_speak("comma"); + accessibility_speak_priority("comma", 10); else if (c == '<') - accessibility_speak("left angle bracket"); + accessibility_speak_priority("left angle bracket", 10); else if (c == '.') - accessibility_speak("period"); + accessibility_speak_priority("period", 10); else if (c == '>') - accessibility_speak("right angle bracket"); + accessibility_speak_priority("right angle bracket", 10); else if (c == '/') - accessibility_speak("front slash"); + accessibility_speak_priority("front slash", 10); else if (c == '?') - accessibility_speak("question mark"); + accessibility_speak_priority("question mark", 10); else if (c == ' ') - accessibility_speak("space"); + accessibility_speak_priority("space", 10); else if (character != 0) - accessibility_speak(say_char); + accessibility_speak_priority(say_char, 10); free(say_char); } } @@ -29297,7 +29301,7 @@ unsigned int retroarch_get_rotation(void) #ifdef HAVE_ACCESSIBILITY /* Accessibility */ -int speak_pid = 0; +static int speak_pid = 0; bool is_accessibility_enabled(void) { @@ -29317,13 +29321,6 @@ bool is_input_keyboard_display_on(void) #endif } -#ifdef HAVE_ACCESSIBILITY -bool accessibility_speak(const char* speak_text) -{ - return accessibility_speak_priority(speak_text, 10); -} -#endif - #if defined(__MACH__) && defined(__APPLE__) #include #if TARGET_OS_OSX && !defined(EMSCRIPTEN) @@ -29400,7 +29397,7 @@ static char* accessibility_mac_language_code(const char* language) return ""; } -bool is_narrator_running_macos(void) +static bool is_narrator_running_macos(void) { if (kill(speak_pid, 0) == 0) return true; @@ -29621,14 +29618,14 @@ static bool accessibility_speak_windows( #endif #if (defined(__linux__) || defined(__unix__)) && !defined(EMSCRIPTEN) -bool is_narrator_running_linux(void) +static bool is_narrator_running_linux(void) { if (kill(speak_pid, 0) == 0) return true; return false; } -bool accessibility_speak_linux( +static bool accessibility_speak_linux( const char* speak_text, const char* language, int priority) { int pid; @@ -29725,7 +29722,8 @@ bool accessibility_speak_priority(const char* speak_text, int priority) return true; } -bool is_narrator_running(void) +#ifdef HAVE_ACCESSIBILITY +static bool is_narrator_running(void) { if (is_accessibility_enabled()) { @@ -29739,8 +29737,10 @@ bool is_narrator_running(void) } return true; } +#endif -bool accessibility_speak_ai_service( +#if 0 +static bool accessibility_speak_ai_service( const char* speak_text, const char* language, int priority) { #if defined(HAVE_NETWORKING) && defined(HAVE_TRANSLATE) @@ -29758,7 +29758,7 @@ bool accessibility_speak_ai_service( strlcpy(new_ai_service_url, settings->arrays.ai_service_url, sizeof(new_ai_service_url)); - if (strrchr(new_ai_service_url, '?') != NULL) + if (strrchr(new_ai_service_url, '?')) separator = '&'; snprintf(temp_string, sizeof(temp_string), "%csource_lang=%s&target_lang=%s&output=espeak", @@ -29782,12 +29782,15 @@ bool accessibility_speak_ai_service( return false; #endif } +#endif -bool accessibility_startup_message(void) +static bool accessibility_startup_message(void) { /* 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."); + accessibility_speak_priority( + "RetroArch accessibility on. Main Menu Load Core.", + 10); return true; } #endif From 341a4d50eaf37c168587a354c6c3e85f37d1e226 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 12 Jan 2020 23:56:08 +0100 Subject: [PATCH 044/148] Buildfix --- retroarch.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/retroarch.c b/retroarch.c index d3fa27746a..21521b397b 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2487,6 +2487,17 @@ void dir_check_defaults(void) #ifdef HAVE_ACCESSIBILITY /* Is text-to-speech accessibility turned on? */ static bool accessibility_enabled = false; + +/* Accessibility */ +static int speak_pid = 0; + +bool is_accessibility_enabled(void) +{ + settings_t *settings = configuration_settings; + if (accessibility_enabled || settings->bools.accessibility_enable) + return true; + return false; +} #endif #ifdef HAVE_MENU @@ -29299,19 +29310,6 @@ unsigned int retroarch_get_rotation(void) } -#ifdef HAVE_ACCESSIBILITY -/* Accessibility */ -static int speak_pid = 0; - -bool is_accessibility_enabled(void) -{ - settings_t *settings = configuration_settings; - if (accessibility_enabled || settings->bools.accessibility_enable) - return true; - return false; -} -#endif - bool is_input_keyboard_display_on(void) { #ifdef HAVE_MENU From 7874d179da29224a4dc5c5115bce3784ba0a6e04 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 13 Jan 2020 00:01:28 +0100 Subject: [PATCH 045/148] Simplify create_win32_process --- retroarch.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/retroarch.c b/retroarch.c index 21521b397b..4eeab4a483 100644 --- a/retroarch.c +++ b/retroarch.c @@ -29556,11 +29556,7 @@ static bool create_win32_process(char* cmd) if (!CreateProcess(NULL, cmd, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi)) - { - pi_set = false; return false; - } - pi_set = true; return true; } @@ -29610,7 +29606,10 @@ static bool accessibility_speak_windows( if (!res) { RARCH_LOG("Create subprocess failed. Error: %d\n", GetLastError()); + pi_set = false; + return true; } + pi_set = true; return true; } #endif From 46b62b4a63ab0a82809c28f668c855fbb55aa7e4 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 13 Jan 2020 08:28:26 +0100 Subject: [PATCH 046/148] Update Makefile --- Makefile.ps3 | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.ps3 b/Makefile.ps3 index 20af1ec4d7..f5d9444b3d 100644 --- a/Makefile.ps3 +++ b/Makefile.ps3 @@ -71,6 +71,7 @@ PPU_SRCS = griffin/griffin.c #DEFINES += -DHAVE_VIDEO_LAYOUT DEFINES += -DHAVE_MENU -DHAVE_MENU_WIDGETS -DHAVE_RGUI -DHAVE_XMB -DHAVE_OZONE -DHAVE_LIBRETRODB -DHAVE_MATERIALUI -DHAVE_SHADERPIPELINE -DRARCH_INTERNAL -DMSB_FIRST -DHAVE_OVERLAY -DHAVE_CC_RESAMPLER -DHAVE_STB_VORBIS -DHAVE_STB_FONT -DHAVE_RUNAHEAD -DHAVE_DR_MP3 -DHAVE_DR_FLAC +DEFINES += -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_UPDATE_CORES ifeq ($(DEX_BUILD), 1) DEFINES += -DDEX_BUILD From 19e86a2b198942a6e64eb93bc8886e8de5d8d0a4 Mon Sep 17 00:00:00 2001 From: orbea Date: Mon, 13 Jan 2020 09:17:00 -0800 Subject: [PATCH 047/148] qb: Allow multi argument CC and CXX. --- qb/qb.comp.sh | 50 ++++++++++++++++++++++++++++++++++++++------------ qb/qb.init.sh | 5 +++++ qb/qb.libs.sh | 12 ++++++++---- qb/qb.moc.sh | 16 +++++++++------- 4 files changed, 60 insertions(+), 23 deletions(-) diff --git a/qb/qb.comp.sh b/qb/qb.comp.sh index 2f86e6e743..582f2bc26b 100644 --- a/qb/qb.comp.sh +++ b/qb/qb.comp.sh @@ -15,19 +15,43 @@ cat << EOF > "$TEMP_C" int main(void) { puts("Hai world!"); return 0; } EOF +# test_compiler: +# Check that the compiler exists in the $PATH and works +# $1 = compiler +# $2 = temporary build file +test_compiler () +{ + compiler= + + for comp in $(printf %s "$1"); do + if ! next "$comp"; then + compiler="${compiler} $(exists "${comp}")" || + return 1 + fi + done + + $(printf %s "$1") -o "$TEMP_EXE" "$2" >/dev/null 2>&1 || return 1 + + compiler="${compiler# }" + cc_works=1 + return 0 +} + printf %s 'Checking for suitable working C compiler ... ' cc_works=0 add_opt CC no + if [ "$CC" ]; then - $CC -o "$TEMP_EXE" "$TEMP_C" >/dev/null 2>&1 && cc_works=1 + if test_compiler "$CC" "$TEMP_C"; then + cc_works=1 + fi else for cc in gcc cc clang; do - CC="$(exists "${CROSS_COMPILE}${cc}")" || CC="" - if [ "$CC" ]; then - $CC -o "$TEMP_EXE" "$TEMP_C" >/dev/null 2>&1 && { - cc_works=1; break - } + if test_compiler "${CROSS_COMPILE}${cc}" "$TEMP_C"; then + CC="$compiler" + cc_works=1 + break fi done fi @@ -58,15 +82,17 @@ printf %s 'Checking for suitable working C++ compiler ... ' cxx_works=0 add_opt CXX no + if [ "$CXX" ]; then - $CXX -o "$TEMP_EXE" "$TEMP_CXX" >/dev/null 2>&1 && cxx_works=1 + if test_compiler "$CXX" "$TEMP_CXX"; then + cxx_works=1 + fi else for cxx in g++ c++ clang++; do - CXX="$(exists "${CROSS_COMPILE}${cxx}")" || CXX="" - if [ "$CXX" ]; then - $CXX -o "$TEMP_EXE" "$TEMP_CXX" >/dev/null 2>&1 && { - cxx_works=1; break - } + if test_compiler "${CROSS_COMPILE}${cxx}" "$TEMP_CXX"; then + CXX="$compiler" + cxx_works=1 + break fi done fi diff --git a/qb/qb.init.sh b/qb/qb.init.sh index 9546b5784c..13b6cf9cc9 100644 --- a/qb/qb.init.sh +++ b/qb/qb.init.sh @@ -58,3 +58,8 @@ match() done return 1 } + +# next: +# Check if the next argument starts with a dash +# $1 = arg +next () { case "$1" in -*) return 0 ;; *) return 1 ;; esac; } diff --git a/qb/qb.libs.sh b/qb/qb.libs.sh index 535dfbc45e..044cd32a4c 100644 --- a/qb/qb.libs.sh +++ b/qb/qb.libs.sh @@ -164,7 +164,8 @@ check_lib() answer='no' printf %s "$MSG $lib ... " eval "set -- $INCLUDE_DIRS $LIBRARY_DIRS $5 $FLAGS $LDFLAGS $lib" - $COMPILER -o "$TEMP_EXE" "$TEMP_CODE" "$@" >>config.log 2>&1 && answer='yes' + $(printf %s "$COMPILER") -o "$TEMP_EXE" "$TEMP_CODE" "$@" \ + >>config.log 2>&1 && answer='yes' printf %s\\n "$answer" if [ "$answer" = 'yes' ] && [ "$include" ]; then @@ -282,7 +283,8 @@ check_header() answer='no' printf %s "Checking presence of header file $CHECKHEADER ... " eval "set -- $CFLAGS $INCLUDE_DIRS" - $CC -o "$TEMP_EXE" "$TEMP_C" "$@" >>config.log 2>&1 && answer='yes' + $(printf %s "$CC") -o "$TEMP_EXE" "$TEMP_C" "$@" >>config.log 2>&1 && + answer='yes' eval "HAVE_$val=\"$answer\"" printf %s\\n "$answer" rm -f -- "$TEMP_C" "$TEMP_EXE" @@ -318,7 +320,8 @@ EOF macro="$2" printf %s "Checking presence of predefined macro $macro$ECHOBUF ... " eval "set -- $CFLAGS $INCLUDE_DIRS" - $CC -o "$TEMP_EXE" "$TEMP_C" "$@" >>config.log 2>&1 && answer='yes' + $(printf %s "$CC") -o "$TEMP_EXE" "$TEMP_C" "$@" >>config.log 2>&1 && + answer='yes' eval "HAVE_$val=\"$answer\"" printf %s\\n "$answer" rm -f -- "$TEMP_C" "$TEMP_EXE" @@ -340,7 +343,8 @@ check_switch() printf %s\\n 'int main(void) { return 0; }' > "$TEMP_CODE" answer='no' printf %s "Checking for availability of switch $3 in $COMPILER ... " - $COMPILER -o "$TEMP_EXE" "$TEMP_CODE" "$3" >>config.log 2>&1 && answer='yes' + $(printf %s "$COMPILER") -o "$TEMP_EXE" "$TEMP_CODE" "$3" \ + >>config.log 2>&1 && answer='yes' eval "HAVE_$2=\"$answer\"" printf %s\\n "$answer" rm -f -- "$TEMP_CODE" "$TEMP_EXE" diff --git a/qb/qb.moc.sh b/qb/qb.moc.sh index 4b88601365..14ed2ffa8b 100644 --- a/qb/qb.moc.sh +++ b/qb/qb.moc.sh @@ -23,22 +23,24 @@ if [ "$HAVE_QT" = "yes" ]; then moc_works=0 if [ "$MOC" ]; then QT_SELECT="$QT_VERSION" \ - $MOC -o "$TEMP_CPP" "$TEMP_MOC" >/dev/null 2>&1 && - $CXX -o "$TEMP_EXE" $(printf %s "$QT_FLAGS") \ - -fPIC -c "$TEMP_CPP" >/dev/null 2>&1 && + "$MOC" -o "$TEMP_CPP" "$TEMP_MOC" >/dev/null 2>&1 && + $(printf %s "$CXX") -o "$TEMP_EXE" \ + $(printf %s "$QT_FLAGS") -fPIC -c "$TEMP_CPP" \ + >/dev/null 2>&1 && moc_works=1 else for moc in "moc-$QT_VERSION" moc; do MOC="$(exists "$moc")" || MOC="" if [ "$MOC" ]; then QT_SELECT="$QT_VERSION" \ - $MOC -o "$TEMP_CPP" "$TEMP_MOC" >/dev/null 2>&1 || + "$MOC" -o "$TEMP_CPP" "$TEMP_MOC" >/dev/null 2>&1 || continue - $CXX -o "$TEMP_EXE" $(printf %s "$QT_FLAGS") \ - -fPIC -c "$TEMP_CPP" >/dev/null 2>&1 && { + if $(printf %s "$CXX") -o "$TEMP_EXE" \ + $(printf %s "$QT_FLAGS") -fPIC -c \ + "$TEMP_CPP" >/dev/null 2>&1; then moc_works=1 break - } + fi fi done fi From e4ef930b4791ae5289ddc983b4368569b585171f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 13 Jan 2020 19:21:24 +0100 Subject: [PATCH 048/148] (Android) Prevent crash when Android device is minimized and you go back to the app --- retroarch.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/retroarch.c b/retroarch.c index 4eeab4a483..7923891a0c 100644 --- a/retroarch.c +++ b/retroarch.c @@ -21926,10 +21926,11 @@ static void video_driver_frame(const void *data, unsigned width, #endif } - video_driver_active = current_video->frame( - video_driver_data, data, width, height, - video_driver_frame_count, - (unsigned)pitch, video_driver_msg, &video_info); + if (current_video && current_video->frame) + video_driver_active = current_video->frame( + video_driver_data, data, width, height, + video_driver_frame_count, + (unsigned)pitch, video_driver_msg, &video_info); video_driver_frame_count++; From 15b128107575adc6bf9460775857f8f3d758eba1 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 13 Jan 2020 19:34:05 +0100 Subject: [PATCH 049/148] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 0247aa3a7e..c12116ccb5 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,5 @@ # Future +- (Android) Prevent crash when Android device is minimized and you go back to the app # 1.8.3 - ANDROID/BUGFIX: Fix 'Install or Restore Core' regression From 76c6e01534cfdd1a197a08f5f8aae7cead2317e8 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 13 Jan 2020 19:34:17 +0100 Subject: [PATCH 050/148] Update CHANGES.md --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index c12116ccb5..0149c74f70 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,5 @@ # Future -- (Android) Prevent crash when Android device is minimized and you go back to the app +- ANDROID: Prevent crash when Android device is minimized and you go back to the app # 1.8.3 - ANDROID/BUGFIX: Fix 'Install or Restore Core' regression From 98b572d17a04ad52d18d4505bc20d4e47adadcb0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 14 Jan 2020 06:55:51 +0100 Subject: [PATCH 051/148] (FFmpeg) Add more ffmpeg_sw_decoder_threads options --- cores/libretro-ffmpeg/ffmpeg_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/libretro-ffmpeg/ffmpeg_core.c b/cores/libretro-ffmpeg/ffmpeg_core.c index 9c9dc00e8e..fbef927563 100644 --- a/cores/libretro-ffmpeg/ffmpeg_core.c +++ b/cores/libretro-ffmpeg/ffmpeg_core.c @@ -282,7 +282,7 @@ void CORE_PREFIX(retro_set_environment)(retro_environment_t cb) { "ffmpeg_hw_decoder", "Use Hardware decoder (restart); off|auto|" "cuda|d3d11va|drm|dxva2|mediacodec|opencl|qsv|vaapi|vdpau|videotoolbox" }, #endif - { "ffmpeg_sw_decoder_threads", "Software decoder thread count (restart); auto|1|2|4|8|16" }, + { "ffmpeg_sw_decoder_threads", "Software decoder thread count (restart); auto|1|2|4|6|8|10|12|14|16" }, #if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES) { "ffmpeg_temporal_interp", "Temporal Interpolation; disabled|enabled" }, #ifdef HAVE_GL_FFT From b5eba22aafea26dc10b0c40d82d2b85adb317342 Mon Sep 17 00:00:00 2001 From: jdgleaver Date: Tue, 14 Jan 2020 12:28:10 +0000 Subject: [PATCH 052/148] Disk control interface improvements --- command.h | 2 + config.def.h | 2 + configuration.c | 1 + configuration.h | 1 + intl/msg_hash_chs.h | 8 -- intl/msg_hash_cht.h | 4 - intl/msg_hash_de.h | 10 -- intl/msg_hash_es.h | 20 ---- intl/msg_hash_fr.h | 20 ---- intl/msg_hash_it.h | 10 -- intl/msg_hash_ja.h | 21 ---- intl/msg_hash_ko.h | 20 ---- intl/msg_hash_lbl.h | 21 +++- intl/msg_hash_nl.h | 4 - intl/msg_hash_pl.h | 10 -- intl/msg_hash_pt_br.h | 20 ---- intl/msg_hash_pt_pt.h | 10 -- intl/msg_hash_ru.h | 10 -- intl/msg_hash_tr.h | 20 ---- intl/msg_hash_us.h | 47 ++++++--- intl/msg_hash_vn.h | 4 - menu/cbs/menu_cbs_deferred_push.c | 2 + menu/cbs/menu_cbs_left.c | 7 +- menu/cbs/menu_cbs_ok.c | 116 ++++++++++++++++++++-- menu/cbs/menu_cbs_right.c | 6 +- menu/cbs/menu_cbs_sublabel.c | 14 ++- menu/cbs/menu_cbs_title.c | 4 +- menu/drivers/materialui.c | 11 ++- menu/drivers/ozone/ozone_texture.c | 3 +- menu/drivers/xmb.c | 3 +- menu/menu_cbs.h | 1 + menu/menu_displaylist.c | 150 +++++++++++++++++++++++++---- menu/menu_displaylist.h | 1 + menu/menu_driver.h | 1 + menu/menu_setting.c | 16 +++ msg_hash.h | 4 + retroarch.c | 110 +++++++++++++++++---- 37 files changed, 448 insertions(+), 266 deletions(-) diff --git a/command.h b/command.h index 4a0ec9a6a0..3b15d23834 100644 --- a/command.h +++ b/command.h @@ -180,6 +180,8 @@ enum event_command CMD_EVENT_DISK_NEXT, /* Cycle to previous disk. */ CMD_EVENT_DISK_PREV, + /* Switch to specified disk index */ + CMD_EVENT_DISK_INDEX, /* Appends disk image to disk image list. */ CMD_EVENT_DISK_APPEND_IMAGE, /* Stops rumbling. */ diff --git a/config.def.h b/config.def.h index d56fb2fcc5..496d4f5dd6 100644 --- a/config.def.h +++ b/config.def.h @@ -509,6 +509,8 @@ static bool menu_savestate_resume = true; static bool menu_savestate_resume = false; #endif +#define DEFAULT_MENU_INSERT_DISK_RESUME true + static bool content_show_settings = true; static bool content_show_favorites = true; #ifdef HAVE_IMAGEVIEWER diff --git a/configuration.c b/configuration.c index 810988a3a8..c339e9eb63 100644 --- a/configuration.c +++ b/configuration.c @@ -1460,6 +1460,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("menu_horizontal_animation", &settings->bools.menu_horizontal_animation, true, DEFAULT_MENU_HORIZONTAL_ANIMATION, false); SETTING_BOOL("menu_pause_libretro", &settings->bools.menu_pause_libretro, true, true, false); SETTING_BOOL("menu_savestate_resume", &settings->bools.menu_savestate_resume, true, menu_savestate_resume, false); + SETTING_BOOL("menu_insert_disk_resume", &settings->bools.menu_insert_disk_resume, true, DEFAULT_MENU_INSERT_DISK_RESUME, false); SETTING_BOOL("menu_mouse_enable", &settings->bools.menu_mouse_enable, true, DEFAULT_MOUSE_ENABLE, false); SETTING_BOOL("menu_pointer_enable", &settings->bools.menu_pointer_enable, true, DEFAULT_POINTER_ENABLE, false); SETTING_BOOL("menu_timedate_enable", &settings->bools.menu_timedate_enable, true, true, false); diff --git a/configuration.h b/configuration.h index c14c307741..12aa7d446e 100644 --- a/configuration.h +++ b/configuration.h @@ -154,6 +154,7 @@ typedef struct settings bool menu_show_start_screen; bool menu_pause_libretro; bool menu_savestate_resume; + bool menu_insert_disk_resume; bool menu_timedate_enable; bool menu_battery_level_enable; bool menu_core_enable; diff --git a/intl/msg_hash_chs.h b/intl/msg_hash_chs.h index c7316bdce1..ba36d371ed 100644 --- a/intl/msg_hash_chs.h +++ b/intl/msg_hash_chs.h @@ -618,10 +618,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_NOT_FOUND, "没有找到文件夹。") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, "文件夹") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, - "Disk Cycle Tray Status") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, - "追加光盘镜像") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_INDEX, "光盘索引") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_OPTIONS, @@ -3097,12 +3093,8 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, "设置按键延迟范围以掩盖网络的延迟。\n" "用一定的按键延迟换取在线游戏时\n" "降低 CPU 负载并减少顿卡。") -MSG_HASH(MENU_ENUM_SUBLABEL_DISK_INDEX, - "更改磁盘索引。") MSG_HASH(MENU_ENUM_SUBLABEL_DISK_OPTIONS, "管理磁盘映像。") -MSG_HASH(MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND, - "选择要插入的磁盘映像。") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE, "确保菜单内的帧率上限。") MSG_HASH(MENU_ENUM_SUBLABEL_VRR_RUNLOOP_ENABLE, diff --git a/intl/msg_hash_cht.h b/intl/msg_hash_cht.h index 2564db9f12..96e42759cb 100644 --- a/intl/msg_hash_cht.h +++ b/intl/msg_hash_cht.h @@ -564,10 +564,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_NOT_FOUND, "沒有找到文件夾。") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, "目錄") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, - "Disk Cycle Tray Status") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, - "追加光碟鏡像") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_INDEX, "光碟索引") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_OPTIONS, diff --git a/intl/msg_hash_de.h b/intl/msg_hash_de.h index dbb4193800..4faa703495 100644 --- a/intl/msg_hash_de.h +++ b/intl/msg_hash_de.h @@ -597,10 +597,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_NOT_FOUND, "Verzeichnis nicht gefunden.") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, "Verzeichnisse") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, - "Datentägerstatus") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, - "Füge Datenträgerabbild hinzu") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_INDEX, "Datenträger-Nummer") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_OPTIONS, @@ -3026,14 +3022,8 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN, "Eingabeverzögerung in Einzelbildern, die im Netplay verwendet wird, um die Netzwerklatenz zu verbergen. Reduziert Bildruckeln und CPU-Last, verursacht jedoch erkennbare Eingabeverzögerung.") MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, "Der Bereich der Eingabeverzögerung in Einzelbildern, die im Netplay verwendet werden kann, um die Netzwerklatenz zu verbergen. Reduziert Bildruckeln und CPU-Last, verursacht jedoch unvorhersehbare Eingabeverzögerungen.") -MSG_HASH(MENU_ENUM_SUBLABEL_DISK_CYCLE_TRAY_STATUS, - "Datenträger auswerfen/einlegen. Wenn der Datenträger eingelegt ist, wird er ausgeworfen. Wenn er noch nicht eingelegt wurde, wird er jetzt eingelegt. ") -MSG_HASH(MENU_ENUM_SUBLABEL_DISK_INDEX, - "Ändere den Datenträger-Index.") MSG_HASH(MENU_ENUM_SUBLABEL_DISK_OPTIONS, "Verwaltung von Datenträger-Abbildern.") -MSG_HASH(MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND, - "Wähle ein Datenträger-Abbild, das eingelegt werden soll.") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE, "Stelle sicher, dass die Bildwiederholrate im Menü begrenzt wird.") MSG_HASH(MENU_ENUM_SUBLABEL_XMB_LAYOUT, diff --git a/intl/msg_hash_es.h b/intl/msg_hash_es.h index 8cfc800bd3..01d0e08e0f 100644 --- a/intl/msg_hash_es.h +++ b/intl/msg_hash_es.h @@ -808,14 +808,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, "Carpeta" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, - "Abrir/Cerrar la bandeja de disco" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, - "Asignar imagen de disco" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DISK_INDEX, "Índice de disco" @@ -6667,22 +6659,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, "Indica el rango de fotogramas de entrada a usar para ocultar la latencia durante el juego en red. Reduce los tirones y el uso de la CPU a costa de incrementar la latencia de entrada." ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_CYCLE_TRAY_STATUS, - "Cambia de disco. Si hay un disco introducido, será expulsado. De lo contrario, se introducirá." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_INDEX, - "Cambia el índice del disco." - ) MSG_HASH( MENU_ENUM_SUBLABEL_DISK_OPTIONS, "Administra las imágenes de disco." ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND, - "Selecciona una imagen de disco a insertar." - ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE, "Limita los FPS del menú." diff --git a/intl/msg_hash_fr.h b/intl/msg_hash_fr.h index 4e006b2c71..342c07fb77 100644 --- a/intl/msg_hash_fr.h +++ b/intl/msg_hash_fr.h @@ -808,14 +808,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, "Dossiers" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, - "État du plateau du lecteur de disque" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, - "Ajouter une image disque" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DISK_INDEX, "Numéro du disque" @@ -6648,22 +6640,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, "Plage d'images de latence des entrées pouvant être utilisée pour masquer la latence du réseau. Réduit les variations de la latence et rend le jeu en réseau moins gourmand en ressources processeur, aux dépens d'une latence des entrées imprévisible." ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_CYCLE_TRAY_STATUS, - "Faire défiler l'état du disque actuel. Si le disque est inséré, il sera éjecté. Si le disque n'a pas été inséré, il sera inséré. " - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_INDEX, - "Changer le numéro du disque." - ) MSG_HASH( MENU_ENUM_SUBLABEL_DISK_OPTIONS, "Gestionnaire d'images disque." ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND, - "Sélectionner une image disque à insérer." - ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE, "S'assure que le nombre d'images par seconde est plafonné dans le menu." diff --git a/intl/msg_hash_it.h b/intl/msg_hash_it.h index 75d4a23720..f35b35615a 100644 --- a/intl/msg_hash_it.h +++ b/intl/msg_hash_it.h @@ -601,10 +601,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_NOT_FOUND, "Cartella non trovata.") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, "Cartella") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, - "Stato del ciclo nel vassoio del disco") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, - "Aggiungere Immagine disco") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_INDEX, "Indice del Disco ") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_OPTIONS, @@ -3062,14 +3058,8 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN, "Il numero della latenza nei fotogrammi di input per il netplay da utilizzare per nascondere la latenza di rete. Riduce il jitter e rende il netplay meno intenso di CPU, a scapito di un ritardo di input notevole.") MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, "L'intervallo della latenza nei fotogrammi di input che può essere utilizzato per nascondere la latenza di rete. Riduce il jitter e rende il netplay meno intenso di CPU, a scapito di un imprevisto ritardo di input.") -MSG_HASH(MENU_ENUM_SUBLABEL_DISK_CYCLE_TRAY_STATUS, - "Cicli del disco corrente. Se il disco è inserito, espellerà il disco. Se il disco non è stato inserito, verrà inserito. ") -MSG_HASH(MENU_ENUM_SUBLABEL_DISK_INDEX, - "Cambia l'indice del disco.") MSG_HASH(MENU_ENUM_SUBLABEL_DISK_OPTIONS, "Gestione delle immagini disco.") -MSG_HASH(MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND, - "Seleziona un'immagine disco da inserire") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE, "Assicura che i fotogrammi siano attivi all'interno del menu.") MSG_HASH(MENU_ENUM_SUBLABEL_XMB_LAYOUT, diff --git a/intl/msg_hash_ja.h b/intl/msg_hash_ja.h index 1506a529fd..47894e6d04 100644 --- a/intl/msg_hash_ja.h +++ b/intl/msg_hash_ja.h @@ -808,14 +808,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, "ディレクトリ" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, - "ディスクトレイを開閉" -) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, - "ディスクイメージを挿入" -) MSG_HASH( MENU_ENUM_LABEL_VALUE_DISK_INDEX, "ディスクインデックス" @@ -6416,23 +6408,10 @@ MSG_HASH( "ネットワーク遅延を隠すために使用される可能性がある入力遅延フレームの範囲です。 " "予期しない入力遅延を犠牲にして, ジッタを減らし, ネットプレイのCPU使用率を減らします。" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_CYCLE_TRAY_STATUS, - "ディスクトレイの状態を変更します。 " - "ディスクが挿入されていればそのディスクを排出し, 未挿入であればディスクを挿入します。" -) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_INDEX, - "ディスクのインデックスを変更します。" -) MSG_HASH( MENU_ENUM_SUBLABEL_DISK_OPTIONS, "ディスクのイメージ管理" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND, - "ディスクイメージを追加します。" -) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE, "メニュー内でフレームレートが制限されていることを確認します。" diff --git a/intl/msg_hash_ko.h b/intl/msg_hash_ko.h index 8e93d62bba..30f8d74c87 100644 --- a/intl/msg_hash_ko.h +++ b/intl/msg_hash_ko.h @@ -799,14 +799,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, "디렉토리" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, - "디스크 사이클 트레이 상태" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, - "디스크 이미지 추가" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DISK_INDEX, "디스크 인덱스" @@ -6385,22 +6377,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, "네트워크 지연을 숨기기 위해 사용하는 입력 대기 프레임 범위입니다. 예측 불가능한 입력 지연으로 지터를 줄이고 넷플레이의 CPU 사용을 줄입니다." ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_CYCLE_TRAY_STATUS, - "현재 디스크를 전환합니다. 삽입된 디스크가 있으면 꺼내지고 디스크가 없으면 디스크를 삽입합니다. " - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_INDEX, - "디스크 인덱스를 변경합니다." - ) MSG_HASH( MENU_ENUM_SUBLABEL_DISK_OPTIONS, "디스크 이미지를 관리합니다." ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND, - "삽입할 디스크 이미지를 선택하십시오." - ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE, "메뉴상에 있을 시의 프레임 제한을 설정합니다." diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 6928a9ea92..8e70c2f39e 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -189,8 +189,7 @@ MSG_HASH(MENU_ENUM_LABEL_COLLECTION, MSG_HASH(MENU_ENUM_LABEL_CONFIGURATIONS, "configurations") MSG_HASH(MENU_ENUM_LABEL_CONFIGURATION_SETTINGS, - "Determines how configuration files \n" - "are loaded and prioritized.") + "configuration_settings") MSG_HASH(MENU_ENUM_LABEL_CONFIG_SAVE_ON_EXIT, "config_save_on_exit") MSG_HASH(MENU_ENUM_LABEL_CONNECT_WIFI, @@ -299,6 +298,8 @@ MSG_HASH(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MOD "deferred_dropdown_box_list_playlist_right_thumbnail_mode") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE, "deferred_dropdown_box_list_playlist_left_thumbnail_mode") +MSG_HASH(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_DISK_INDEX, + "deferred_dropdown_box_list_disk_index") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_CONFIGURATIONS_LIST, "deferred_configurations_list") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_PLAYLIST_LIST, @@ -477,8 +478,10 @@ MSG_HASH(MENU_ENUM_LABEL_FAVORITES, "favorites") MSG_HASH(MENU_ENUM_LABEL_DIRECTORY_SETTINGS, "directory_settings") -MSG_HASH(MENU_ENUM_LABEL_DISK_CYCLE_TRAY_STATUS, - "disk_cycle_tray_status") +MSG_HASH(MENU_ENUM_LABEL_DISK_TRAY_EJECT, + "disk_tray_eject") +MSG_HASH(MENU_ENUM_LABEL_DISK_TRAY_INSERT, + "disk_tray_insert") MSG_HASH(MENU_ENUM_LABEL_DISK_IMAGE_APPEND, "disk_image_append") MSG_HASH(MENU_ENUM_LABEL_SUBSYSTEM_ADD, @@ -939,6 +942,8 @@ MSG_HASH(MENU_ENUM_LABEL_PAUSE_LIBRETRO, "menu_pause_libretro") MSG_HASH(MENU_ENUM_LABEL_MENU_SAVESTATE_RESUME, "menu_savestate_resume") +MSG_HASH(MENU_ENUM_LABEL_MENU_INSERT_DISK_RESUME, + "menu_insert_disk_resume") MSG_HASH(MENU_ENUM_LABEL_PAUSE_NONACTIVE, "pause_nonactive") MSG_HASH(MENU_ENUM_LABEL_PERFCNT_ENABLE, @@ -2097,6 +2102,8 @@ MSG_HASH(MENU_ENUM_LABEL_SETTINGS_SHOW_INPUT, "settings_show_input") MSG_HASH(MENU_ENUM_LABEL_ACCESSIBILITY_SETTINGS, "accessibility_settings") +MSG_HASH(MENU_ENUM_LABEL_POWER_MANAGEMENT_SETTINGS, + "power_management_settings") MSG_HASH(MENU_ENUM_LABEL_AI_SERVICE_SETTINGS, "ai_service_settings") MSG_HASH(MENU_ENUM_LABEL_AI_SERVICE_MODE, @@ -2205,3 +2212,9 @@ MSG_HASH(MENU_ENUM_LABEL_INPUT_TURBO_MODE, "input_turbo_mode") MSG_HASH(MENU_ENUM_LABEL_INPUT_TURBO_DEFAULT_BUTTON, "input_turbo_default_button") +MSG_HASH(MENU_ENUM_LABEL_MENU_VIEWS_SETTINGS, + "menu_views_settings") +MSG_HASH(MENU_ENUM_LABEL_QUICK_MENU_VIEWS_SETTINGS, + "quick_menu_views_settings") +MSG_HASH(MENU_ENUM_LABEL_SETTINGS_VIEWS_SETTINGS, + "settings_views_settings") diff --git a/intl/msg_hash_nl.h b/intl/msg_hash_nl.h index efd06bb4d2..2794de999d 100644 --- a/intl/msg_hash_nl.h +++ b/intl/msg_hash_nl.h @@ -456,10 +456,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_NOT_FOUND, "Map niet gevonden.") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, "Map") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, - "Disk Cycle Tray Status") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, - "Disk Image Toevoegen") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_INDEX, "Disk Index") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_OPTIONS, diff --git a/intl/msg_hash_pl.h b/intl/msg_hash_pl.h index 205f85f41c..8964207024 100644 --- a/intl/msg_hash_pl.h +++ b/intl/msg_hash_pl.h @@ -629,10 +629,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_NOT_FOUND, "Nie znaleziono katalogu.") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, "Szczegóły") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, - "Status podajnika cyklu dysku") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, - "Dołącz obraz dysku") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_INDEX, "Indeks dysku") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_OPTIONS, @@ -3165,14 +3161,8 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN, "Liczba klatek opóźnienia wejściowego dla netplay do wykorzystania do ukrycia opóźnień sieci. Zmniejsza drgania i sprawia, że gra jest mniej intensywna, kosztem zauważalnego opóźnienia wejścia.") MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, "Zakres klatek opóźnień wejściowych, które można wykorzystać do ukrycia opóźnień sieci. Zmniejsza fluktuacje i sprawia, że netplay jest mniej obciążający procesor, kosztem nieprzewidywalnego opóźnienia wejściowego.") -MSG_HASH(MENU_ENUM_SUBLABEL_DISK_CYCLE_TRAY_STATUS, - "Cykluj bieżący dysk. Jeśli dysk zostanie włożony, wyskoczy. Jeśli dysk nie został włożony, zostanie włożony. ") -MSG_HASH(MENU_ENUM_SUBLABEL_DISK_INDEX, - "Zmień indeks dysku.") MSG_HASH(MENU_ENUM_SUBLABEL_DISK_OPTIONS, "Zarządzanie obrazem dysku.") -MSG_HASH(MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND, - "Wybierz obraz dysku, który chcesz wstawić.") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE, "Upewnia się, że liczba klatek na sekundę jest ograniczona w menu.") MSG_HASH(MENU_ENUM_SUBLABEL_XMB_LAYOUT, diff --git a/intl/msg_hash_pt_br.h b/intl/msg_hash_pt_br.h index 0ccd906c64..bcaefc0189 100644 --- a/intl/msg_hash_pt_br.h +++ b/intl/msg_hash_pt_br.h @@ -800,14 +800,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, "Diretório" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, - "Condição da Bandeja do Ciclo de Disco" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, - "Anexar Imagem de Disco" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DISK_INDEX, "Índice de Disco" @@ -6572,22 +6564,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, "O intervalo de quadros de latência de entrada que pode ser utilizado para mascarar a latência da rede. Reduz a oscilação e torna o jogo em rede menos intensivo para a CPU, ao custo de atraso imprevisível na entrada." ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_CYCLE_TRAY_STATUS, - "Alterna o disco atual. Se o disco estiver inserido, o mesmo será ejetado. Se o disco não estiver inserido, o mesmo será inserido." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_INDEX, - "Mude o índice do disco." - ) MSG_HASH( MENU_ENUM_SUBLABEL_DISK_OPTIONS, "Gerenciamento de imagem de disco." ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND, - "Selecione uma imagem de disco para inserir." - ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE, "Certifica-se de que a taxa de quadros é controlada enquanto estiver dentro do menu." diff --git a/intl/msg_hash_pt_pt.h b/intl/msg_hash_pt_pt.h index 33bd76d993..e8c9ab0078 100644 --- a/intl/msg_hash_pt_pt.h +++ b/intl/msg_hash_pt_pt.h @@ -557,10 +557,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_NOT_FOUND, "Pasta não encontrada.") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, "Pasta") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, - "Estado do ciclo do disco na área de notificação") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, - "Adicionar imagem de disco") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_INDEX, "Índice do disco") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_OPTIONS, @@ -2903,14 +2899,8 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN, "O número de fotogramas de latência de entrada para o Netplay utilizar para ocultar a latência da rede. Reduz a instabilidade e faz com que a funcionalidade de Netplay seja menos exigente para o processador, com um custo perceptível de tempo de atraso.") MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, "O intervalo de latência entre fotogramas pode ser usado para ocultar a latência da rede. Reduz a instabilidade e faz com que a funcionalidade de Netplay seja menos exigente para o processador, com um custo de latência imprevisível.") -MSG_HASH(MENU_ENUM_SUBLABEL_DISK_CYCLE_TRAY_STATUS, - "Ciclo do disco atual. Se o disco estiver inserido, o mesmo será ejetado. Caso contrário, ele será inserido. ") -MSG_HASH(MENU_ENUM_SUBLABEL_DISK_INDEX, - "Alterar o índice do disco.") MSG_HASH(MENU_ENUM_SUBLABEL_DISK_OPTIONS, "Gestão de imagens de disco.") -MSG_HASH(MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND, - "Selecione uma imagem de disco para inserir.") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE, "Certifique-se de que a taxa de fotogramas atingida enquanto estiver dentro do menu.") MSG_HASH(MENU_ENUM_SUBLABEL_XMB_LAYOUT, diff --git a/intl/msg_hash_ru.h b/intl/msg_hash_ru.h index 8c91a0a56d..0ddd9da490 100644 --- a/intl/msg_hash_ru.h +++ b/intl/msg_hash_ru.h @@ -569,10 +569,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_NOT_FOUND, "Каталог не найден.") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, "Директории") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, - "Статус диска в приводе") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, - "Добавить образ диска") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_INDEX, "Индекс диска") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_OPTIONS, @@ -2886,14 +2882,8 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN, "Количество кадров задержки ввода для netplay для сокрытия задержки сети. Уменьшает лаги и делает netplay менее требовательным к CPU, ценой значительной задержки ввода.") MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, "Диапазон кадров задержки ввода для netplay для сокрытия задержки сети. Уменьшает лаги и делает netplay менее требовательным к CPU, ценой непредсказуемой задержки ввода.") -MSG_HASH(MENU_ENUM_SUBLABEL_DISK_CYCLE_TRAY_STATUS, - "Зацикливать текущий диск. Если вставлен диск, он будет извлечен. Если диск не вставлен, он будет вставлен.") -MSG_HASH(MENU_ENUM_SUBLABEL_DISK_INDEX, - "Изменить индекс диска.") MSG_HASH(MENU_ENUM_SUBLABEL_DISK_OPTIONS, "Управление образа диска.") -MSG_HASH(MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND, - "Выберите образ диска для загрузки.") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE, "Убедитесь, что частота кадров ограничена внутри меню.") MSG_HASH(MENU_ENUM_SUBLABEL_XMB_LAYOUT, diff --git a/intl/msg_hash_tr.h b/intl/msg_hash_tr.h index 1fd04521c9..9d5cf217c8 100644 --- a/intl/msg_hash_tr.h +++ b/intl/msg_hash_tr.h @@ -795,14 +795,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, "Dizin" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, - "Disk Döngüsü Tepsisi Durumu" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, - "Disk Görüntüsü Ekleme" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DISK_INDEX, "Disk Dizini" @@ -6248,22 +6240,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, "Ağ gecikmesini gizlemek için kullanılabilecek giriş gecikmesi çerçevelerinin aralığı. Jitteri azaltır ve tahmin edilemeyen girdi gecikmesi pahasına netçeyi daha az CPU yoğun yapar." ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_CYCLE_TRAY_STATUS, - "Geçerli diski değiştirin. Disk yerleştirilmişse, diski çıkaracaktır. Eğer disk yerleştirilmemişse, yerleştirilecektir. " - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_INDEX, - "Disk indeksini değiştir." - ) MSG_HASH( MENU_ENUM_SUBLABEL_DISK_OPTIONS, "Disk image management." ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND, - "Eklenecek bir disk görüntüsü seçin." - ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE, "Menünün içindeyken kare hızının kapatıldığından emin olun." diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index e99d9a1f31..9377adf68c 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -801,17 +801,37 @@ MSG_HASH( "Directory" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, - "Cycle Disk Tray" + MENU_ENUM_LABEL_VALUE_DISK_TRAY_EJECT, + "Eject Disk" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, + MENU_ENUM_SUBLABEL_DISK_TRAY_EJECT, + "Opens virtual disk try and removes currently loaded disk. NOTE: If RetroArch is configured to pause while menu is active, some cores may not register changes unless content is resumed for a few seconds after each disk control action." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISK_TRAY_INSERT, "Insert Disk" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DISK_TRAY_INSERT, + "Inserts disk corresponding to 'Current Disk Index' and closes virtual disk tray. NOTE: If RetroArch is configured to pause while menu is active, some cores may not register changes unless content is resumed for a few seconds after each disk control action." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DISK_INDEX, "Current Disk Index" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DISK_INDEX, + "Choose current disk from list of available images. Disk will be loaded when 'Insert Disk' is selected." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, + "Load New Disk" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND, + "Eject current disk, select a new disk from the filesystem then insert it and close the virtual disk tray. NOTE: This is a legacy feature. It is instead recommended to load multi-disk titles via M3U playlists, which allow disk selection using the 'Eject/Insert Disk' and 'Current Disk Index' options." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DISK_OPTIONS, "Disk Control" @@ -2387,6 +2407,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_MENU_SAVESTATE_RESUME, "Automatically close menu and resume current content after selecting 'Save State' or 'Load State' from the Quick Menu. Disabling this can improve save state performance on very slow devices." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_INSERT_DISK_RESUME, + "Resume content after changing disks" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_INSERT_DISK_RESUME, + "Automatically close menu and resume current content after selecting 'Insert Disk' or 'Load New Disk' from the Disk Control menu." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PAUSE_NONACTIVE, "Don't run in background" @@ -6672,23 +6700,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, "The range of frames of input latency that may be used to hide network latency. Reduces jitter and makes netplay less CPU-intensive, at the expense of unpredictable input lag." ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_CYCLE_TRAY_STATUS, - "Cycle the current disk. If the disk is inserted, it will eject the disk. If the disk has not been inserted, it will be inserted. " - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_INDEX, - "Change the current disk if more than one is inserted. Open the tray before attempting to change disks.\n" - "If RetroArch is configured to pause on menu toggle the tray open/close action may not register in the core. If that's the case remember to go back to the game for a few frames after every disk control action." - ) MSG_HASH( MENU_ENUM_SUBLABEL_DISK_OPTIONS, "Disk image management." ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND, - "Select a disk image to insert." - ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE, "Makes sure the framerate is capped while inside the menu." diff --git a/intl/msg_hash_vn.h b/intl/msg_hash_vn.h index 573b6cdabf..4bc91ab86a 100644 --- a/intl/msg_hash_vn.h +++ b/intl/msg_hash_vn.h @@ -421,10 +421,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_NOT_FOUND, "Không tìm thấy thư mục.") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, "Thư mục") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, - "Tình trạng khay đĩa") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, - "Thêm đĩa") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_INDEX, "Chỉ số đĩa") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_OPTIONS, diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 3ed5a065c9..d7e282e05e 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -664,6 +664,7 @@ generic_deferred_push_clear_general(deferred_push_dropdown_box_list_playlist_rig generic_deferred_push_clear_general(deferred_push_dropdown_box_list_playlist_left_thumbnail_mode, PUSH_DEFAULT, DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE) generic_deferred_push_clear_general(deferred_push_dropdown_box_list_manual_content_scan_system_name, PUSH_DEFAULT, DISPLAYLIST_DROPDOWN_LIST_MANUAL_CONTENT_SCAN_SYSTEM_NAME) generic_deferred_push_clear_general(deferred_push_dropdown_box_list_manual_content_scan_core_name, PUSH_DEFAULT, DISPLAYLIST_DROPDOWN_LIST_MANUAL_CONTENT_SCAN_CORE_NAME) +generic_deferred_push_clear_general(deferred_push_dropdown_box_list_disk_index, PUSH_DEFAULT, DISPLAYLIST_DROPDOWN_LIST_DISK_INDEX) static int menu_cbs_init_bind_deferred_push_compare_label( menu_file_list_cbs_t *cbs, @@ -690,6 +691,7 @@ static int menu_cbs_init_bind_deferred_push_compare_label( {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_DROPDOWN_BOX_LIST_DISK_INDEX, deferred_push_dropdown_box_list_disk_index}, {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}, diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c index 430312914d..1bf9c16aa7 100644 --- a/menu/cbs/menu_cbs_left.c +++ b/menu/cbs/menu_cbs_left.c @@ -650,7 +650,12 @@ static int core_setting_left(unsigned type, const char *label, static int disk_options_disk_idx_left(unsigned type, const char *label, bool wraparound) { - command_event(CMD_EVENT_DISK_PREV, NULL); + /* Note: Menu itself provides visual feedback - no + * need to print info message to screen */ + bool print_log = false; + + command_event(CMD_EVENT_DISK_PREV, &print_log); + return 0; } diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 417c66b887..b785a2c829 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -195,6 +195,8 @@ static enum msg_hash_enums action_ok_dl_to_enum(unsigned lbl) return MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_MANUAL_CONTENT_SCAN_SYSTEM_NAME; case ACTION_OK_DL_DROPDOWN_BOX_LIST_MANUAL_CONTENT_SCAN_CORE_NAME: return MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_MANUAL_CONTENT_SCAN_CORE_NAME; + case ACTION_OK_DL_DROPDOWN_BOX_LIST_DISK_INDEX: + return MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_DISK_INDEX; case ACTION_OK_DL_MIXER_STREAM_SETTINGS_LIST: return MENU_ENUM_LABEL_DEFERRED_MIXER_STREAM_SETTINGS_LIST; case ACTION_OK_DL_ACCOUNTS_LIST: @@ -538,6 +540,15 @@ int generic_action_ok_displaylist_push(const char *path, info.enum_idx = MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_MANUAL_CONTENT_SCAN_CORE_NAME; dl_type = DISPLAYLIST_GENERIC; break; + case ACTION_OK_DL_DROPDOWN_BOX_LIST_DISK_INDEX: + info.type = type; + info.directory_ptr = idx; + info_path = path; + info_label = msg_hash_to_str( + MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_DISK_INDEX); + info.enum_idx = MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_DISK_INDEX; + dl_type = DISPLAYLIST_GENERIC; + break; case ACTION_OK_DL_USER_BINDS_LIST: info.type = type; info.directory_ptr = idx; @@ -1763,9 +1774,16 @@ static int generic_action_ok(const char *path, } break; case ACTION_OK_APPEND_DISK_IMAGE: - flush_type = MENU_SETTINGS; - command_event(CMD_EVENT_DISK_APPEND_IMAGE, action_path); - generic_action_ok_command(CMD_EVENT_RESUME); + { + settings_t *settings = config_get_ptr(); + + flush_char = msg_hash_to_str(MENU_ENUM_LABEL_DISK_OPTIONS); + command_event(CMD_EVENT_DISK_APPEND_IMAGE, action_path); + + if (settings) + if (settings->bools.menu_insert_disk_resume) + generic_action_ok_command(CMD_EVENT_RESUME); + } break; case ACTION_OK_SUBSYSTEM_ADD: flush_type = MENU_SETTINGS; @@ -3200,8 +3218,8 @@ static int action_ok_core_deferred_set(const char *new_core_path, settings->bools.show_hidden_files, true); - strlcpy(resolved_core_path, new_core_path, sizeof(resolved_core_path)); - playlist_resolve_path(PLAYLIST_SAVE, resolved_core_path, sizeof(resolved_core_path)); + strlcpy(resolved_core_path, new_core_path, sizeof(resolved_core_path)); + playlist_resolve_path(PLAYLIST_SAVE, resolved_core_path, sizeof(resolved_core_path)); /* the update function reads our entry * as const, so these casts are safe */ @@ -3222,7 +3240,7 @@ static int action_ok_core_deferred_set(const char *new_core_path, menu_entries_pop_stack(&selection, 0, 1); menu_navigation_set_selection(selection); - return menu_cbs_exit(); + return 0; } static int action_ok_deferred_list_stub(const char *path, @@ -4488,7 +4506,6 @@ default_action_ok_cmd_func(action_ok_save_new_config, CMD_EVENT_MENU_SA default_action_ok_cmd_func(action_ok_resume_content, CMD_EVENT_RESUME) default_action_ok_cmd_func(action_ok_restart_content, CMD_EVENT_RESET) default_action_ok_cmd_func(action_ok_screenshot, CMD_EVENT_TAKE_SCREENSHOT) -default_action_ok_cmd_func(action_ok_disk_cycle_tray_status, CMD_EVENT_DISK_EJECT_TOGGLE) #if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_SLANG) || defined(HAVE_HLSL) default_action_ok_cmd_func(action_ok_shader_apply_changes, CMD_EVENT_SHADERS_APPLY_CHANGES) #endif @@ -5798,6 +5815,22 @@ static int action_ok_push_dropdown_item_manual_content_scan_core_name(const char return action_cancel_pop_default(NULL, NULL, 0, 0); } +static int action_ok_push_dropdown_item_disk_index(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + unsigned disk_index = (unsigned)idx; + + command_event(CMD_EVENT_DISK_INDEX, &disk_index); + + /* When choosing a disk, menu selection should + * automatically be reset to the 'insert disk' + * option */ + menu_entries_pop_stack(NULL, 0, 1); + menu_navigation_set_selection(0); + + return 0; +} + static int action_ok_push_default(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -6056,6 +6089,69 @@ static int action_ok_video_shader_num_passes_dropdown_box_list(const char *path, ACTION_OK_DL_DROPDOWN_BOX_LIST_VIDEO_SHADER_NUM_PASSES); } +static int action_ok_disk_index_dropdown_box_list(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_dropdown_box_list(idx, + ACTION_OK_DL_DROPDOWN_BOX_LIST_DISK_INDEX); +} + +static int action_ok_disk_cycle_tray_status(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + bool disk_ejected = false; + bool print_log = false; + rarch_system_info_t *sys_info = runloop_get_system_info(); + settings_t *settings = config_get_ptr(); + + if (!settings) + return menu_cbs_exit(); + +#ifdef HAVE_AUDIOMIXER + if (settings->bools.audio_enable_menu && settings->bools.audio_enable_menu_ok) + audio_driver_mixer_play_menu_sound(AUDIO_MIXER_SYSTEM_SLOT_OK); +#endif + + /* Get disk eject state *before* toggling drive status */ + if (sys_info) + { + const struct retro_disk_control_callback *control = + (const struct retro_disk_control_callback*) + &sys_info->disk_control_cb; + + if (control) + if (control->get_eject_state) + disk_ejected = control->get_eject_state(); + } + + /* Only want to display a notification if we are + * going to resume content immediately after + * inserting a disk (i.e. if quick menu remains + * open, there is sufficient visual feedback + * without a notification) */ + print_log = settings->bools.menu_insert_disk_resume && disk_ejected; + + if (!command_event(CMD_EVENT_DISK_EJECT_TOGGLE, &print_log)) + return menu_cbs_exit(); + + /* If we reach this point, then tray toggle + * was successful */ + disk_ejected = !disk_ejected; + + /* If disk is now ejected, menu selection should + * automatically increment to the 'current disk + * index' option */ + if (disk_ejected) + menu_navigation_set_selection(1); + + /* If disk is now inserted and user has enabled + * 'menu_insert_disk_resume', resume running content */ + if (!disk_ejected && settings->bools.menu_insert_disk_resume) + generic_action_ok_command(CMD_EVENT_RESUME); + + return 0; +} + static int action_ok_manual_content_scan_start(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -7357,6 +7453,9 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, case MENU_SETTING_DROPDOWN_ITEM_MANUAL_CONTENT_SCAN_CORE_NAME: BIND_ACTION_OK(cbs, action_ok_push_dropdown_item_manual_content_scan_core_name); break; + case MENU_SETTING_DROPDOWN_ITEM_DISK_INDEX: + BIND_ACTION_OK(cbs, action_ok_push_dropdown_item_disk_index); + break; case MENU_SETTING_ACTION_CORE_DISK_OPTIONS: BIND_ACTION_OK(cbs, action_ok_push_default); break; @@ -7681,6 +7780,9 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, case MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_CYCLE_TRAY_STATUS: BIND_ACTION_OK(cbs, action_ok_disk_cycle_tray_status); break; + case MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_INDEX: + BIND_ACTION_OK(cbs, action_ok_disk_index_dropdown_box_list); + break; case MENU_SETTINGS_CORE_OPTION_CREATE: BIND_ACTION_OK(cbs, action_ok_option_create); break; diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index 8ec308cfa2..85d4a5c3fa 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -755,7 +755,11 @@ int core_setting_right(unsigned type, const char *label, static int disk_options_disk_idx_right(unsigned type, const char *label, bool wraparound) { - command_event(CMD_EVENT_DISK_NEXT, NULL); + /* Note: Menu itself provides visual feedback - no + * need to print info message to screen */ + bool print_log = false; + + command_event(CMD_EVENT_DISK_NEXT, &print_log); return 0; } diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index b2b961d66e..bbd3fd90e8 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -376,6 +376,7 @@ default_sublabel_macro(action_bind_sublabel_input_autodetect_enable, MENU_ default_sublabel_macro(action_bind_sublabel_input_swap_ok_cancel, MENU_ENUM_SUBLABEL_MENU_INPUT_SWAP_OK_CANCEL) 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_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) @@ -500,7 +501,8 @@ default_sublabel_macro(action_bind_thumbnails_directory, default_sublabel_macro(action_bind_rgui_config_directory, MENU_ENUM_SUBLABEL_RGUI_CONFIG_DIRECTORY) default_sublabel_macro(action_bind_sublabel_input_latency_frames, MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN) default_sublabel_macro(action_bind_sublabel_input_latency_frames_range, MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE) -default_sublabel_macro(action_bind_sublabel_disk_cycle_tray_status, MENU_ENUM_SUBLABEL_DISK_CYCLE_TRAY_STATUS) +default_sublabel_macro(action_bind_sublabel_disk_tray_eject, MENU_ENUM_SUBLABEL_DISK_TRAY_EJECT) +default_sublabel_macro(action_bind_sublabel_disk_tray_insert, MENU_ENUM_SUBLABEL_DISK_TRAY_INSERT) default_sublabel_macro(action_bind_sublabel_disk_image_append, MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND) default_sublabel_macro(action_bind_sublabel_disk_index, MENU_ENUM_SUBLABEL_DISK_INDEX) default_sublabel_macro(action_bind_sublabel_disk_options, MENU_ENUM_SUBLABEL_DISK_OPTIONS) @@ -1799,8 +1801,11 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_SUBSYSTEM_LOAD: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_subsystem_load); break; - case MENU_ENUM_LABEL_DISK_CYCLE_TRAY_STATUS: - BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_disk_cycle_tray_status); + case MENU_ENUM_LABEL_DISK_TRAY_EJECT: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_disk_tray_eject); + break; + case MENU_ENUM_LABEL_DISK_TRAY_INSERT: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_disk_tray_insert); break; case MENU_ENUM_LABEL_DISK_INDEX: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_disk_index); @@ -2177,6 +2182,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_MENU_SAVESTATE_RESUME: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_savestate_resume); break; + case MENU_ENUM_LABEL_MENU_INSERT_DISK_RESUME: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_insert_disk_resume); + break; case MENU_ENUM_LABEL_MENU_INPUT_SWAP_OK_CANCEL: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_swap_ok_cancel); break; diff --git a/menu/cbs/menu_cbs_title.c b/menu/cbs/menu_cbs_title.c index 3ee9693dfb..076cd8df18 100644 --- a/menu/cbs/menu_cbs_title.c +++ b/menu/cbs/menu_cbs_title.c @@ -422,6 +422,7 @@ default_title_macro(action_get_title_dropdown_playlist_label_display_mode_item, default_title_macro(action_get_title_manual_content_scan_list, MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_LIST) default_title_macro(action_get_title_dropdown_manual_content_scan_system_name_item, MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_SYSTEM_NAME) default_title_macro(action_get_title_dropdown_manual_content_scan_core_name_item, MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_CORE_NAME) +default_title_macro(action_get_title_dropdown_disk_index, MENU_ENUM_LABEL_VALUE_DISK_INDEX) default_fill_title_macro(action_get_title_disk_image_append, MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND) default_fill_title_macro(action_get_title_cheat_file_load, MENU_ENUM_LABEL_VALUE_CHEAT_FILE) @@ -1438,7 +1439,7 @@ static int menu_cbs_init_bind_title_compare_type(menu_file_list_cbs_t *cbs, BIND_ACTION_GET_TITLE(cbs, action_get_title_input_settings); break; case MENU_SETTING_ACTION_CORE_DISK_OPTIONS: - BIND_ACTION_GET_TITLE(cbs, action_get_title_action_generic); + BIND_ACTION_GET_TITLE(cbs, action_get_disk_options_list); break; default: return -1; @@ -1477,6 +1478,7 @@ int menu_cbs_init_bind_title(menu_file_list_cbs_t *cbs, {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE, action_get_title_dropdown_playlist_left_thumbnail_mode_item}, {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_MANUAL_CONTENT_SCAN_SYSTEM_NAME, action_get_title_dropdown_manual_content_scan_system_name_item}, {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_MANUAL_CONTENT_SCAN_CORE_NAME, action_get_title_dropdown_manual_content_scan_core_name_item}, + {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_DISK_INDEX, action_get_title_dropdown_disk_index}, {MENU_ENUM_LABEL_DEFERRED_RPL_ENTRY_ACTIONS, action_get_quick_menu_views_settings_list}, {MENU_ENUM_LABEL_DEFERRED_PLAYLIST_LIST, action_get_title_deferred_playlist_list}, {MENU_ENUM_LABEL_DEFERRED_PLAYLIST_MANAGER_SETTINGS, action_get_title_deferred_playlist_list}, diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 68f618a325..410e526884 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -7544,7 +7544,8 @@ static void materialui_list_insert( node->has_icon = true; } else if ( - string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DISK_CYCLE_TRAY_STATUS)) + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DISK_TRAY_EJECT)) || + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DISK_TRAY_INSERT)) ) { node->icon_texture_index = MUI_TEXTURE_EJECT; @@ -7555,7 +7556,8 @@ static void materialui_list_insert( string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_LOAD_DISC)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DUMP_DISC)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DISC_INFORMATION)) || - string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DISK_OPTIONS)) + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DISK_OPTIONS)) || + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DISK_INDEX)) ) { node->icon_texture_index = MUI_TEXTURE_DISK; @@ -7700,6 +7702,7 @@ static void materialui_list_insert( string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_USER_INTERFACE_SETTINGS)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_AI_SERVICE_SETTINGS)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_ACCESSIBILITY_SETTINGS)) || + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_POWER_MANAGEMENT_SETTINGS)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_RETRO_ACHIEVEMENTS_SETTINGS)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_ACCOUNTS_YOUTUBE)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_ACCOUNTS_TWITCH)) || @@ -7714,6 +7717,7 @@ static void materialui_list_insert( string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_MIDI_SETTINGS)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_MENU_VIEWS_SETTINGS)) || 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_SETTINGS_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 @@ -7765,7 +7769,8 @@ static void materialui_list_insert( string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_COPY_AFTER)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_COPY_BEFORE)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_DELETE)) || - string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_VIDEO_SHADER_PARAMETERS)) + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_VIDEO_SHADER_PARAMETERS)) || + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_PLAYLIST_MANAGER_LIST)) ) { node->icon_texture_index = MUI_TEXTURE_SETTINGS; diff --git a/menu/drivers/ozone/ozone_texture.c b/menu/drivers/ozone/ozone_texture.c index 3d289d707d..fe05d0a9f3 100644 --- a/menu/drivers/ozone/ozone_texture.c +++ b/menu/drivers/ozone/ozone_texture.c @@ -51,7 +51,8 @@ menu_texture_item ozone_entries_icon_get_texture(ozone_handle_t *ozone, case MENU_ENUM_LABEL_CORE_CHEAT_OPTIONS: return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CHEAT_OPTIONS]; case MENU_ENUM_LABEL_DISK_OPTIONS: - case MENU_ENUM_LABEL_DISK_CYCLE_TRAY_STATUS: + case MENU_ENUM_LABEL_DISK_TRAY_EJECT: + case MENU_ENUM_LABEL_DISK_TRAY_INSERT: case MENU_ENUM_LABEL_DISK_IMAGE_APPEND: case MENU_ENUM_LABEL_DISK_INDEX: return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_DISK_OPTIONS]; diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 92526f5d48..5d2ae2d2ed 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -2317,7 +2317,8 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb, case MENU_ENUM_LABEL_CORE_CHEAT_OPTIONS: return xmb->textures.list[XMB_TEXTURE_CHEAT_OPTIONS]; case MENU_ENUM_LABEL_DISK_OPTIONS: - case MENU_ENUM_LABEL_DISK_CYCLE_TRAY_STATUS: + case MENU_ENUM_LABEL_DISK_TRAY_EJECT: + case MENU_ENUM_LABEL_DISK_TRAY_INSERT: case MENU_ENUM_LABEL_DISK_IMAGE_APPEND: case MENU_ENUM_LABEL_DISK_INDEX: return xmb->textures.list[XMB_TEXTURE_DISK_OPTIONS]; diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index 0836cfe99b..6844771299 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -57,6 +57,7 @@ enum ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE, ACTION_OK_DL_DROPDOWN_BOX_LIST_MANUAL_CONTENT_SCAN_SYSTEM_NAME, ACTION_OK_DL_DROPDOWN_BOX_LIST_MANUAL_CONTENT_SCAN_CORE_NAME, + ACTION_OK_DL_DROPDOWN_BOX_LIST_DISK_INDEX, ACTION_OK_DL_OPEN_ARCHIVE, ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE, ACTION_OK_DL_MUSIC, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index e4a1d34bb5..f074cb2a1c 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -3234,6 +3234,82 @@ static unsigned menu_displaylist_parse_content_information( return count; } +static unsigned menu_displaylist_parse_disk_options( + file_list_t *list) +{ + unsigned count = 0; + rarch_system_info_t *sys_info = + runloop_get_system_info(); + const struct retro_disk_control_callback *control = NULL; + bool disk_ejected; + + /* Sanity Check */ + if (!sys_info) + return count; + + control = (const struct retro_disk_control_callback*) + &sys_info->disk_control_cb; + + if (!control || + !control->get_num_images || + !control->get_image_index || + !control->get_eject_state || + !control->set_eject_state) + return count; + + /* Check whether disk is currently ejected */ + disk_ejected = control->get_eject_state(); + + /* Always show a 'DISK_CYCLE_TRAY_STATUS' entry + * > These perform the same function, but just have + * different labels/sublabels */ + if (disk_ejected) + { + if (menu_entries_append_enum(list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DISK_TRAY_INSERT), + msg_hash_to_str(MENU_ENUM_LABEL_DISK_TRAY_INSERT), + MENU_ENUM_LABEL_DISK_TRAY_INSERT, + MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_CYCLE_TRAY_STATUS, 0, 0)) + count++; + } + else + if (menu_entries_append_enum(list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DISK_TRAY_EJECT), + msg_hash_to_str(MENU_ENUM_LABEL_DISK_TRAY_EJECT), + MENU_ENUM_LABEL_DISK_TRAY_EJECT, + MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_CYCLE_TRAY_STATUS, 0, 0)) + count++; + + /* Only show disk index if disk is currently ejected */ + if (disk_ejected) + if (menu_entries_append_enum(list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DISK_INDEX), + msg_hash_to_str(MENU_ENUM_LABEL_DISK_INDEX), + MENU_ENUM_LABEL_DISK_INDEX, + MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_INDEX, 0, 0)) + count++; + + /* If replace_image_index() is undefined, can stop here */ + if (!control->replace_image_index) + return count; + + /* Append image does the following: + * > Open tray + * > Append disk image + * > Close tray + * It therefore only makes sense to show this option + * if a disk is currently inserted */ + if (!disk_ejected) + if (menu_entries_append_enum(list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND), + msg_hash_to_str(MENU_ENUM_LABEL_DISK_IMAGE_APPEND), + MENU_ENUM_LABEL_DISK_IMAGE_APPEND, + MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_IMAGE_APPEND, 0, 0)) + count++; + + return count; +} + static bool menu_displaylist_push_internal( const char *label, menu_displaylist_ctx_entry_t *entry, @@ -4033,7 +4109,6 @@ static unsigned menu_displaylist_populate_subsystem( return count; } - unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ctl_state type, bool include_everything) { @@ -5270,6 +5345,57 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct } } break; + case DISPLAYLIST_DROPDOWN_LIST_DISK_INDEX: + { + rarch_system_info_t *sys_info = runloop_get_system_info(); + + if (sys_info) + { + const struct retro_disk_control_callback *control = + (const struct retro_disk_control_callback*) + &sys_info->disk_control_cb; + + /* Check that the required disk control interface + * functions are defined */ + if (control && + control->get_num_images && + control->get_image_index) + { + unsigned num_images = control->get_num_images(); + unsigned current_image = control->get_image_index(); + unsigned i; + + /* Loop through disk images */ + for (i = 0; i < num_images; i++) + { + char current_image_str[256]; + + current_image_str[0] = '\0'; + + /* Get string representation of disk index + * > Note that displayed index starts at '1', + * not '0' */ + snprintf( + current_image_str, sizeof(current_image_str), + "%u", i + 1); + + /* Add menu entry */ + if (menu_entries_append_enum(list, + current_image_str, + "", + MENU_ENUM_LABEL_NO_ITEMS, + MENU_SETTING_DROPDOWN_ITEM_DISK_INDEX, + i, 0)) + count++; + + /* Check whether current disk is selected */ + if (i == current_image) + menu_entries_set_checked(list, i, true); + } + } + } + } + break; case DISPLAYLIST_PERFCOUNTERS_CORE: case DISPLAYLIST_PERFCOUNTERS_FRONTEND: { @@ -5714,6 +5840,7 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct {MENU_ENUM_LABEL_NAVIGATION_WRAPAROUND, PARSE_ONLY_BOOL, true}, {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_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}, @@ -5758,24 +5885,7 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct } break; case DISPLAYLIST_OPTIONS_DISK: - if (menu_entries_append_enum(list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DISK_INDEX), - msg_hash_to_str(MENU_ENUM_LABEL_DISK_INDEX), - MENU_ENUM_LABEL_DISK_INDEX, - MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_INDEX, 0, 0)) - count++; - if (menu_entries_append_enum(list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS), - msg_hash_to_str(MENU_ENUM_LABEL_DISK_CYCLE_TRAY_STATUS), - MENU_ENUM_LABEL_DISK_CYCLE_TRAY_STATUS, - MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_CYCLE_TRAY_STATUS, 0, 0)) - count++; - if (menu_entries_append_enum(list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND), - msg_hash_to_str(MENU_ENUM_LABEL_DISK_IMAGE_APPEND), - MENU_ENUM_LABEL_DISK_IMAGE_APPEND, - MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_IMAGE_APPEND, 0, 0)) - count++; + count = menu_displaylist_parse_disk_options(list); break; case DISPLAYLIST_MIDI_SETTINGS_LIST: { @@ -9097,6 +9207,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, case DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE: case DISPLAYLIST_DROPDOWN_LIST_MANUAL_CONTENT_SCAN_SYSTEM_NAME: case DISPLAYLIST_DROPDOWN_LIST_MANUAL_CONTENT_SCAN_CORE_NAME: + case DISPLAYLIST_DROPDOWN_LIST_DISK_INDEX: case DISPLAYLIST_PERFCOUNTERS_CORE: case DISPLAYLIST_PERFCOUNTERS_FRONTEND: case DISPLAYLIST_MENU_SETTINGS_LIST: @@ -9155,6 +9266,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, case DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE: case DISPLAYLIST_DROPDOWN_LIST_MANUAL_CONTENT_SCAN_SYSTEM_NAME: case DISPLAYLIST_DROPDOWN_LIST_MANUAL_CONTENT_SCAN_CORE_NAME: + case DISPLAYLIST_DROPDOWN_LIST_DISK_INDEX: case DISPLAYLIST_INFORMATION_LIST: case DISPLAYLIST_SCAN_DIRECTORY_LIST: menu_entries_append_enum(info->list, diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index 302574f8a2..f009552225 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -65,6 +65,7 @@ enum menu_displaylist_ctl_state DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE, DISPLAYLIST_DROPDOWN_LIST_MANUAL_CONTENT_SCAN_SYSTEM_NAME, DISPLAYLIST_DROPDOWN_LIST_MANUAL_CONTENT_SCAN_CORE_NAME, + DISPLAYLIST_DROPDOWN_LIST_DISK_INDEX, DISPLAYLIST_CDROM_DETAIL_INFO, DISPLAYLIST_INFO, DISPLAYLIST_HELP, diff --git a/menu/menu_driver.h b/menu/menu_driver.h index dc14ff43ac..8aba059670 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -96,6 +96,7 @@ enum menu_settings_type MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_LEFT_THUMBNAIL_MODE, MENU_SETTING_DROPDOWN_ITEM_MANUAL_CONTENT_SCAN_SYSTEM_NAME, MENU_SETTING_DROPDOWN_ITEM_MANUAL_CONTENT_SCAN_CORE_NAME, + MENU_SETTING_DROPDOWN_ITEM_DISK_INDEX, MENU_SETTING_DROPDOWN_SETTING_CORE_OPTIONS_ITEM, MENU_SETTING_DROPDOWN_SETTING_STRING_OPTIONS_ITEM, MENU_SETTING_DROPDOWN_SETTING_FLOAT_ITEM, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 7dde827f93..d2ce4536d5 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -12335,6 +12335,22 @@ static bool setting_append_list( SD_FLAG_ADVANCED ); + CONFIG_BOOL( + list, list_info, + &settings->bools.menu_insert_disk_resume, + MENU_ENUM_LABEL_MENU_INSERT_DISK_RESUME, + MENU_ENUM_LABEL_VALUE_MENU_INSERT_DISK_RESUME, + DEFAULT_MENU_INSERT_DISK_RESUME, + MENU_ENUM_LABEL_VALUE_OFF, + MENU_ENUM_LABEL_VALUE_ON, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler, + SD_FLAG_ADVANCED + ); + CONFIG_BOOL( list, list_info, &settings->bools.menu_mouse_enable, diff --git a/msg_hash.h b/msg_hash.h index 6ac4413e89..d8459f1eb7 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -1262,6 +1262,7 @@ enum msg_hash_enums MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE, MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_MANUAL_CONTENT_SCAN_SYSTEM_NAME, MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_MANUAL_CONTENT_SCAN_CORE_NAME, + MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_DISK_INDEX, MENU_ENUM_LABEL_DEFERRED_MIXER_STREAM_SETTINGS_LIST, MENU_ENUM_LABEL_DEFERRED_CONFIGURATIONS_LIST, MENU_ENUM_LABEL_DEFERRED_FAVORITES_LIST, @@ -1450,6 +1451,7 @@ enum msg_hash_enums MENU_LABEL(PAUSE_LIBRETRO), MENU_LABEL(MENU_SAVESTATE_RESUME), + MENU_LABEL(MENU_INSERT_DISK_RESUME), MENU_LABEL(DIRECTORY_NOT_FOUND), MENU_LABEL(NO_ITEMS), MENU_LABEL(NO_PLAYLISTS), @@ -1910,6 +1912,8 @@ enum msg_hash_enums MENU_LABEL(VIDEO_SHADER_PRESET_PARAMETERS), MENU_LABEL(DISK_OPTIONS), MENU_LABEL(DISK_CYCLE_TRAY_STATUS), + MENU_LABEL(DISK_TRAY_EJECT), + MENU_LABEL(DISK_TRAY_INSERT), MENU_LABEL(NO_CORE_OPTIONS_AVAILABLE), MENU_LABEL(DISK_INDEX), MENU_LABEL(CORE_CHEAT_OPTIONS), diff --git a/retroarch.c b/retroarch.c index 7923891a0c..9befb5a23b 100644 --- a/retroarch.c +++ b/retroarch.c @@ -5256,19 +5256,23 @@ static void command_event_disk_control_set_eject(bool new_state, bool print_log) else RARCH_LOG("%s\n", msg); - /* Only noise in menu. */ - if (print_log) - runloop_msg_queue_push(msg, 1, 180, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + /* Errors should always be displayed */ + if (print_log || error) + runloop_msg_queue_push( + msg, 1, error ? 180 : 60, + true, NULL, + MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); } } /** * command_event_disk_control_set_index: * @idx : Index of disk to set as current. + * @print_log : Show message onscreen. * * Sets current disk to @index. **/ -static void command_event_disk_control_set_index(unsigned idx) +static void command_event_disk_control_set_index(unsigned idx, bool print_log) { unsigned num_disks; char msg[128]; @@ -5316,7 +5320,13 @@ static void command_event_disk_control_set_index(unsigned idx) RARCH_ERR("%s\n", msg); else RARCH_LOG("%s\n", msg); - runloop_msg_queue_push(msg, 1, 180, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + + /* Errors should always be displayed */ + if (print_log || error) + runloop_msg_queue_push( + msg, 1, error ? 180 : 60, + true, NULL, + MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); } } @@ -5333,9 +5343,18 @@ static bool command_event_disk_control_append_image(const char *path) struct retro_game_info info = {0}; const struct retro_disk_control_callback *control = NULL; rarch_system_info_t *sysinfo = &runloop_system; + const char *disk_filename = NULL; msg[0] = '\0'; + if (string_is_empty(path)) + return false; + + disk_filename = path_basename(path); + + if (string_is_empty(disk_filename)) + return false; + if (sysinfo) control = (const struct retro_disk_control_callback*) &sysinfo->disk_control_cb; @@ -5354,9 +5373,12 @@ static bool command_event_disk_control_append_image(const char *path) info.path = path; control->replace_image_index(new_idx, &info); - snprintf(msg, sizeof(msg), "%s: %s", msg_hash_to_str(MSG_APPENDED_DISK), path); + snprintf(msg, sizeof(msg), "%s: %s", msg_hash_to_str(MSG_APPENDED_DISK), disk_filename); RARCH_LOG("%s\n", msg); - runloop_msg_queue_push(msg, 0, 180, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + /* This message should always be displayed, since + * the menu itself does not provide sufficient + * visual feedback */ + runloop_msg_queue_push(msg, 0, 120, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); #ifdef HAVE_THREADS retroarch_autosave_deinit(); @@ -5374,7 +5396,7 @@ static bool command_event_disk_control_append_image(const char *path) } command_event(CMD_EVENT_AUTOSAVE_INIT, NULL); - command_event_disk_control_set_index(new_idx); + command_event_disk_control_set_index(new_idx, false); command_event_disk_control_set_eject(false, false); return true; @@ -5383,11 +5405,12 @@ static bool command_event_disk_control_append_image(const char *path) /** * command_event_check_disk_prev: * @control : Handle to disk control handle. + * @print_log : Show message onscreen. * * Perform disk cycle to previous index action (Core Disk Options). **/ static void command_event_check_disk_prev( - const struct retro_disk_control_callback *control) + const struct retro_disk_control_callback *control, bool print_log) { unsigned num_disks = 0; unsigned current = 0; @@ -5410,17 +5433,18 @@ static void command_event_check_disk_prev( if (current > 0) current--; - command_event_disk_control_set_index(current); + command_event_disk_control_set_index(current, print_log); } /** * command_event_check_disk_next: * @control : Handle to disk control handle. + * @print_log : Show message onscreen. * * Perform disk cycle to next index action (Core Disk Options). **/ static void command_event_check_disk_next( - const struct retro_disk_control_callback *control) + const struct retro_disk_control_callback *control, bool print_log) { unsigned num_disks = 0; unsigned current = 0; @@ -5443,7 +5467,7 @@ static void command_event_check_disk_next( if (current < num_disks - 1) current++; - command_event_disk_control_set_index(current); + command_event_disk_control_set_index(current, print_log); } /** @@ -7550,6 +7574,7 @@ TODO: Add a setting for these tweaks */ case CMD_EVENT_DISK_EJECT_TOGGLE: { rarch_system_info_t *info = &runloop_system; + bool *show_msg = (bool*)data; if (info && info->disk_control_cb.get_num_images) { @@ -7560,7 +7585,18 @@ TODO: Add a setting for these tweaks */ if (control) { bool new_state = !control->get_eject_state(); - command_event_disk_control_set_eject(new_state, true); + bool print_log = true; + bool refresh = false; + + if (show_msg) + print_log = *show_msg; + + command_event_disk_control_set_eject(new_state, print_log); + + /* It is necessary to refresh the disk options + * menu when toggling the tray state */ + menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); + menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); } } else @@ -7573,12 +7609,14 @@ TODO: Add a setting for these tweaks */ case CMD_EVENT_DISK_NEXT: { rarch_system_info_t *info = &runloop_system; + bool *show_msg = (bool*)data; if (info && info->disk_control_cb.get_num_images) { const struct retro_disk_control_callback *control = (const struct retro_disk_control_callback*) &info->disk_control_cb; + bool print_log = true; if (!control) return false; @@ -7586,7 +7624,10 @@ TODO: Add a setting for these tweaks */ if (!control->get_eject_state()) return false; - command_event_check_disk_next(control); + if (show_msg) + print_log = *show_msg; + + command_event_check_disk_next(control, print_log); } else runloop_msg_queue_push( @@ -7598,6 +7639,40 @@ TODO: Add a setting for these tweaks */ case CMD_EVENT_DISK_PREV: { rarch_system_info_t *info = &runloop_system; + bool *show_msg = (bool*)data; + + if (info && info->disk_control_cb.get_num_images) + { + const struct retro_disk_control_callback *control = + (const struct retro_disk_control_callback*) + &info->disk_control_cb; + bool print_log = true; + + if (!control) + return false; + + if (!control->get_eject_state()) + return false; + + if (show_msg) + print_log = *show_msg; + + command_event_check_disk_prev(control, print_log); + } + else + runloop_msg_queue_push( + msg_hash_to_str(MSG_CORE_DOES_NOT_SUPPORT_DISK_OPTIONS), + 1, 120, true, + NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + } + break; + case CMD_EVENT_DISK_INDEX: + { + rarch_system_info_t *info = &runloop_system; + unsigned *index = (unsigned*)data; + + if (!index) + return false; if (info && info->disk_control_cb.get_num_images) { @@ -7608,10 +7683,9 @@ TODO: Add a setting for these tweaks */ if (!control) return false; - if (!control->get_eject_state()) - return false; - - command_event_check_disk_prev(control); + /* Note: Menu itself provides visual feedback - no + * need to print info message to screen */ + command_event_disk_control_set_index(*index, false); } else runloop_msg_queue_push( From 16c4035e1c1562c0a0d9f4b50bb3d9f58513d44a Mon Sep 17 00:00:00 2001 From: jdgleaver Date: Tue, 14 Jan 2020 14:04:34 +0000 Subject: [PATCH 053/148] DISABLE_MENU=1 build fix --- retroarch.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/retroarch.c b/retroarch.c index 9befb5a23b..a5ca1ffc26 100644 --- a/retroarch.c +++ b/retroarch.c @@ -7593,10 +7593,12 @@ TODO: Add a setting for these tweaks */ command_event_disk_control_set_eject(new_state, print_log); +#if defined(HAVE_MENU) /* It is necessary to refresh the disk options * menu when toggling the tray state */ menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); +#endif } } else From 90f2ebeac1708935547920acedecb784ac722cd5 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 14 Jan 2020 18:51:40 +0100 Subject: [PATCH 054/148] Update CHANGES.md --- CHANGES.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 0149c74f70..286aad6fcf 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,16 @@ # Future - ANDROID: Prevent crash when Android device is minimized and you go back to the app +- DISK CONTROL: Cycle Disk Tray now becomes Eject Disk or Insert Disk depending upon current drive state +- DISK CONTROL: Current Disk Index is only shown when the current disk has been ejected +- DISK CONTROL: The old Insert Disk entry has been changed to Load New Disk, and is only shown when a disk is currently inserted (this is because loading a new disk from the filesystem - i.e. bypassing the m3u playlist disk index interface - automatically ejects and inserts disks, and so cannot be done while the virtual drive is empty) +- DISK CONTROL: The Current Disk Index may now be set more easily via a drop-down list. +- DISK CONTROL: Selecting Eject Disk automatically moves the menu selection to the Current Disk Index entry +- DISK CONTROL: Selecting an index via the Current Disk Index drop-down list automatically moves the menu selection back to Insert Disk +- DISK CONTROL: The Disk Control entry sublabels have been changed for greater clarity +- DISK CONTROL: All of the horrendous notification spam has been removed. Notifications are now only shown in the event of an error, or when the menu itself does not provide sufficient visual feedback (note that using hotkeys to swap disks still produces the old style notifications, since this is typically only done while content is running - i.e. no menu). The duration of disk-related info notifications has also been reduced to a more sane level. +- DISK CONTROL: A new Resume content after changing disks option has been added under Settings > User Interface. When enabled (default setting), content is resumed automatically after selecting either Insert Disk or Load New Disk (when disabled, the menu remains open, obviously...) +- DISK CONTROL/BUGFIX: The Disk Control menu now has the correct title +- DISK CONTROL/BUGFIX: Selecting a disk via the Load New Disk file browser no longer flushes the user back to the top level menu (it now correctly returns to the Disk Control menu) # 1.8.3 - ANDROID/BUGFIX: Fix 'Install or Restore Core' regression From d89b7f93b23abef12953b92330c3c941eab5429e Mon Sep 17 00:00:00 2001 From: orbea Date: Tue, 14 Jan 2020 10:20:07 -0800 Subject: [PATCH 055/148] qb: Update the exists function. --- qb/qb.init.sh | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/qb/qb.init.sh b/qb/qb.init.sh index 13b6cf9cc9..db02927296 100644 --- a/qb/qb.init.sh +++ b/qb/qb.init.sh @@ -23,22 +23,29 @@ exists() while [ $# -gt 0 ]; do arg="$1" shift 1 - case "$arg" in ''|*/) continue ;; esac - x="${arg##*/}" - z="${arg%/*}" - [ ! -f "$z/$x" ] || [ ! -x "$z/$x" ] && [ "$z/$x" = "$arg" ] && - continue - [ "$x" = "$z" ] && [ -x "$z/$x" ] && [ ! -f "$arg" ] && z= - p=":$z:$PATH" - while [ "$p" != "${p#*:}" ]; do - p="${p#*:}" - d="${p%%:*}" - if [ -f "$d/$x" ] && [ -x "$d/$x" ]; then - printf %s\\n "$d/$x" - v=0 - break - fi - done + case "$arg" in + ''|*/ ) + : + ;; + */* ) + if [ -f "$arg" ] && [ -x "$arg" ]; then + printf %s\\n "$arg" + v=0 + fi + ;; + * ) + p=":$PATH" + while [ "$p" != "${p#*:}" ]; do + p="${p#*:}" + d="${p%%:*}/$arg" + if [ -f "$d" ] && [ -x "$d" ]; then + printf %s\\n "$d" + v=0 + break + fi + done + ;; + esac done return $v } From 6cfe0ea77cbac39ebb400510bc4da74dfb92c4c6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 14 Jan 2020 20:20:54 +0100 Subject: [PATCH 056/148] (Audio) Update --- audio/drivers/coreaudio.c | 75 ++++++++++++-------------------------- audio/drivers/coreaudio3.m | 39 ++++++-------------- 2 files changed, 36 insertions(+), 78 deletions(-) diff --git a/audio/drivers/coreaudio.c b/audio/drivers/coreaudio.c index 735089a226..0a8ca82971 100644 --- a/audio/drivers/coreaudio.c +++ b/audio/drivers/coreaudio.c @@ -52,9 +52,7 @@ typedef struct coreaudio size_t buffer_size; } coreaudio_t; -#if TARGET_OS_IOS -static bool g_interrupted = false; -#endif +static bool g_interrupted; static void coreaudio_free(void *data) { @@ -245,7 +243,7 @@ static void *coreaudio_init(const char *device, #else comp = AudioComponentFindNext(NULL, &desc); #endif - if (!comp) + if (comp == NULL) goto error; #if (defined(__MACH__) && (defined(__ppc__) || defined(__ppc64__))) @@ -346,61 +344,36 @@ static ssize_t coreaudio_write(void *data, const void *buf_, size_t size) const uint8_t *buf = (const uint8_t*)buf_; size_t written = 0; - if (dev->nonblock) + while (!g_interrupted && size > 0) { - bool cond = size > 0; -#if TARGET_OS_IOS - cond = cond && !g_interrupted; -#endif - if (cond) + size_t write_avail; + + slock_lock(dev->lock); + + write_avail = fifo_write_avail(dev->buffer); + if (write_avail > size) + write_avail = size; + + fifo_write(dev->buffer, buf, write_avail); + buf += write_avail; + written += write_avail; + size -= write_avail; + + if (dev->nonblock) { - size_t write_avail; - - slock_lock(dev->lock); - - write_avail = fifo_write_avail(dev->buffer); - if (write_avail > size) - write_avail = size; - - fifo_write(dev->buffer, buf, write_avail); - buf += write_avail; - written += write_avail; - size -= write_avail; - slock_unlock(dev->lock); + break; } - } - else - { -#if TARGET_OS_IOS - while (!g_interrupted && size > 0) -#else - while (size > 0) -#endif - { - size_t write_avail; - - slock_lock(dev->lock); - - write_avail = fifo_write_avail(dev->buffer); - if (write_avail > size) - write_avail = size; - - fifo_write(dev->buffer, buf, write_avail); - buf += write_avail; - written += write_avail; - size -= write_avail; #if TARGET_OS_IPHONE - if (write_avail == 0 && !scond_wait_timeout( - dev->cond, dev->lock, 3000000)) - g_interrupted = true; + if (write_avail == 0 && !scond_wait_timeout( + dev->cond, dev->lock, 3000000)) + g_interrupted = true; #else - if (write_avail == 0) - scond_wait(dev->cond, dev->lock); + if (write_avail == 0) + scond_wait(dev->cond, dev->lock); #endif - slock_unlock(dev->lock); - } + slock_unlock(dev->lock); } return written; diff --git a/audio/drivers/coreaudio3.m b/audio/drivers/coreaudio3.m index 511338f8d4..0849233353 100644 --- a/audio/drivers/coreaudio3.m +++ b/audio/drivers/coreaudio3.m @@ -260,37 +260,22 @@ static bool g_interrupted; - (ssize_t)writeFloat:(const float *)data samples:(size_t)samples { size_t written = 0; - - if (_nonBlock) + while (!g_interrupted && samples > 0) { - if (!g_interrupted && samples > 0) - { - size_t write_avail = rb_avail(&_rb); - if (write_avail > samples) - write_avail = samples; + size_t write_avail = rb_avail(&_rb); + if (write_avail > samples) + write_avail = samples; - rb_write_data(&_rb, data, write_avail); - data += write_avail; - written += write_avail; - samples -= write_avail; - } - } - else - { - while (!g_interrupted && samples > 0) - { - size_t write_avail = rb_avail(&_rb); - if (write_avail > samples) - write_avail = samples; + rb_write_data(&_rb, data, write_avail); + data += write_avail; + written += write_avail; + samples -= write_avail; - rb_write_data(&_rb, data, write_avail); - data += write_avail; - written += write_avail; - samples -= write_avail; + if (_nonBlock) + break; - if (write_avail == 0) - dispatch_semaphore_wait(_sema, DISPATCH_TIME_FOREVER); - } + if (write_avail == 0) + dispatch_semaphore_wait(_sema, DISPATCH_TIME_FOREVER); } return written; From c1137ee3fa708fd6dd29cfecf58d7aa69def3144 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 14 Jan 2020 20:22:06 +0100 Subject: [PATCH 057/148] CoreAudio - Put g_interrupted behind IOS ifdefs --- audio/drivers/coreaudio.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/audio/drivers/coreaudio.c b/audio/drivers/coreaudio.c index 0a8ca82971..e148f4b0ff 100644 --- a/audio/drivers/coreaudio.c +++ b/audio/drivers/coreaudio.c @@ -52,7 +52,9 @@ typedef struct coreaudio size_t buffer_size; } coreaudio_t; +#if TARGET_OS_IOS static bool g_interrupted; +#endif static void coreaudio_free(void *data) { @@ -344,7 +346,11 @@ static ssize_t coreaudio_write(void *data, const void *buf_, size_t size) const uint8_t *buf = (const uint8_t*)buf_; size_t written = 0; +#if TARGET_OS_IOS while (!g_interrupted && size > 0) +#else + while (size > 0) +#endif { size_t write_avail; From 614e5bc44fa62c9291e0064903c34e3df4e93190 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 14 Jan 2020 20:28:23 +0100 Subject: [PATCH 058/148] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 286aad6fcf..f592589d19 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,7 @@ - DISK CONTROL: A new Resume content after changing disks option has been added under Settings > User Interface. When enabled (default setting), content is resumed automatically after selecting either Insert Disk or Load New Disk (when disabled, the menu remains open, obviously...) - DISK CONTROL/BUGFIX: The Disk Control menu now has the correct title - DISK CONTROL/BUGFIX: Selecting a disk via the Load New Disk file browser no longer flushes the user back to the top level menu (it now correctly returns to the Disk Control menu) +- LIBNX/SWITCH: Updated libnx integration to v3.0.0. This also cherry-picks libnx commit 583d6bb92dcbb33b6bb4a0fa1a9df6e3725d6ef6, which should fix the requirement having to turn rumble off and on in the system settings once per reboot # 1.8.3 - ANDROID/BUGFIX: Fix 'Install or Restore Core' regression From 8ab162ffb18c9a094ef7975acfc78dd4a96f3f61 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 14 Jan 2020 20:28:41 +0100 Subject: [PATCH 059/148] Update CHANGES.md --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index f592589d19..4e08b761e5 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,5 @@ # Future -- ANDROID: Prevent crash when Android device is minimized and you go back to the app +- ANDROID/BUGFIX: Prevent crash when Android device is minimized and you go back to the app - DISK CONTROL: Cycle Disk Tray now becomes Eject Disk or Insert Disk depending upon current drive state - DISK CONTROL: Current Disk Index is only shown when the current disk has been ejected - DISK CONTROL: The old Insert Disk entry has been changed to Load New Disk, and is only shown when a disk is currently inserted (this is because loading a new disk from the filesystem - i.e. bypassing the m3u playlist disk index interface - automatically ejects and inserts disks, and so cannot be done while the virtual drive is empty) From e24934d5ea748c30f5f3d30d8a09a49c15bb637d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 14 Jan 2020 21:40:57 +0100 Subject: [PATCH 060/148] Improve compile time checks for determining if ffmpeg version supports hardware decoder --- cores/libretro-ffmpeg/ffmpeg_core.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/cores/libretro-ffmpeg/ffmpeg_core.c b/cores/libretro-ffmpeg/ffmpeg_core.c index fbef927563..0c1628a1b1 100644 --- a/cores/libretro-ffmpeg/ffmpeg_core.c +++ b/cores/libretro-ffmpeg/ffmpeg_core.c @@ -94,7 +94,13 @@ static unsigned sw_sws_threads; static video_buffer_t *video_buffer; static tpool_t *tpool; -#if LIBAVUTIL_VERSION_MAJOR > 55 +/* If libavutil is at least version 55 or higher, + * and if libavcodec is at least version 57.80.100 or higher, + * enable hardware acceleration */ +#define ENABLE_HW_ACCEL ((LIBAVUTIL_VERSION_MAJOR > 55) && ENABLE_HW_ACCEL_CHECK2()) +#define ENABLE_HW_ACCEL_CHECK2() ((LIBAVCODEC_VERSION_MAJOR == 57 && LIBAVCODEC_VERSION_MINOR >= 80 && LIBAVCODEC_VERSION_MICRO >= 100) || (LIBAVCODEC_VERSION_MAJOR > 57)) + +#if ENABLE_HW_ACCEL static enum AVHWDeviceType hw_decoder; static bool hw_decoding_enabled; static enum AVPixelFormat pix_fmt; @@ -278,7 +284,7 @@ void CORE_PREFIX(retro_get_system_av_info)(struct retro_system_av_info *info) void CORE_PREFIX(retro_set_environment)(retro_environment_t cb) { static const struct retro_variable vars[] = { -#if LIBAVUTIL_VERSION_MAJOR > 55 +#if ENABLE_HW_ACCEL { "ffmpeg_hw_decoder", "Use Hardware decoder (restart); off|auto|" "cuda|d3d11va|drm|dxva2|mediacodec|opencl|qsv|vaapi|vdpau|videotoolbox" }, #endif @@ -409,7 +415,7 @@ static void check_variables(bool firststart) slock_unlock(decode_thread_lock); } -#if LIBAVUTIL_VERSION_MAJOR > 55 +#if ENABLE_HW_ACCEL if (firststart) { hw_var.key = "ffmpeg_hw_decoder"; @@ -837,7 +843,7 @@ void CORE_PREFIX(retro_run)(void) CORE_PREFIX(audio_batch_cb)(audio_buffer, to_read_frames); } -#if LIBAVUTIL_VERSION_MAJOR > 55 +#if ENABLE_HW_ACCEL /* * Try to initialize a specific HW decoder defined by type. * Optionaly tests the pixel format list for a compatible pixel format. @@ -936,7 +942,7 @@ static enum AVPixelFormat select_decoder(AVCodecContext *ctx, { enum AVPixelFormat format = AV_PIX_FMT_NONE; -#if LIBAVUTIL_VERSION_MAJOR > 55 +#if ENABLE_HW_ACCEL if (!force_sw_decoder) { if (hw_decoder == AV_HWDEVICE_TYPE_NONE) @@ -960,7 +966,7 @@ static enum AVPixelFormat select_decoder(AVCodecContext *ctx, format = fctx->streams[video_stream_index]->codec->pix_fmt; -#if LIBAVUTIL_VERSION_MAJOR > 55 +#if ENABLE_HW_ACCEL hw_decoding_enabled = false; } else @@ -970,7 +976,7 @@ static enum AVPixelFormat select_decoder(AVCodecContext *ctx, return format; } -#if LIBAVUTIL_VERSION_MAJOR > 55 +#if ENABLE_HW_ACCEL /* Callback used by ffmpeg to configure the pixelformat to use. */ static enum AVPixelFormat get_format(AVCodecContext *ctx, const enum AVPixelFormat *pix_fmts) @@ -1005,7 +1011,7 @@ static bool open_codec(AVCodecContext **ctx, enum AVMediaType type, unsigned ind { video_stream_index = index; -#if LIBAVUTIL_VERSION_MAJOR > 55 +#if ENABLE_HW_ACCEL vctx->get_format = get_format; pix_fmt = select_decoder((*ctx), NULL); #else @@ -1293,7 +1299,7 @@ static void sws_worker_thread(void *arg) AVFrame *tmp_frame = NULL; video_decoder_context_t *ctx = (video_decoder_context_t*) arg; -#if LIBAVUTIL_VERSION_MAJOR > 55 +#if ENABLE_HW_ACCEL if (hw_decoding_enabled) tmp_frame = ctx->hw_source; else @@ -1336,7 +1342,7 @@ static void sws_worker_thread(void *arg) #endif av_frame_unref(ctx->source); -#if LIBAVUTIL_VERSION_MAJOR > 55 +#if ENABLE_HW_ACCEL av_frame_unref(ctx->hw_source); #endif @@ -1394,7 +1400,7 @@ static void decode_video(AVCodecContext *ctx, AVPacket *pkt, size_t frame_size) goto end; } -#if LIBAVUTIL_VERSION_MAJOR > 55 +#if ENABLE_HW_ACCEL if (hw_decoding_enabled) /* Copy data from VRAM to RAM */ if ((ret = av_hwframe_transfer_data(decoder_ctx->hw_source, decoder_ctx->source, 0)) < 0) From ab49806a5f8d3215080ace7346a2a2297b40408f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 14 Jan 2020 22:09:00 +0100 Subject: [PATCH 061/148] add another ifdef --- cores/libretro-ffmpeg/ffmpeg_core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cores/libretro-ffmpeg/ffmpeg_core.c b/cores/libretro-ffmpeg/ffmpeg_core.c index 0c1628a1b1..d9d28d9ecd 100644 --- a/cores/libretro-ffmpeg/ffmpeg_core.c +++ b/cores/libretro-ffmpeg/ffmpeg_core.c @@ -1754,8 +1754,10 @@ static void decode_thread(void *data) for (i = 0; (int)i < audio_streams_num; i++) swr_free(&swr[i]); +#if ENABLE_HW_ACCEL if (vctx && vctx->hw_device_ctx) av_buffer_unref(&vctx->hw_device_ctx); +#endif packet_buffer_destroy(audio_packet_buffer); packet_buffer_destroy(video_packet_buffer); From 04af898fe57ae9260deeb49380f57c21d5fe0a21 Mon Sep 17 00:00:00 2001 From: orbea Date: Tue, 14 Jan 2020 14:07:13 -0800 Subject: [PATCH 062/148] qb: Remove potentially unsafe uses of eval. --- qb/qb.libs.sh | 57 +++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/qb/qb.libs.sh b/qb/qb.libs.sh index 044cd32a4c..790e729779 100644 --- a/qb/qb.libs.sh +++ b/qb/qb.libs.sh @@ -45,6 +45,8 @@ check_compiler() TEMP_CODE="$TEMP_C" TEST_C="void $2(void); int main(void) { $2(); return 0; }" fi + + BUILD_DIRS="$INCLUDE_DIRS $LIBRARY_DIRS" } # check_enabled: @@ -157,43 +159,44 @@ check_lib() printf %s\\n 'int main(void) { return 0; }' > "$TEMP_CODE" fi - val="$2" lib="${3% }" include="${7:-}" error="${8:-}" answer='no' + printf %s "$MSG $lib ... " - eval "set -- $INCLUDE_DIRS $LIBRARY_DIRS $5 $FLAGS $LDFLAGS $lib" - $(printf %s "$COMPILER") -o "$TEMP_EXE" "$TEMP_CODE" "$@" \ + + $(printf %s "$COMPILER") -o "$TEMP_EXE" "$TEMP_CODE" \ + $(printf %s "$BUILD_DIRS $5 $FLAGS $LDFLAGS $lib") \ >>config.log 2>&1 && answer='yes' + printf %s\\n "$answer" if [ "$answer" = 'yes' ] && [ "$include" ]; then answer='no' - eval "set -- $INCLUDES" - for dir do + for dir in $(printf %s "$INCLUDES"); do [ "$answer" = 'yes' ] && break printf %s "Checking existence of /$dir/$include ... " if [ -d "/$dir/$include" ]; then - eval "${val}_CFLAGS=\"-I/$dir/$include\"" + eval "${2}_CFLAGS=\"-I/$dir/$include\"" answer='yes' fi printf %s\\n "$answer" done fi - eval "HAVE_$val=\"$answer\"" + eval "HAVE_$2=\"$answer\"" rm -f -- "$TEMP_CODE" "$TEMP_EXE" if [ "$answer" = 'no' ]; then [ "$error" ] && die 1 "$error" - setval="$(eval "printf %s \"\$USER_$val\"")" + setval="$(eval "printf %s \"\$USER_$2\"")" if [ "$setval" = 'yes' ]; then die 1 "Forced to build with library $lib, but cannot locate. Exiting ..." fi else - eval "${val}_LIBS=\"$lib\"" - PKG_CONF_USED="$PKG_CONF_USED $val" + eval "${2}_LIBS=\"$lib\"" + PKG_CONF_USED="$PKG_CONF_USED $2" fi return 0 @@ -225,42 +228,39 @@ check_pkgconf() return 0 } - val="$1" ver="${3:-0.0}" err="${4:-}" lib="${5:-}" answer='no' version='no' - eval "set -- ${2#* }" - for pkgnam do + for pkgnam in $(printf %s "${2#* }"); do [ "$answer" = 'yes' ] && break printf %s "$MSG $pkgnam$ECHOBUF ... " - eval "set -- $ver" - for pkgver do + for pkgver in $(printf %s "$ver"); do if "$PKG_CONF_PATH" --atleast-version="$pkgver" "$pkgnam"; then answer='yes' version="$("$PKG_CONF_PATH" --modversion "$pkgnam")" - eval "${val}_CFLAGS=\"$("$PKG_CONF_PATH" --cflags "$pkgnam")\"" - eval "${val}_LIBS=\"$("$PKG_CONF_PATH" --libs "$pkgnam")\"" - eval "${val}_VERSION=\"$pkgver\"" + eval "${1}_CFLAGS=\"$("$PKG_CONF_PATH" --cflags "$pkgnam")\"" + eval "${1}_LIBS=\"$("$PKG_CONF_PATH" --libs "$pkgnam")\"" + eval "${1}_VERSION=\"$pkgver\"" break fi done printf %s\\n "$version" done - eval "HAVE_$val=\"$answer\"" + eval "HAVE_$1=\"$answer\"" if [ "$answer" = 'no' ]; then [ "$lib" != 'true' ] || return 0 [ "$err" ] && die 1 "$err" - setval="$(eval "printf %s \"\$USER_$val\"")" + setval="$(eval "printf %s \"\$USER_$1\"")" if [ "$setval" = 'yes' ]; then die 1 "Forced to build with package $pkg, but cannot locate. Exiting ..." fi else - PKG_CONF_USED="$PKG_CONF_USED $val" + PKG_CONF_USED="$PKG_CONF_USED $1" fi } @@ -282,8 +282,8 @@ check_header() printf %s\\n "int main(void) { return 0; }" >> "$TEMP_C" answer='no' printf %s "Checking presence of header file $CHECKHEADER ... " - eval "set -- $CFLAGS $INCLUDE_DIRS" - $(printf %s "$CC") -o "$TEMP_EXE" "$TEMP_C" "$@" >>config.log 2>&1 && + $(printf %s "$CC") -o "$TEMP_EXE" "$TEMP_C" \ + $(printf %s "$BUILD_DIRS $CFLAGS $LDFLAGS") >>config.log 2>&1 && answer='yes' eval "HAVE_$val=\"$answer\"" printf %s\\n "$answer" @@ -319,8 +319,8 @@ EOF val="$1" macro="$2" printf %s "Checking presence of predefined macro $macro$ECHOBUF ... " - eval "set -- $CFLAGS $INCLUDE_DIRS" - $(printf %s "$CC") -o "$TEMP_EXE" "$TEMP_C" "$@" >>config.log 2>&1 && + $(printf %s "$CC") -o "$TEMP_EXE" "$TEMP_C" \ + $(printf %s "$BUILD_DIRS $CFLAGS $LDFLAGS") >>config.log 2>&1 && answer='yes' eval "HAVE_$val=\"$answer\"" printf %s\\n "$answer" @@ -412,8 +412,7 @@ create_config_header() shift done - eval "set -- $CONFIG_DEFINES" - for VAR do + for VAR in $(printf %s "$CONFIG_DEFINES"); do printf %s\\n "#define ${VAR%%=*} ${VAR#*=}" done @@ -486,8 +485,8 @@ create_config_make() esac shift done - eval "set -- $MAKEFILE_DEFINES" - for VAR do + + for VAR in $(printf %s "$MAKEFILE_DEFINES"); do printf %s\\n "${VAR%%=*} = ${VAR#*=}" done From 0dbfd721b3c95570ba9af8b639e43c799b536656 Mon Sep 17 00:00:00 2001 From: orbea Date: Tue, 14 Jan 2020 20:06:09 -0800 Subject: [PATCH 063/148] qb: Move BUILD_DIRS to the correct function. --- qb/qb.libs.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/qb/qb.libs.sh b/qb/qb.libs.sh index 790e729779..9f899dc591 100644 --- a/qb/qb.libs.sh +++ b/qb/qb.libs.sh @@ -28,6 +28,7 @@ add_dirs() shift done eval "${ADD}_DIRS=\"\${${ADD}_DIRS# }\"" + BUILD_DIRS="$INCLUDE_DIRS $LIBRARY_DIRS" } # check_compiler: @@ -45,8 +46,6 @@ check_compiler() TEMP_CODE="$TEMP_C" TEST_C="void $2(void); int main(void) { $2(); return 0; }" fi - - BUILD_DIRS="$INCLUDE_DIRS $LIBRARY_DIRS" } # check_enabled: From fc7dc3cef792707a31f7efef6b6b38257db008eb Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jan 2020 05:19:41 +0100 Subject: [PATCH 064/148] (Camera) Add stub null camera driver --- retroarch.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/retroarch.c b/retroarch.c index a5ca1ffc26..b89de3520f 100644 --- a/retroarch.c +++ b/retroarch.c @@ -922,12 +922,21 @@ static midi_driver_t *midi_drivers[] = { &midi_null }; +static void *nullcamera_init(const char *device, uint64_t caps, + unsigned width, unsigned height) { return (void*)-1; } +static void nullcamera_free(void *data) { } +static bool nullcamera_start(void *data) { return true; } +static void nullcamera_stop(void *data) { } +static bool nullcamera_poll(void *a, + retro_camera_frame_raw_framebuffer_t b, + retro_camera_frame_opengl_texture_t c) { return true; } + static camera_driver_t camera_null = { - NULL, - NULL, - NULL, - NULL, - NULL, + nullcamera_init, + nullcamera_free, + nullcamera_start, + nullcamera_stop, + nullcamera_poll, "null", }; From 4f145a4f4ff263b6990047472deca0cf79d21caf Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 15 Jan 2020 05:29:50 +0100 Subject: [PATCH 065/148] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 4e08b761e5..5556d5a280 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,6 @@ # Future - ANDROID/BUGFIX: Prevent crash when Android device is minimized and you go back to the app +- CAMERA/BUGFIX: Fix crash when a core requires the camera driver and the platform only has a null driver. This would crash mgba on Wii for example - DISK CONTROL: Cycle Disk Tray now becomes Eject Disk or Insert Disk depending upon current drive state - DISK CONTROL: Current Disk Index is only shown when the current disk has been ejected - DISK CONTROL: The old Insert Disk entry has been changed to Load New Disk, and is only shown when a disk is currently inserted (this is because loading a new disk from the filesystem - i.e. bypassing the m3u playlist disk index interface - automatically ejects and inserts disks, and so cannot be done while the virtual drive is empty) From d41b7770c4b00c569817a05171d4d67886bc279f Mon Sep 17 00:00:00 2001 From: orbea Date: Tue, 14 Jan 2020 20:17:15 -0800 Subject: [PATCH 066/148] qb: Fix the qt configure check with older compilers. --- Makefile | 2 +- Makefile.common | 4 ++++ qb/config.libs.sh | 7 +++++-- qb/config.moc.sh | 2 +- qb/qb.libs.sh | 8 ++++++-- 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 734865b00e..6a280ea1b4 100644 --- a/Makefile +++ b/Makefile @@ -109,7 +109,7 @@ endif DEF_FLAGS += -Wall $(INCLUDE_DIRS) -I. -Ideps -Ideps/stb CFLAGS += $(DEF_FLAGS) -CXXFLAGS += $(DEF_FLAGS) -std=c++11 -D__STDC_CONSTANT_MACROS +CXXFLAGS += $(DEF_FLAGS) -D__STDC_CONSTANT_MACROS OBJCFLAGS := $(CFLAGS) -D__STDC_CONSTANT_MACROS ifeq ($(HAVE_CXX), 1) diff --git a/Makefile.common b/Makefile.common index bd0f504e88..883fc79fc4 100644 --- a/Makefile.common +++ b/Makefile.common @@ -7,6 +7,10 @@ ifeq ($(HAVE_STACK_USAGE), 1) DEF_FLAGS += -fstack-usage endif +ifeq ($(HAVE_CXX11), 1) + CXXFLAGS += $(CXX11_CFLAGS) +endif + ifeq ($(HAVE_GL_CONTEXT),) HAVE_GL_CONTEXT = 0 HAVE_GL_MODERN = 0 diff --git a/qb/config.libs.sh b/qb/config.libs.sh index a9ba42e56b..451552fc3b 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -5,9 +5,10 @@ # check_header, check_macro and check_switch are not used. check_switch '' C99 -std=gnu99 "Cannot find C99 compatible compiler." -check_switch '' NOUNUSED -Wno-unused-result +check_switch cxx CXX11 -std=c++11 '' +check_switch '' NOUNUSED -Wno-unused-result '' add_define MAKEFILE NOUNUSED "$HAVE_NOUNUSED" -check_switch '' NOUNUSED_VARIABLE -Wno-unused-variable +check_switch '' NOUNUSED_VARIABLE -Wno-unused-variable '' add_define MAKEFILE NOUNUSED_VARIABLE "$HAVE_NOUNUSED_VARIABLE" # There are still broken 64-bit Linux distros out there. :) @@ -264,6 +265,8 @@ if [ "$HAVE_SDL2" = 'yes' ] && [ "$HAVE_SDL" = 'yes' ]; then HAVE_SDL=no fi +check_enabled CXX11 CXX C++ 'C++11 support is' false + check_platform Haiku DISCORD 'Discord is' false check_enabled CXX DISCORD discord 'The C++ compiler is' false check_enabled CXX QT 'Qt companion' 'The C++ compiler is' false diff --git a/qb/config.moc.sh b/qb/config.moc.sh index 7ae6f27418..3914ebf7e8 100644 --- a/qb/config.moc.sh +++ b/qb/config.moc.sh @@ -1,4 +1,4 @@ QT_VERSION=qt5 -QT_FLAGS="$QT5CORE_CFLAGS $QT5CORE_LIBS" +QT_FLAGS="$CXX11_CFLAGS $QT5CORE_CFLAGS $QT5CORE_LIBS" add_define MAKEFILE QT_VERSION "$QT_VERSION" diff --git a/qb/qb.libs.sh b/qb/qb.libs.sh index 790e729779..a7b690dffd 100644 --- a/qb/qb.libs.sh +++ b/qb/qb.libs.sh @@ -343,12 +343,16 @@ check_switch() printf %s\\n 'int main(void) { return 0; }' > "$TEMP_CODE" answer='no' printf %s "Checking for availability of switch $3 in $COMPILER ... " - $(printf %s "$COMPILER") -o "$TEMP_EXE" "$TEMP_CODE" "$3" \ + $(printf %s "$COMPILER") -o "$TEMP_EXE" "$TEMP_CODE" \ + $(printf %s "$BUILD_DIRS $CFLAGS $3 -Werror $LDFLAGS") \ >>config.log 2>&1 && answer='yes' eval "HAVE_$2=\"$answer\"" printf %s\\n "$answer" rm -f -- "$TEMP_CODE" "$TEMP_EXE" - if [ "$answer" = 'no' ] && [ "${4:-}" ]; then + if [ "$answer" = 'yes' ]; then + eval "${2}_CFLAGS=\"$3\"" + PKG_CONF_USED="$PKG_CONF_USED $2" + elif [ "${4:-}" ]; then die 1 "$4" fi } From 77baa1c9300eb6c56a3180154a4af6d6db53b8c5 Mon Sep 17 00:00:00 2001 From: orbea Date: Tue, 14 Jan 2020 22:12:22 -0800 Subject: [PATCH 067/148] qb: Clean up. --- qb/config.libs.sh | 21 +++++++++------------ qb/qb.system.sh | 4 +++- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/qb/config.libs.sh b/qb/config.libs.sh index a9ba42e56b..8830ba6432 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -112,22 +112,19 @@ if [ "$HAVE_ANGLE" = 'yes' ]; then add_opt OPENGLES yes add_define MAKEFILE OPENGLES_LIBS "-lGLESv2" -case "$(uname -s)" in - MINGW32*) - add_dirs LIBRARY ./pkg/windows/x86 + case "$PLATFORM_NAME" in + MINGW32* ) + add_dirs LIBRARY ./pkg/windows/x86 ;; - MINGW64*) - add_dirs LIBRARY ./pkg/windows/x86_64 + MINGW64* ) + add_dirs LIBRARY ./pkg/windows/x86_64 ;; - *) - ;; -esac - + esac else check_header EGL EGL/egl.h EGL/eglext.h -# some systems have EGL libs, but no pkgconfig -# https://github.com/linux-sunxi/sunxi-mali/pull/8 -check_val '' EGL "-l${VC_PREFIX}EGL $EXTRA_GL_LIBS" '' "${VC_PREFIX}egl" '' '' true + # some systems have EGL libs, but no pkgconfig + # https://github.com/linux-sunxi/sunxi-mali/pull/8 + check_val '' EGL "-l${VC_PREFIX}EGL $EXTRA_GL_LIBS" '' "${VC_PREFIX}egl" '' '' true fi if [ "$HAVE_EGL" = 'yes' ]; then diff --git a/qb/qb.system.sh b/qb/qb.system.sh index 0d7fd597b8..49e4458ca2 100644 --- a/qb/qb.system.sh +++ b/qb/qb.system.sh @@ -1,3 +1,5 @@ +PLATFORM_NAME="$(uname -s)" + if [ -n "${CROSS_COMPILE:=}" ]; then case "$CROSS_COMPILE" in *'-mingw32'*) OS='Win32';; @@ -7,7 +9,7 @@ if [ -n "${CROSS_COMPILE:=}" ]; then fi if [ -z "$CROSS_COMPILE" ] || [ -z "$OS" ]; then - case "$(uname)" in + case "$PLATFORM_NAME" in 'Linux') OS='Linux';; *'BSD') OS='BSD';; 'Darwin') OS='Darwin';; From d48d4385d939182fac4986176ce1c93ed065f447 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jan 2020 08:47:59 +0100 Subject: [PATCH 068/148] (Wayland) Silence warning --- gfx/drivers_context/wayland_ctx.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gfx/drivers_context/wayland_ctx.c b/gfx/drivers_context/wayland_ctx.c index 58c6bac247..e996afd7e7 100644 --- a/gfx/drivers_context/wayland_ctx.c +++ b/gfx/drivers_context/wayland_ctx.c @@ -1687,9 +1687,11 @@ static bool gfx_ctx_wl_set_video_mode(void *data, return true; +#if defined(HAVE_EGL) || defined(HAVE_VULKAN) error: gfx_ctx_wl_destroy(data); return false; +#endif } bool input_wl_init(void *data, const char *joypad_name); From e78605950693ef93efb7856264383f31752f741d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Jan 2020 09:11:17 +0100 Subject: [PATCH 069/148] frontend_ctx_null - add missing function pointer --- frontend/frontend_driver.c | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/frontend_driver.c b/frontend/frontend_driver.c index 8b8c68c845..1fc6f96a8e 100644 --- a/frontend/frontend_driver.c +++ b/frontend/frontend_driver.c @@ -69,6 +69,7 @@ static frontend_ctx_driver_t frontend_ctx_null = { NULL, /* get_cpu_model_name */ NULL, /* get_user_language */ "null", + NULL, /* get_video_driver */ }; static frontend_ctx_driver_t *frontend_ctx_drivers[] = { From 8d6b70c22c90176d7f1861aea2a8a0c20b3dfe4f Mon Sep 17 00:00:00 2001 From: orbea Date: Wed, 15 Jan 2020 06:27:42 -0800 Subject: [PATCH 070/148] Don't use uname -a. --- gfx/video_filters/Makefile | 26 ++++++++++------------ libretro-common/audio/dsp_filters/Makefile | 10 ++++----- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/gfx/video_filters/Makefile b/gfx/video_filters/Makefile index 8d4c0259f3..2ba8930c1b 100644 --- a/gfx/video_filters/Makefile +++ b/gfx/video_filters/Makefile @@ -7,20 +7,18 @@ PREFIX := /usr INSTALLDIR := $(PREFIX)/lib/retroarch/filters/video ifeq ($(platform),) -platform = unix -ifeq ($(shell uname -a),) - platform = win -else ifneq ($(findstring MINGW,$(shell uname -a)),) - platform = win -else ifneq ($(findstring Darwin,$(shell uname -a)),) - platform = osx - arch = intel -ifeq ($(shell uname -p),powerpc) - arch = ppc -endif -else ifneq ($(findstring win,$(shell uname -a)),) - platform = win -endif + platform = unix + ifeq ($(shell uname -s),) + platform = win + else ifneq ($(findstring Darwin,$(shell uname -s)),) + platform = osx + arch = intel + ifeq ($(shell uname -p),powerpc) + arch = ppc + endif + else ifneq ($(findstring MINGW,$(shell uname -s)),) + platform = win + endif endif ifeq ($(platform),gcc) diff --git a/libretro-common/audio/dsp_filters/Makefile b/libretro-common/audio/dsp_filters/Makefile index d3c228cd94..02e049df57 100644 --- a/libretro-common/audio/dsp_filters/Makefile +++ b/libretro-common/audio/dsp_filters/Makefile @@ -8,17 +8,15 @@ INSTALLDIR := $(PREFIX)/lib/retroarch/filters/audio ifeq ($(platform),) platform = unix - ifeq ($(shell uname -a),) + ifeq ($(shell uname -s),) platform = win - else ifneq ($(findstring MINGW,$(shell uname -a)),) - platform = win - else ifneq ($(findstring Darwin,$(shell uname -a)),) + else ifneq ($(findstring Darwin,$(shell uname -s)),) platform = osx - arch = intel + arch = intel ifeq ($(shell uname -p),powerpc) arch = ppc endif - else ifneq ($(findstring win,$(shell uname -a)),) + else ifneq ($(findstring MINGW,$(shell uname -s)),) platform = win endif endif From 4bee4429aa50e4e47c3d4c63920f1de9f36bdf2e Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 15 Jan 2020 17:05:04 +0100 Subject: [PATCH 071/148] Update CHANGES.md --- CHANGES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 5556d5a280..eac8b991ab 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,6 @@ # Future + +# 1.8.4 - ANDROID/BUGFIX: Prevent crash when Android device is minimized and you go back to the app - CAMERA/BUGFIX: Fix crash when a core requires the camera driver and the platform only has a null driver. This would crash mgba on Wii for example - DISK CONTROL: Cycle Disk Tray now becomes Eject Disk or Insert Disk depending upon current drive state From ab4e3e8c753941fe42da7aca8cc5d4ee1cb3abf1 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 15 Jan 2020 17:05:43 +0100 Subject: [PATCH 072/148] Update version.all --- version.all | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/version.all b/version.all index 927062e2ae..c61e20a90b 100644 --- a/version.all +++ b/version.all @@ -6,8 +6,8 @@ # /* - pkg/snap/snapcraft.yaml (including the github url) */ #if 0 -RARCH_VERSION="1.8.3" +RARCH_VERSION="1.8.4" #endif #ifndef PACKAGE_VERSION -#define PACKAGE_VERSION "1.8.3" +#define PACKAGE_VERSION "1.8.4" #endif From 79698981ad7355b20bd9be3e153de54b4d975cae Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 15 Jan 2020 17:06:00 +0100 Subject: [PATCH 073/148] Update version.dtd --- version.dtd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.dtd b/version.dtd index 9adb143770..7f50a63133 100644 --- a/version.dtd +++ b/version.dtd @@ -1 +1 @@ - + From b23fcf238b9e95d092225a7a0a161ad717ca2479 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 15 Jan 2020 17:07:00 +0100 Subject: [PATCH 074/148] Update RetroArch_iOS9-Info.plist --- pkg/apple/RetroArch_iOS9-Info.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/apple/RetroArch_iOS9-Info.plist b/pkg/apple/RetroArch_iOS9-Info.plist index e2761c5515..1f12f843fa 100644 --- a/pkg/apple/RetroArch_iOS9-Info.plist +++ b/pkg/apple/RetroArch_iOS9-Info.plist @@ -33,11 +33,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.8.3 + 1.8.4 CFBundleSignature ???? CFBundleVersion - 1.8.3 + 1.8.4 LSRequiresIPhoneOS UIApplicationExitsOnSuspend From eeb0c65b6efdf04a445568dfbc3330006fbc5ac0 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 15 Jan 2020 17:08:02 +0100 Subject: [PATCH 075/148] Update Info.plist --- pkg/apple/OSX/Info.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/apple/OSX/Info.plist b/pkg/apple/OSX/Info.plist index 9584f88a77..bd7251c24f 100644 --- a/pkg/apple/OSX/Info.plist +++ b/pkg/apple/OSX/Info.plist @@ -30,11 +30,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.8.3 + 1.8.4 CFBundleSignature ???? CFBundleVersion - 1.8.3 + 1.8.4 LSMinimumSystemVersion ${MACOSX_DEPLOYMENT_TARGET} NSHighResolutionCapable From 22f24bd48f38965b92efa069a437752998ac34a4 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 15 Jan 2020 17:09:10 +0100 Subject: [PATCH 076/148] Update Info_Metal.plist --- pkg/apple/OSX/Info_Metal.plist | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/apple/OSX/Info_Metal.plist b/pkg/apple/OSX/Info_Metal.plist index 85ff481a28..8c0c5716c1 100644 --- a/pkg/apple/OSX/Info_Metal.plist +++ b/pkg/apple/OSX/Info_Metal.plist @@ -30,17 +30,17 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.8.3 + 1.8.4 CFBundleSignature ???? CFBundleVersion - 1.8.3 + 1.8.4 LSMinimumSystemVersion ${MACOSX_DEPLOYMENT_TARGET} NSHighResolutionCapable NSHumanReadableCopyright - Copyright © 2019 RetroArch. All rights reserved. + Copyright © 2020 RetroArch. All rights reserved. NSMainNibFile MainMenu_Metal NSPrincipalClass From 62dda5fdbfc57b33f28176a0b6f198716cdbb00c Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 15 Jan 2020 17:09:26 +0100 Subject: [PATCH 077/148] Update Info.plist --- pkg/apple/OSX/Info.plist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/apple/OSX/Info.plist b/pkg/apple/OSX/Info.plist index bd7251c24f..f65ac9efdc 100644 --- a/pkg/apple/OSX/Info.plist +++ b/pkg/apple/OSX/Info.plist @@ -40,7 +40,7 @@ NSHighResolutionCapable NSHumanReadableCopyright - Copyright © 2019 RetroArch. All rights reserved. + Copyright © 2020 RetroArch. All rights reserved. NSMainNibFile MainMenu NSPrincipalClass From c89e557158429e677ca2c5c3afc1fabc7996f8b6 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 15 Jan 2020 17:12:15 +0100 Subject: [PATCH 078/148] Update bar-descriptor.xml --- pkg/qnx/bar-descriptor.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/qnx/bar-descriptor.xml b/pkg/qnx/bar-descriptor.xml index 4c5a0d4fd5..dcba068ef0 100644 --- a/pkg/qnx/bar-descriptor.xml +++ b/pkg/qnx/bar-descriptor.xml @@ -2,7 +2,7 @@ com.RetroArch - 1.8.2 + 1.8.4 3 Cross-platform entertainment system Team Libretro From 548d1bae9e1886abf42f450f768a691767f92f06 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 15 Jan 2020 17:12:35 +0100 Subject: [PATCH 079/148] Update retroarch-sailfishos.spec --- pkg/sailfishos/retroarch-sailfishos.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/sailfishos/retroarch-sailfishos.spec b/pkg/sailfishos/retroarch-sailfishos.spec index 8969943472..295d8164b1 100644 --- a/pkg/sailfishos/retroarch-sailfishos.spec +++ b/pkg/sailfishos/retroarch-sailfishos.spec @@ -1,6 +1,6 @@ Name: retroarch -Version: 1.8.2 -Release: v1.2 +Version: 1.8.4 +Release: v1.8.4 Summary: Official reference frontend for libretro Group: Applications/Emulators From 68bc6b37ae063d14973df050ef751b79ce46eef9 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 15 Jan 2020 17:17:43 +0100 Subject: [PATCH 080/148] Update AndroidManifest.xml --- pkg/android/phoenix/AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/android/phoenix/AndroidManifest.xml b/pkg/android/phoenix/AndroidManifest.xml index 3eb7173549..cf15f73441 100644 --- a/pkg/android/phoenix/AndroidManifest.xml +++ b/pkg/android/phoenix/AndroidManifest.xml @@ -2,8 +2,8 @@ From de052537ec078fc4dc4f71dc8f5033bc5794bae5 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 15 Jan 2020 17:18:05 +0100 Subject: [PATCH 081/148] Update AndroidManifest.xml --- pkg/android/phoenix-legacy/AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/android/phoenix-legacy/AndroidManifest.xml b/pkg/android/phoenix-legacy/AndroidManifest.xml index 55bc95a7dc..47cd8467c5 100644 --- a/pkg/android/phoenix-legacy/AndroidManifest.xml +++ b/pkg/android/phoenix-legacy/AndroidManifest.xml @@ -1,8 +1,8 @@ From dd2c9c911b17bb0557ef5cbbdfe64485b5c3daa6 Mon Sep 17 00:00:00 2001 From: orbea Date: Wed, 15 Jan 2020 09:23:49 -0800 Subject: [PATCH 082/148] qb: Don't set cc_works in test_compiler. --- qb/qb.comp.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/qb/qb.comp.sh b/qb/qb.comp.sh index 582f2bc26b..5a25e69f75 100644 --- a/qb/qb.comp.sh +++ b/qb/qb.comp.sh @@ -33,7 +33,6 @@ test_compiler () $(printf %s "$1") -o "$TEMP_EXE" "$2" >/dev/null 2>&1 || return 1 compiler="${compiler# }" - cc_works=1 return 0 } From 4171c93bff036149bfde25bd4e9e94cba23eb757 Mon Sep 17 00:00:00 2001 From: orbea Date: Tue, 14 Jan 2020 21:35:49 -0800 Subject: [PATCH 083/148] qb: Improve the gnu99 compiler check. --- Makefile | 24 ++++++++++-------------- qb/config.libs.sh | 8 +++++++- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index 6a280ea1b4..bc0056be1a 100644 --- a/Makefile +++ b/Makefile @@ -106,6 +106,16 @@ ifneq ($(findstring Win32,$(OS)),) LDFLAGS += -mwindows endif +ifneq ($(CXX_BUILD), 1) + ifneq ($(C89_BUILD),) + CFLAGS += -std=c89 -ansi -pedantic -Werror=pedantic -Wno-long-long + else ifeq ($(HAVE_C99), 1) + CFLAGS += $(C99_CFLAGS) + endif + + CFLAGS += -D_GNU_SOURCE +endif + DEF_FLAGS += -Wall $(INCLUDE_DIRS) -I. -Ideps -Ideps/stb CFLAGS += $(DEF_FLAGS) @@ -127,20 +137,6 @@ else LINK = $(CC) endif -ifneq ($(CXX_BUILD), 1) - ifneq ($(GNU90_BUILD), 1) - ifneq ($(findstring icc,$(CC)),) - CFLAGS += -std=c99 -D_GNU_SOURCE - else - CFLAGS += -std=gnu99 -D_GNU_SOURCE - endif - endif - - ifneq ($(C89_BUILD),) - CFLAGS += -std=c89 -ansi -pedantic -Werror=pedantic -Wno-long-long - endif -endif - ifeq ($(NOUNUSED), yes) CFLAGS += -Wno-unused-result CXXFLAGS += -Wno-unused-result diff --git a/qb/config.libs.sh b/qb/config.libs.sh index b26065ca0a..19b58bffa4 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -4,7 +4,13 @@ # Only needed when check_enabled ($2), check_platform, check_lib, check_pkgconf, # check_header, check_macro and check_switch are not used. -check_switch '' C99 -std=gnu99 "Cannot find C99 compatible compiler." +check_switch '' C99 -std=gnu99 '' + +if [ "$HAVE_C99" = 'no' ]; then + HAVE_C99='auto' + check_switch '' C99 -std=c99 'Cannot find a C99 compatible compiler.' +fi + check_switch cxx CXX11 -std=c++11 '' check_switch '' NOUNUSED -Wno-unused-result '' add_define MAKEFILE NOUNUSED "$HAVE_NOUNUSED" From e7733abc409ec2f30bf750ae455077fb761b9701 Mon Sep 17 00:00:00 2001 From: jdgleaver Date: Wed, 15 Jan 2020 17:59:15 +0000 Subject: [PATCH 084/148] (Playlist Management) Add 'Clean Playlist' option --- intl/msg_hash_lbl.h | 2 + intl/msg_hash_us.h | 20 ++ menu/cbs/menu_cbs_ok.c | 22 ++ menu/cbs/menu_cbs_sublabel.c | 8 + menu/drivers/materialui.c | 9 +- menu/drivers/ozone/ozone_texture.c | 1 + menu/drivers/xmb.c | 1 + menu/menu_displaylist.c | 11 +- menu/menu_driver.h | 2 + msg_hash.h | 5 + playlist.c | 43 +++ playlist.h | 7 + tasks/task_playlist_manager.c | 545 ++++++++++++++++++++++++++--- tasks/tasks_internal.h | 1 + 14 files changed, 626 insertions(+), 51 deletions(-) diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 8e70c2f39e..54fb67f026 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -974,6 +974,8 @@ MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_MANAGER_RIGHT_THUMBNAIL_MODE, "playlist_manager_right_thumbnail_mode") MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_MANAGER_LEFT_THUMBNAIL_MODE, "playlist_manager_left_thumbnail_mode") +MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_MANAGER_CLEAN_PLAYLIST, + "playlist_manager_clean_playlist") MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_SETTINGS_BEGIN, "playlist_settings_begin") MSG_HASH(MENU_ENUM_LABEL_POINTER_ENABLE, diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 9377adf68c..3081630f42 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -2507,6 +2507,22 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_THUMBNAIL_MODE_DEFAULT, "System Default" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_CLEAN_PLAYLIST, + "Clean Playlist" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAYLIST_MANAGER_CLEAN_PLAYLIST, + "Remove invalid/duplicate entries and validate core associations." + ) +MSG_HASH( + MSG_PLAYLIST_MANAGER_CLEANING_PLAYLIST, + "Cleaning playlist: " + ) +MSG_HASH( + MSG_PLAYLIST_MANAGER_PLAYLIST_CLEANED, + "Playlist cleaned: " + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_POINTER_ENABLE, "Touch Support" @@ -10094,6 +10110,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_DELETE_PLAYLIST, "Delete Playlist" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DELETE_PLAYLIST, + "Remove playlist from filesystem." + ) #ifdef HAVE_LAKKA MSG_HASH( MENU_ENUM_LABEL_VALUE_LOCALAP_ENABLE, diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index b785a2c829..2486a83280 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -6370,6 +6370,25 @@ static int action_ok_playlist_reset_cores(const char *path, return 0; } +static int action_ok_playlist_clean(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + playlist_t *playlist = playlist_get_cached(); + const char *playlist_path = NULL; + + if (!playlist) + return -1; + + playlist_path = playlist_get_conf_path(playlist); + + if (string_is_empty(playlist_path)) + return -1; + + task_push_pl_manager_clean_playlist(playlist_path); + + return 0; +} + static int is_rdb_entry(enum msg_hash_enums enum_idx) { switch (enum_idx) @@ -6785,6 +6804,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_PLAYLIST_MANAGER_RESET_CORES: BIND_ACTION_OK(cbs, action_ok_playlist_reset_cores); break; + case MENU_ENUM_LABEL_PLAYLIST_MANAGER_CLEAN_PLAYLIST: + BIND_ACTION_OK(cbs, action_ok_playlist_clean); + break; case MENU_ENUM_LABEL_RECORDING_SETTINGS: BIND_ACTION_OK(cbs, action_ok_push_recording_settings_list); break; diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index bbd3fd90e8..8d2372a6f9 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -148,6 +148,8 @@ default_sublabel_macro(action_bind_sublabel_playlist_manager_list, MENU_ default_sublabel_macro(action_bind_sublabel_playlist_manager_default_core, MENU_ENUM_SUBLABEL_PLAYLIST_MANAGER_DEFAULT_CORE) default_sublabel_macro(action_bind_sublabel_playlist_manager_reset_cores, MENU_ENUM_SUBLABEL_PLAYLIST_MANAGER_RESET_CORES) default_sublabel_macro(action_bind_sublabel_playlist_manager_label_display_mode, MENU_ENUM_SUBLABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE) +default_sublabel_macro(action_bind_sublabel_playlist_manager_clean_playlist, MENU_ENUM_SUBLABEL_PLAYLIST_MANAGER_CLEAN_PLAYLIST) +default_sublabel_macro(action_bind_sublabel_delete_playlist, MENU_ENUM_SUBLABEL_DELETE_PLAYLIST) default_sublabel_macro(action_bind_sublabel_network_settings_list, MENU_ENUM_SUBLABEL_NETWORK_SETTINGS) default_sublabel_macro(action_bind_sublabel_network_on_demand_thumbnails, MENU_ENUM_SUBLABEL_NETWORK_ON_DEMAND_THUMBNAILS) default_sublabel_macro(action_bind_sublabel_user_settings_list, MENU_ENUM_SUBLABEL_USER_SETTINGS) @@ -2796,6 +2798,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_playlist_manager_label_display_mode); break; + case MENU_ENUM_LABEL_PLAYLIST_MANAGER_CLEAN_PLAYLIST: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_playlist_manager_clean_playlist); + break; case MENU_ENUM_LABEL_PLAYLIST_MANAGER_RIGHT_THUMBNAIL_MODE: settings = config_get_ptr(); /* Uses same sublabels as MENU_ENUM_LABEL_THUMBNAILS */ @@ -2832,6 +2837,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_left_thumbnails); } break; + case MENU_ENUM_LABEL_DELETE_PLAYLIST: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_delete_playlist); + break; case MENU_ENUM_LABEL_AI_SERVICE_URL: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_ai_service_url); break; diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 410e526884..c4e4f2a434 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -7511,7 +7511,8 @@ static void materialui_list_insert( } else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_RENAME_ENTRY)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_RESET_CORE_ASSOCIATION)) || - string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_PLAYLIST_MANAGER_RESET_CORES))) + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_PLAYLIST_MANAGER_RESET_CORES)) || + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_PLAYLIST_MANAGER_CLEAN_PLAYLIST))) { node->icon_texture_index = MUI_TEXTURE_RENAME; node->has_icon = true; @@ -7618,7 +7619,8 @@ static void materialui_list_insert( node->icon_texture_index = MUI_TEXTURE_LOAD_CONTENT; node->has_icon = true; } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DELETE_ENTRY))) + else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DELETE_ENTRY)) || + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DELETE_PLAYLIST))) { node->icon_texture_index = MUI_TEXTURE_REMOVE; node->has_icon = true; @@ -7751,11 +7753,8 @@ static void materialui_list_insert( string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_SEARCH_SETTINGS)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_START_OR_CONT)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_INPUT_META_CHEAT_SEARCH)) || - string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_PLAYLIST_MANAGER_DEFAULT_CORE)) || - string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_THUMBNAILS_MATERIALUI)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_LEFT_THUMBNAILS_MATERIALUI)) || - string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DELETE_PLAYLIST)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_VIDEO_SHADER_NUM_PASSES)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_FILE_LOAD)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_FILE_LOAD_APPEND)) || diff --git a/menu/drivers/ozone/ozone_texture.c b/menu/drivers/ozone/ozone_texture.c index fe05d0a9f3..7bb6d281cf 100644 --- a/menu/drivers/ozone/ozone_texture.c +++ b/menu/drivers/ozone/ozone_texture.c @@ -285,6 +285,7 @@ menu_texture_item ozone_entries_icon_get_texture(ozone_handle_t *ozone, case MENU_ENUM_LABEL_VRR_RUNLOOP_ENABLE: case MENU_ENUM_LABEL_AUTOSAVE_INTERVAL: case MENU_ENUM_LABEL_FRAME_TIME_COUNTER_SETTINGS: + case MENU_ENUM_LABEL_PLAYLIST_MANAGER_CLEAN_PLAYLIST: return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_RELOAD]; case MENU_ENUM_LABEL_SHUTDOWN: return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_SHUTDOWN]; diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 5d2ae2d2ed..15da4b7e7e 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -2353,6 +2353,7 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb, case MENU_ENUM_LABEL_VRR_RUNLOOP_ENABLE: case MENU_ENUM_LABEL_AUTOSAVE_INTERVAL: case MENU_ENUM_LABEL_FRAME_TIME_COUNTER_SETTINGS: + case MENU_ENUM_LABEL_PLAYLIST_MANAGER_CLEAN_PLAYLIST: return xmb->textures.list[XMB_TEXTURE_RELOAD]; case MENU_ENUM_LABEL_RENAME_ENTRY: return xmb->textures.list[XMB_TEXTURE_RENAME]; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index f074cb2a1c..940ea71a65 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2869,7 +2869,7 @@ static bool menu_displaylist_parse_playlist_manager_settings( msg_hash_to_str(MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_RESET_CORES), msg_hash_to_str(MENU_ENUM_LABEL_PLAYLIST_MANAGER_RESET_CORES), MENU_ENUM_LABEL_PLAYLIST_MANAGER_RESET_CORES, - FILE_TYPE_PLAYLIST_ENTRY, 0, 0); + MENU_SETTING_ACTION_PLAYLIST_MANAGER_RESET_CORES, 0, 0); /* Label display mode */ menu_entries_append_enum(info->list, @@ -2916,9 +2916,14 @@ static bool menu_displaylist_parse_playlist_manager_settings( MENU_ENUM_LABEL_PLAYLIST_MANAGER_LEFT_THUMBNAIL_MODE, MENU_SETTING_PLAYLIST_MANAGER_LEFT_THUMBNAIL_MODE, 0, 0); - /* TODO - Add: - * - Remove invalid entries */ + /* Clean playlist */ + menu_entries_append_enum(info->list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_CLEAN_PLAYLIST), + msg_hash_to_str(MENU_ENUM_LABEL_PLAYLIST_MANAGER_CLEAN_PLAYLIST), + MENU_ENUM_LABEL_PLAYLIST_MANAGER_CLEAN_PLAYLIST, + MENU_SETTING_ACTION_PLAYLIST_MANAGER_CLEAN_PLAYLIST, 0, 0); + /* Delete playlist */ menu_entries_append_enum(info->list, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DELETE_PLAYLIST), msg_hash_to_str(MENU_ENUM_LABEL_DELETE_PLAYLIST), diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 8aba059670..0aac3add12 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -213,6 +213,8 @@ enum menu_settings_type MENU_SET_LOAD_CDROM_LIST, MENU_SET_CDROM_INFO, MENU_SETTING_ACTION_DELETE_PLAYLIST, + MENU_SETTING_ACTION_PLAYLIST_MANAGER_RESET_CORES, + MENU_SETTING_ACTION_PLAYLIST_MANAGER_CLEAN_PLAYLIST, MENU_SETTING_MANUAL_CONTENT_SCAN_DIR, MENU_SETTING_MANUAL_CONTENT_SCAN_SYSTEM_NAME, diff --git a/msg_hash.h b/msg_hash.h index d8459f1eb7..25b63312ab 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -2027,6 +2027,11 @@ enum msg_hash_enums MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_THUMBNAIL_MODE_DEFAULT, + MENU_LABEL(PLAYLIST_MANAGER_CLEAN_PLAYLIST), + + MSG_PLAYLIST_MANAGER_CLEANING_PLAYLIST, + MSG_PLAYLIST_MANAGER_PLAYLIST_CLEANED, + MENU_LABEL(CORE_UPDATER_SETTINGS), MENU_LABEL(LAKKA_SERVICES), MENU_LABEL(SHADER_APPLY_CHANGES), diff --git a/playlist.c b/playlist.c index ec7efd9f2b..b7a6653469 100644 --- a/playlist.c +++ b/playlist.c @@ -2498,6 +2498,49 @@ bool playlist_index_is_valid(playlist_t *playlist, size_t idx, string_is_equal(path_basename(playlist->entries[idx].core_path), path_basename(core_path)); } +bool playlist_entries_are_equal( + const struct playlist_entry *entry_a, + const struct playlist_entry *entry_b, + bool fuzzy_archive_match) +{ + char real_path_a[PATH_MAX_LENGTH]; + char real_core_path_a[PATH_MAX_LENGTH]; + + real_path_a[0] = '\0'; + real_core_path_a[0] = '\0'; + + /* Sanity check */ + if (!entry_a || !entry_b) + return false; + + if (string_is_empty(entry_a->path) && + string_is_empty(entry_a->core_path) && + string_is_empty(entry_b->path) && + string_is_empty(entry_b->core_path)) + return true; + + /* Check content paths */ + if (!string_is_empty(entry_a->path)) + { + strlcpy(real_path_a, entry_a->path, sizeof(real_path_a)); + path_resolve_realpath(real_path_a, sizeof(real_path_a), true); + } + + if (!playlist_path_equal( + real_path_a, entry_b->path, fuzzy_archive_match)) + return false; + + /* Check core paths */ + if (!string_is_empty(entry_a->core_path)) + { + strlcpy(real_core_path_a, entry_a->core_path, sizeof(real_core_path_a)); + if (!string_is_equal(real_core_path_a, "DETECT")) + path_resolve_realpath(real_core_path_a, sizeof(real_core_path_a), true); + } + + return playlist_core_path_equal(real_core_path_a, entry_b->core_path); +} + void playlist_get_crc32(playlist_t *playlist, size_t idx, const char **crc32) { diff --git a/playlist.h b/playlist.h index 8eac8e8ccd..d724e73f73 100644 --- a/playlist.h +++ b/playlist.h @@ -252,6 +252,13 @@ void command_playlist_update_write( bool playlist_index_is_valid(playlist_t *playlist, size_t idx, const char *path, const char *core_path); +/* Returns true if specified playlist entries have + * identical content and core paths */ +bool playlist_entries_are_equal( + const struct playlist_entry *entry_a, + const struct playlist_entry *entry_b, + bool fuzzy_archive_match); + void playlist_get_crc32(playlist_t *playlist, size_t idx, const char **crc32); diff --git a/tasks/task_playlist_manager.c b/tasks/task_playlist_manager.c index 149f68c850..af892e1c40 100644 --- a/tasks/task_playlist_manager.c +++ b/tasks/task_playlist_manager.c @@ -22,6 +22,7 @@ #include #include +#include #include "tasks_internal.h" @@ -29,11 +30,15 @@ #include "../msg_hash.h" #include "../file_path_special.h" #include "../playlist.h" +#include "../core_info.h" enum pl_manager_status { PL_MANAGER_BEGIN = 0, - PL_MANAGER_ITERATE_ENTRY, + PL_MANAGER_ITERATE_ENTRY_RESET_CORE, + PL_MANAGER_ITERATE_ENTRY_VALIDATE, + PL_MANAGER_VALIDATE_END, + PL_MANAGER_ITERATE_ENTRY_CHECK_DUPLICATE, PL_MANAGER_END }; @@ -46,11 +51,12 @@ typedef struct pl_manager_handle size_t list_index; enum pl_manager_status status; bool use_old_format; + bool fuzzy_archive_match; } pl_manager_handle_t; -/**************************/ -/* Reset Associated Cores */ -/**************************/ +/*********************/ +/* Utility Functions */ +/*********************/ static void free_pl_manager_handle(pl_manager_handle_t *pl_manager) { @@ -79,6 +85,36 @@ static void free_pl_manager_handle(pl_manager_handle_t *pl_manager) pl_manager = NULL; } +static void pl_manager_write_playlist( + playlist_t *playlist, const char *playlist_path, bool use_old_format) +{ + playlist_t *cached_playlist = playlist_get_cached(); + + /* Sanity check */ + if (!playlist || string_is_empty(playlist_path)) + return; + + /* Write any changes to playlist file */ + playlist_write_file(playlist, use_old_format); + + /* If this is the currently cached playlist, then + * it must be re-cached (otherwise changes will be + * lost if the currently cached playlist is saved + * to disk for any reason...) */ + if (cached_playlist) + { + if (string_is_equal(playlist_path, playlist_get_conf_path(cached_playlist))) + { + playlist_free_cached(); + playlist_init_cached(playlist_path, COLLECTION_SIZE); + } + } +} + +/**************************/ +/* Reset Associated Cores */ +/**************************/ + static void task_pl_manager_reset_cores_handler(retro_task_t *task) { pl_manager_handle_t *pl_manager = NULL; @@ -113,10 +149,10 @@ static void task_pl_manager_reset_cores_handler(retro_task_t *task) goto task_finished; /* All good - can start iterating */ - pl_manager->status = PL_MANAGER_ITERATE_ENTRY; + pl_manager->status = PL_MANAGER_ITERATE_ENTRY_RESET_CORE; } break; - case PL_MANAGER_ITERATE_ENTRY: + case PL_MANAGER_ITERATE_ENTRY_RESET_CORE: { const struct playlist_entry *entry = NULL; @@ -128,10 +164,8 @@ static void task_pl_manager_reset_cores_handler(retro_task_t *task) { struct playlist_entry update_entry = {0}; char task_title[PATH_MAX_LENGTH]; - char detect_string[PATH_MAX_LENGTH]; - task_title[0] = '\0'; - detect_string[0] = '\0'; + task_title[0] = '\0'; /* Update progress display */ task_free_title(task); @@ -154,17 +188,11 @@ static void task_pl_manager_reset_cores_handler(retro_task_t *task) task_set_title(task, strdup(task_title)); task_set_progress(task, (pl_manager->list_index * 100) / pl_manager->list_size); - /* Reset core association */ - detect_string[0] = 'D'; - detect_string[1] = 'E'; - detect_string[2] = 'T'; - detect_string[3] = 'E'; - detect_string[4] = 'C'; - detect_string[5] = 'T'; - detect_string[6] = '\0'; - - update_entry.core_path = detect_string; - update_entry.core_name = detect_string; + /* Reset core association + * > The update function reads our entry as const, + * so these casts are safe */ + update_entry.core_path = (char*)"DETECT"; + update_entry.core_name = (char*)"DETECT"; playlist_update( pl_manager->playlist, pl_manager->list_index, &update_entry); @@ -178,26 +206,15 @@ static void task_pl_manager_reset_cores_handler(retro_task_t *task) break; case PL_MANAGER_END: { - playlist_t *cached_playlist = playlist_get_cached(); char task_title[PATH_MAX_LENGTH]; task_title[0] = '\0'; /* Save playlist changes to disk */ - playlist_write_file(pl_manager->playlist, pl_manager->use_old_format); - - /* If this is the currently cached playlist, then - * it must be re-cached (otherwise changes will be - * lost if the currently cached playlist is saved - * to disk for any reason...) */ - if (cached_playlist) - { - if (string_is_equal(pl_manager->playlist_path, playlist_get_conf_path(cached_playlist))) - { - playlist_free_cached(); - playlist_init_cached(pl_manager->playlist_path, COLLECTION_SIZE); - } - } + pl_manager_write_playlist( + pl_manager->playlist, + pl_manager->playlist_path, + pl_manager->use_old_format); /* Update progress display */ task_free_title(task); @@ -255,7 +272,7 @@ bool task_push_pl_manager_reset_cores(const char *playlist_path) task_title[0] = '\0'; /* Sanity check */ - if (!task || !pl_manager) + if (!task || !pl_manager || !settings) goto error; if (string_is_empty(playlist_path)) @@ -287,13 +304,455 @@ bool task_push_pl_manager_reset_cores(const char *playlist_path) task->progress = 0; /* Configure handle */ - pl_manager->playlist_path = strdup(playlist_path); - pl_manager->playlist_name = strdup(playlist_name); - pl_manager->playlist = NULL; - pl_manager->list_size = 0; - pl_manager->list_index = 0; - pl_manager->status = PL_MANAGER_BEGIN; - pl_manager->use_old_format = settings->bools.playlist_use_old_format; + pl_manager->playlist_path = strdup(playlist_path); + pl_manager->playlist_name = strdup(playlist_name); + pl_manager->playlist = NULL; + pl_manager->list_size = 0; + pl_manager->list_index = 0; + pl_manager->status = PL_MANAGER_BEGIN; + pl_manager->use_old_format = settings->bools.playlist_use_old_format; + pl_manager->fuzzy_archive_match = false; /* Not relevant here */ + + task_queue_push(task); + + return true; + +error: + + if (task) + { + free(task); + task = NULL; + } + + if (pl_manager) + { + free(pl_manager); + pl_manager = NULL; + } + + return false; +} + +/******************/ +/* Clean Playlist */ +/******************/ + +static bool pl_manager_content_exists(const char *path) +{ + /* Sanity check */ + if (string_is_empty(path)) + return false; + + /* If content is inside an archive, special + * handling is required... */ + if (path_contains_compressed_file(path)) + { + const char *delim = path_get_archive_delim(path); + char archive_path[PATH_MAX_LENGTH] = {0}; + size_t len = 0; + struct string_list *archive_list = NULL; + const char *content_file = NULL; + bool content_found = false; + + if (!delim) + return false; + + /* Get path of 'parent' archive file */ + len = (size_t)(1 + delim - path); + strlcpy( + archive_path, path, + (len < PATH_MAX_LENGTH ? len : PATH_MAX_LENGTH) * sizeof(char)); + + /* Check if archive itself exists */ + if (!path_is_valid(archive_path)) + return false; + + /* Check if file exists inside archive */ + archive_list = file_archive_get_file_list(archive_path, NULL); + + if (!archive_list) + return false; + + /* > Get playlist entry content file name + * (sans archive file path) */ + content_file = delim; + content_file++; + + if (!string_is_empty(content_file)) + { + size_t i; + + /* > Loop over archive file contents */ + for (i = 0; i < archive_list->size; i++) + { + const char *archive_file = archive_list->elems[i].data; + + if (string_is_empty(archive_file)) + continue; + + if (string_is_equal(content_file, archive_file)) + { + content_found = true; + break; + } + } + } + + /* Clean up */ + string_list_free(archive_list); + + return content_found; + } + /* This is a 'normal' path - just check if + * it's valid */ + else + return path_is_valid(path); +} + +static void pl_manager_validate_core_association( + playlist_t *playlist, size_t entry_index, + const char *core_path, const char *core_name) +{ + struct playlist_entry update_entry = {0}; + + /* Sanity check */ + if (!playlist) + return; + + if (entry_index >= playlist_size(playlist)) + return; + + if (string_is_empty(core_path)) + goto reset_core; + + /* Handle 'DETECT' entries */ + if (string_is_equal(core_path, "DETECT")) + { + if (!string_is_equal(core_name, "DETECT")) + goto reset_core; + } + /* Handle 'builtin' entries */ + else if (string_is_equal(core_path, "builtin")) + { + if (string_is_empty(core_name)) + goto reset_core; + } + /* Handle file path entries */ + else if (!path_is_valid(core_path)) + goto reset_core; + else + { + const char *core_path_basename = path_basename(core_path); + core_info_list_t *core_info = NULL; + char core_display_name[PATH_MAX_LENGTH]; + size_t i; + + core_display_name[0] = '\0'; + + if (string_is_empty(core_path_basename)) + goto reset_core; + + /* Final check - search core info */ + core_info_get_list(&core_info); + + if (core_info) + { + for (i = 0; i < core_info->count; i++) + { + const char *info_display_name = core_info->list[i].display_name; + + if (!string_is_equal( + path_basename(core_info->list[i].path), core_path_basename)) + continue; + + if (!string_is_empty(info_display_name)) + strlcpy(core_display_name, info_display_name, sizeof(core_display_name)); + + break; + } + } + + /* If core_display_name string is empty, it means the + * core wasn't found -> reset association */ + if (string_is_empty(core_display_name)) + goto reset_core; + + /* ...Otherwise, check that playlist entry + * core name is correct */ + if (!string_is_equal(core_name, core_display_name)) + { + update_entry.core_name = core_display_name; + playlist_update(playlist, entry_index, &update_entry); + } + } + + return; + +reset_core: + /* The update function reads our entry as const, + * so these casts are safe */ + update_entry.core_path = (char*)"DETECT"; + update_entry.core_name = (char*)"DETECT"; + + playlist_update(playlist, entry_index, &update_entry); +} + +static void task_pl_manager_clean_playlist_handler(retro_task_t *task) +{ + pl_manager_handle_t *pl_manager = NULL; + + if (!task) + goto task_finished; + + pl_manager = (pl_manager_handle_t*)task->state; + + if (!pl_manager) + goto task_finished; + + if (task_get_cancelled(task)) + goto task_finished; + + switch (pl_manager->status) + { + case PL_MANAGER_BEGIN: + { + /* Load playlist */ + if (!path_is_valid(pl_manager->playlist_path)) + goto task_finished; + + pl_manager->playlist = playlist_init(pl_manager->playlist_path, COLLECTION_SIZE); + + if (!pl_manager->playlist) + goto task_finished; + + pl_manager->list_size = playlist_size(pl_manager->playlist); + + if (pl_manager->list_size < 1) + goto task_finished; + + /* All good - can start iterating */ + pl_manager->status = PL_MANAGER_ITERATE_ENTRY_VALIDATE; + } + break; + case PL_MANAGER_ITERATE_ENTRY_VALIDATE: + { + const struct playlist_entry *entry = NULL; + bool entry_deleted = false; + + /* Update progress display */ + task_set_progress(task, (pl_manager->list_index * 50) / pl_manager->list_size); + + /* Get current entry */ + playlist_get_index( + pl_manager->playlist, pl_manager->list_index, &entry); + + if (entry) + { + /* Check whether playlist content exists on + * the filesystem */ + if (!pl_manager_content_exists(entry->path)) + { + /* Invalid content - delete entry */ + playlist_delete_index(pl_manager->playlist, pl_manager->list_index); + entry_deleted = true; + + /* Update list_size */ + pl_manager->list_size = playlist_size(pl_manager->playlist); + } + /* Content is valid - check if core is valid */ + else + pl_manager_validate_core_association( + pl_manager->playlist, pl_manager->list_index, + entry->core_path, entry->core_name); + } + + /* Increment entry index *if* current entry still + * exists (i.e. if entry was deleted, current index + * will already point to the *next* entry) */ + if (!entry_deleted) + pl_manager->list_index++; + + if (pl_manager->list_index >= pl_manager->list_size) + pl_manager->status = PL_MANAGER_VALIDATE_END; + } + break; + case PL_MANAGER_VALIDATE_END: + { + /* Sanity check - if all (or all but one) + * playlist entries were removed during the + * 'validate' phase, we can stop now */ + if (pl_manager->list_size < 2) + { + pl_manager->status = PL_MANAGER_END; + break; + } + + /* ...otherwise, reset index counter and + * start the duplicates check */ + pl_manager->list_index = 0; + pl_manager->status = PL_MANAGER_ITERATE_ENTRY_CHECK_DUPLICATE; + } + break; + case PL_MANAGER_ITERATE_ENTRY_CHECK_DUPLICATE: + { + const struct playlist_entry *entry = NULL; + bool entry_deleted = false; + + /* Update progress display */ + task_set_progress(task, 50 + (pl_manager->list_index * 50) / pl_manager->list_size); + + /* Get current entry */ + playlist_get_index( + pl_manager->playlist, pl_manager->list_index, &entry); + + if (entry) + { + size_t i; + + /* Loop over all subsequent entries, and check + * whether content + core paths are the same */ + for (i = pl_manager->list_index + 1; i < pl_manager->list_size; i++) + { + const struct playlist_entry *next_entry = NULL; + + /* Get next entry */ + playlist_get_index(pl_manager->playlist, i, &next_entry); + + if (!next_entry) + continue; + + if (playlist_entries_are_equal( + entry, next_entry, pl_manager->fuzzy_archive_match)) + { + /* Duplicate found - delete entry */ + playlist_delete_index(pl_manager->playlist, pl_manager->list_index); + entry_deleted = true; + + /* Update list_size */ + pl_manager->list_size = playlist_size(pl_manager->playlist); + } + } + } + + /* Increment entry index *if* current entry still + * exists (i.e. if entry was deleted, current index + * will already point to the *next* entry) */ + if (!entry_deleted) + pl_manager->list_index++; + + if (pl_manager->list_index + 1 >= pl_manager->list_size) + pl_manager->status = PL_MANAGER_END; + } + break; + case PL_MANAGER_END: + { + char task_title[PATH_MAX_LENGTH]; + + task_title[0] = '\0'; + + /* Save playlist changes to disk */ + pl_manager_write_playlist( + pl_manager->playlist, + pl_manager->playlist_path, + pl_manager->use_old_format); + + /* Update progress display */ + task_free_title(task); + + strlcpy( + task_title, msg_hash_to_str(MSG_PLAYLIST_MANAGER_PLAYLIST_CLEANED), + sizeof(task_title)); + strlcat(task_title, pl_manager->playlist_name, sizeof(task_title)); + + task_set_title(task, strdup(task_title)); + } + /* fall-through */ + default: + task_set_progress(task, 100); + goto task_finished; + } + + return; + +task_finished: + + if (task) + task_set_finished(task, true); + + free_pl_manager_handle(pl_manager); +} + +static bool task_pl_manager_clean_playlist_finder(retro_task_t *task, void *user_data) +{ + pl_manager_handle_t *pl_manager = NULL; + + if (!task || !user_data) + return false; + + if (task->handler != task_pl_manager_clean_playlist_handler) + return false; + + pl_manager = (pl_manager_handle_t*)task->state; + if (!pl_manager) + return false; + + return string_is_equal((const char*)user_data, pl_manager->playlist_path); +} + +bool task_push_pl_manager_clean_playlist(const char *playlist_path) +{ + task_finder_data_t find_data; + char playlist_name[PATH_MAX_LENGTH]; + char task_title[PATH_MAX_LENGTH]; + settings_t *settings = config_get_ptr(); + retro_task_t *task = task_init(); + pl_manager_handle_t *pl_manager = (pl_manager_handle_t*)calloc(1, sizeof(pl_manager_handle_t)); + + playlist_name[0] = '\0'; + task_title[0] = '\0'; + + /* Sanity check */ + if (!task || !pl_manager || !settings) + goto error; + + if (string_is_empty(playlist_path)) + goto error; + + fill_pathname_base_noext(playlist_name, playlist_path, sizeof(playlist_name)); + + if (string_is_empty(playlist_name)) + goto error; + + /* Concurrent management of the same playlist + * is not allowed */ + find_data.func = task_pl_manager_clean_playlist_finder; + find_data.userdata = (void*)playlist_path; + + if (task_queue_find(&find_data)) + goto error; + + /* Configure task */ + strlcpy( + task_title, msg_hash_to_str(MSG_PLAYLIST_MANAGER_CLEANING_PLAYLIST), + sizeof(task_title)); + strlcat(task_title, playlist_name, sizeof(task_title)); + + task->handler = task_pl_manager_clean_playlist_handler; + task->state = pl_manager; + task->title = strdup(task_title); + task->alternative_look = true; + task->progress = 0; + + /* Configure handle */ + pl_manager->playlist_path = strdup(playlist_path); + pl_manager->playlist_name = strdup(playlist_name); + pl_manager->playlist = NULL; + pl_manager->list_size = 0; + pl_manager->list_index = 0; + pl_manager->status = PL_MANAGER_BEGIN; + pl_manager->use_old_format = settings->bools.playlist_use_old_format; + pl_manager->fuzzy_archive_match = settings->bools.playlist_fuzzy_archive_match; task_queue_push(task); diff --git a/tasks/tasks_internal.h b/tasks/tasks_internal.h index 702d5985e1..6e10f8a455 100644 --- a/tasks/tasks_internal.h +++ b/tasks/tasks_internal.h @@ -95,6 +95,7 @@ bool task_push_pl_entry_thumbnail_download( #endif bool task_push_pl_manager_reset_cores(const char *playlist_path); +bool task_push_pl_manager_clean_playlist(const char *playlist_path); bool task_push_image_load(const char *fullpath, bool supports_rgba, unsigned upscale_threshold, From f425d8dc8bdbda7f48f8170f027b0ff5ebde4492 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 15 Jan 2020 19:29:14 +0100 Subject: [PATCH 085/148] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index eac8b991ab..815e3e62f3 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -15,6 +15,7 @@ - DISK CONTROL/BUGFIX: The Disk Control menu now has the correct title - DISK CONTROL/BUGFIX: Selecting a disk via the Load New Disk file browser no longer flushes the user back to the top level menu (it now correctly returns to the Disk Control menu) - LIBNX/SWITCH: Updated libnx integration to v3.0.0. This also cherry-picks libnx commit 583d6bb92dcbb33b6bb4a0fa1a9df6e3725d6ef6, which should fix the requirement having to turn rumble off and on in the system settings once per reboot +- PLAYLISTS: Add 'Clean Playlist' option # 1.8.3 - ANDROID/BUGFIX: Fix 'Install or Restore Core' regression From a87192f8d020d66e524a59cd7a597ef7de92fa16 Mon Sep 17 00:00:00 2001 From: orbea Date: Wed, 15 Jan 2020 10:20:10 -0800 Subject: [PATCH 086/148] qb: Improve the NOUNUSED checks. --- Makefile | 17 +++++------------ Makefile.common | 8 ++++++++ qb/config.libs.sh | 2 -- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index bc0056be1a..00e0258c00 100644 --- a/Makefile +++ b/Makefile @@ -45,6 +45,8 @@ else DEF_FLAGS += -ffast-math endif +DEF_FLAGS += -Wall + ifneq ($(findstring BSD,$(OS)),) DEF_FLAGS += -DBSD LDFLAGS += -L/usr/local/lib @@ -68,7 +70,7 @@ endif include Makefile.common ifeq ($(shell $(CC) -v 2>&1 | grep -c "clang"),1) - DEFINES += -Wno-invalid-source-encoding -Wno-incompatible-ms-struct + DEF_FLAGS += -Wno-invalid-source-encoding -Wno-incompatible-ms-struct endif ifeq ($(shell $(CC) -v 2>&1 | grep -c "tcc"),1) @@ -80,7 +82,7 @@ endif HEADERS = $(wildcard */*/*.h) $(wildcard */*.h) $(wildcard *.h) ifeq ($(MISSING_DECLS), 1) - DEFINES += -Werror=missing-declarations + DEF_FLAGS += -Werror=missing-declarations endif ifeq ($(HAVE_DYLIB), 1) @@ -116,7 +118,7 @@ ifneq ($(CXX_BUILD), 1) CFLAGS += -D_GNU_SOURCE endif -DEF_FLAGS += -Wall $(INCLUDE_DIRS) -I. -Ideps -Ideps/stb +DEF_FLAGS += $(INCLUDE_DIRS) -I. -Ideps -Ideps/stb CFLAGS += $(DEF_FLAGS) CXXFLAGS += $(DEF_FLAGS) -D__STDC_CONSTANT_MACROS @@ -137,15 +139,6 @@ else LINK = $(CC) endif -ifeq ($(NOUNUSED), yes) - CFLAGS += -Wno-unused-result - CXXFLAGS += -Wno-unused-result -endif -ifeq ($(NOUNUSED_VARIABLE), yes) - CFLAGS += -Wno-unused-variable - CXXFLAGS += -Wno-unused-variable -endif - RARCH_OBJ := $(addprefix $(OBJDIR)/,$(OBJ)) ifneq ($(X86),) diff --git a/Makefile.common b/Makefile.common index 883fc79fc4..ee7dcf175d 100644 --- a/Makefile.common +++ b/Makefile.common @@ -7,6 +7,14 @@ ifeq ($(HAVE_STACK_USAGE), 1) DEF_FLAGS += -fstack-usage endif +ifeq ($(HAVE_NOUNUSED), 1) + DEF_FLAGS += $(NOUNUSED_CFLAGS) +endif + +ifeq ($(HAVE_NOUNUSED_VARIABLE), 1) + DEF_FLAGS += $(NOUNUSED_VARIABLE_CFLAGS) +endif + ifeq ($(HAVE_CXX11), 1) CXXFLAGS += $(CXX11_CFLAGS) endif diff --git a/qb/config.libs.sh b/qb/config.libs.sh index 19b58bffa4..4c63f102a1 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -13,9 +13,7 @@ fi check_switch cxx CXX11 -std=c++11 '' check_switch '' NOUNUSED -Wno-unused-result '' -add_define MAKEFILE NOUNUSED "$HAVE_NOUNUSED" check_switch '' NOUNUSED_VARIABLE -Wno-unused-variable '' -add_define MAKEFILE NOUNUSED_VARIABLE "$HAVE_NOUNUSED_VARIABLE" # There are still broken 64-bit Linux distros out there. :) [ -z "$CROSS_COMPILE" ] && [ -d /usr/lib64 ] && add_dirs LIBRARY /usr/lib64 From 4b471a6e01c4a1ddad9d3204ba5cfeae9606c5fd Mon Sep 17 00:00:00 2001 From: Jamiras Date: Thu, 16 Jan 2020 07:36:55 -0700 Subject: [PATCH 087/148] support for extended sega cd memory --- cheevos-new/fixup.c | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/cheevos-new/fixup.c b/cheevos-new/fixup.c index 8994c5e1ad..08d7ca823d 100644 --- a/cheevos-new/fixup.c +++ b/cheevos-new/fixup.c @@ -124,6 +124,7 @@ const uint8_t* rcheevos_patch_address(unsigned address, int console) { rarch_system_info_t* system = runloop_get_system_info(); const void* pointer = NULL; + unsigned original_address = address; if (console == RC_CONSOLE_NINTENDO) { @@ -208,6 +209,21 @@ const uint8_t* rcheevos_patch_address(unsigned address, int console) address += 0x006000 - 0x020000; } } + else if (console == RC_CONSOLE_SEGA_CD) + { + if (address < 0x010000) + { + /* Work RAM. */ + address += 0xFF0000; + CHEEVOS_LOG(RCHEEVOS_TAG "Sega CD memory address %X adjusted to %X\n", original_address, address); + } + else + { + /* CD-ROM peripheral RAM - exposed at virtual address to avoid banking */ + address += 0x80020000 - 0x010000; + CHEEVOS_LOG(RCHEEVOS_TAG "Sega CD memory address %X adjusted to %X\n", original_address, address); + } + } desc = system->mmaps.descriptors; end = desc + system->mmaps.num_descriptors; @@ -216,19 +232,18 @@ const uint8_t* rcheevos_patch_address(unsigned address, int console) { if (((desc->core.start ^ address) & desc->core.select) == 0) { - unsigned addr = address; - pointer = desc->core.ptr; + pointer = desc->core.ptr; + address -= desc->core.start; - address = (unsigned)rcheevos_var_reduce( - (addr - desc->core.start) & desc->disconnect_mask, - desc->core.disconnect); + if (desc->disconnect_mask) + address = (unsigned)rcheevos_var_reduce(address & desc->disconnect_mask, desc->core.disconnect); if (address >= desc->core.len) address -= rcheevos_var_highest_bit(address); address += desc->core.offset; - CHEEVOS_LOG(RCHEEVOS_TAG "address %X set to descriptor %d at offset %X\n", addr, (int)((desc - system->mmaps.descriptors) + 1), address); + CHEEVOS_LOG(RCHEEVOS_TAG "address %X set to descriptor %d at offset %X\n", original_address, (int)((desc - system->mmaps.descriptors) + 1), address); break; } } @@ -236,7 +251,6 @@ const uint8_t* rcheevos_patch_address(unsigned address, int console) else { unsigned i; - unsigned addr = address; for (i = 0; i < 4; i++) { @@ -260,10 +274,9 @@ const uint8_t* rcheevos_patch_address(unsigned address, int console) core_get_memory(&meminfo); - if (addr < meminfo.size) + if (address < meminfo.size) { pointer = meminfo.data; - address = addr; break; } @@ -272,15 +285,15 @@ const uint8_t* rcheevos_patch_address(unsigned address, int console) * it's size is not always set correctly in the core. */ if (i == 0 && console == RC_CONSOLE_NINTENDO) - addr -= 0x6000; + address -= 0x6000; else - addr -= meminfo.size; + address -= meminfo.size; } } if (pointer == NULL) { - CHEEVOS_LOG(RCHEEVOS_TAG "address %X not supported\n", address); + CHEEVOS_LOG(RCHEEVOS_TAG "address %X not supported\n", original_address); return NULL; } From a2e1d622e1245c5935f2db98fecf4febddea39c4 Mon Sep 17 00:00:00 2001 From: jdgleaver Date: Fri, 17 Jan 2020 16:32:54 +0000 Subject: [PATCH 088/148] Add disk control interface API extension --- core.h | 4 +- libretro-common/include/libretro.h | 132 ++++++++++++++++++++++++++--- menu/cbs/menu_cbs_get_value.c | 6 +- menu/cbs/menu_cbs_ok.c | 4 +- menu/menu_displaylist.c | 55 +++++++++--- retroarch.c | 81 ++++++++++++------ 6 files changed, 228 insertions(+), 54 deletions(-) diff --git a/core.h b/core.h index 29fc95767d..c2c090b72e 100644 --- a/core.h +++ b/core.h @@ -67,8 +67,8 @@ typedef struct rarch_system_info bool supports_vfs; - struct retro_disk_control_callback disk_control_cb; - struct retro_location_callback location_cb; + struct retro_disk_control_ext_callback disk_control_cb; + struct retro_location_callback location_cb; struct { diff --git a/libretro-common/include/libretro.h b/libretro-common/include/libretro.h index 2b7fc95a76..4ddb6e89ea 100644 --- a/libretro-common/include/libretro.h +++ b/libretro-common/include/libretro.h @@ -1117,7 +1117,7 @@ enum retro_mod * This may be still be done regardless of the core options * interface version. * - * If version is 1 however, core options may instead be set by + * If version is >= 1 however, core options may instead be set by * passing an array of retro_core_option_definition structs to * RETRO_ENVIRONMENT_SET_CORE_OPTIONS, or a 2D array of * retro_core_option_definition structs to RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL. @@ -1132,8 +1132,8 @@ enum retro_mod * GET_VARIABLE. * This allows the frontend to present these variables to * a user dynamically. - * This should only be called if RETRO_ENVIRONMENT_GET_ENHANCED_CORE_OPTIONS - * returns an API version of 1. + * This should only be called if RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION + * returns an API version of >= 1. * This should be called instead of RETRO_ENVIRONMENT_SET_VARIABLES. * This should be called the first time as early as * possible (ideally in retro_set_environment). @@ -1169,8 +1169,6 @@ enum retro_mod * i.e. it should be feasible to cycle through options * without a keyboard. * - * First entry should be treated as a default. - * * Example entry: * { * "foo_option", @@ -1196,8 +1194,8 @@ enum retro_mod * GET_VARIABLE. * This allows the frontend to present these variables to * a user dynamically. - * This should only be called if RETRO_ENVIRONMENT_GET_ENHANCED_CORE_OPTIONS - * returns an API version of 1. + * This should only be called if RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION + * returns an API version of >= 1. * This should be called instead of RETRO_ENVIRONMENT_SET_VARIABLES. * This should be called the first time as early as * possible (ideally in retro_set_environment). @@ -1257,7 +1255,38 @@ enum retro_mod * * 'data' points to an unsigned variable */ - + +#define RETRO_ENVIRONMENT_GET_DISK_CONTROL_INTERFACE_VERSION 57 + /* unsigned * -- + * Unsigned value is the API version number of the disk control + * interface supported by the frontend. If callback return false, + * API version is assumed to be 0. + * + * In legacy code, the disk control interface is defined by passing + * a struct of type retro_disk_control_callback to + * RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE. + * This may be still be done regardless of the disk control + * interface version. + * + * If version is >= 1 however, the disk control interface may + * instead be defined by passing a struct of type + * retro_disk_control_ext_callback to + * RETRO_ENVIRONMENT_SET_DISK_CONTROL_EXT_INTERFACE. + * This allows the core to provide additional information about + * disk images to the frontend and/or enables extra + * disk control functionality by the frontend. + */ + +#define RETRO_ENVIRONMENT_SET_DISK_CONTROL_EXT_INTERFACE 58 + /* const struct retro_disk_control_ext_callback * -- + * Sets an interface which frontend can use to eject and insert + * disk images, and also obtain information about individual + * disk image files registered by the core. + * This is used for games which consist of multiple images and + * must be manually swapped out by the user (e.g. PSX, floppy disk + * based systems). + */ + /* VFS functionality */ /* File paths: @@ -2307,7 +2336,8 @@ struct retro_keyboard_callback retro_keyboard_event_t callback; }; -/* Callbacks for RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE. +/* Callbacks for RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE & + * RETRO_ENVIRONMENT_SET_DISK_CONTROL_EXT_INTERFACE. * Should be set for implementations which can swap out multiple disk * images in runtime. * @@ -2365,6 +2395,53 @@ typedef bool (RETRO_CALLCONV *retro_replace_image_index_t)(unsigned index, * with replace_image_index. */ typedef bool (RETRO_CALLCONV *retro_add_image_index_t)(void); +/* Sets initial image to insert in drive when calling + * core_load_game(). + * Since we cannot pass the initial index when loading + * content (this would require a major API change), this + * is set by the frontend *before* calling the core's + * retro_load_game()/retro_load_game_special() implementation. + * A core should therefore cache the index/path values and handle + * them inside retro_load_game()/retro_load_game_special(). + * - If 'index' is invalid (index >= get_num_images()), the + * core should ignore the set value and instead use 0 + * - 'path' is used purely for error checking - i.e. when + * content is loaded, the core should verify that the + * disk specified by 'index' has the specified file path. + * This is to guard against auto selecting the wrong image + * if (for example) the user should modify an existing M3U + * playlist. We have to let the core handle this because + * set_initial_image() must be called before loading content, + * i.e. the frontend cannot access image paths in advance + * and thus cannot perform the error check itself. + * If set path and content path do not match, the core should + * ignore the set 'index' value and instead use 0 + * Returns 'false' if index or 'path' are invalid, or core + * does not support this functionality + */ +typedef bool (RETRO_CALLCONV *retro_set_initial_image_t)(unsigned index, const char *path); + +/* Fetches the path of the specified disk image file. + * Returns 'false' if index is invalid (index >= get_num_images()) + * or path is otherwise unavailable. + */ +typedef bool (RETRO_CALLCONV *retro_get_image_path_t)(unsigned index, char *path, size_t len); + +/* Fetches a core-provided 'label' for the specified disk + * image file. In the simplest case this may be a file name + * (without extension), but for cores with more complex + * content requirements information may be provided to + * facilitate user disk swapping - for example, a core + * running floppy-disk-based content may uniquely label + * save disks, data disks, level disks, etc. with names + * corresponding to in-game disk change prompts (so the + * frontend can provide better user guidance than a 'dumb' + * disk index value). + * Returns 'false' if index is invalid (index >= get_num_images()) + * or label is otherwise unavailable. + */ +typedef bool (RETRO_CALLCONV *retro_get_image_label_t)(unsigned index, char *label, size_t len); + struct retro_disk_control_callback { retro_set_eject_state_t set_eject_state; @@ -2378,6 +2455,27 @@ struct retro_disk_control_callback retro_add_image_index_t add_image_index; }; +struct retro_disk_control_ext_callback +{ + retro_set_eject_state_t set_eject_state; + retro_get_eject_state_t get_eject_state; + + retro_get_image_index_t get_image_index; + retro_set_image_index_t set_image_index; + retro_get_num_images_t get_num_images; + + retro_replace_image_index_t replace_image_index; + retro_add_image_index_t add_image_index; + + /* NOTE: Frontend will only attempt to record/restore + * last used disk index if both set_initial_image() + * and get_image_path() are implemented */ + retro_set_initial_image_t set_initial_image; /* Optional - may be NULL */ + + retro_get_image_path_t get_image_path; /* Optional - may be NULL */ + retro_get_image_label_t get_image_label; /* Optional - may be NULL */ +}; + enum retro_pixel_format { /* 0RGB1555, native endian. @@ -2522,8 +2620,20 @@ struct retro_core_option_display }; /* Maximum number of values permitted for a core option - * NOTE: This may be increased on a core-by-core basis - * if required (doing so has no effect on the frontend) */ + * > Note: We have to set a maximum value due the limitations + * of the C language - i.e. it is not possible to create an + * array of structs each containing a variable sized array, + * so the retro_core_option_definition values array must + * have a fixed size. The size limit of 128 is a balancing + * act - it needs to be large enough to support all 'sane' + * core options, but setting it too large may impact low memory + * platforms. In practise, if a core option has more than + * 128 values then the implementation is likely flawed. + * To quote the above API reference: + * "The number of possible options should be very limited + * i.e. it should be feasible to cycle through options + * without a keyboard." + */ #define RETRO_NUM_CORE_OPTION_VALUES_MAX 128 struct retro_core_option_value diff --git a/menu/cbs/menu_cbs_get_value.c b/menu/cbs/menu_cbs_get_value.c index 139f8316f9..fea114f782 100644 --- a/menu/cbs/menu_cbs_get_value.c +++ b/menu/cbs/menu_cbs_get_value.c @@ -762,9 +762,9 @@ static void menu_action_setting_disp_set_label_menu_disk_index( const char *path, char *s2, size_t len2) { - unsigned images = 0, current = 0; - struct retro_disk_control_callback *control = NULL; - rarch_system_info_t *system = runloop_get_system_info(); + unsigned images = 0, current = 0; + struct retro_disk_control_ext_callback *control = NULL; + rarch_system_info_t *system = runloop_get_system_info(); if (!system) return; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 2486a83280..a00f1049c9 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -6115,8 +6115,8 @@ static int action_ok_disk_cycle_tray_status(const char *path, /* Get disk eject state *before* toggling drive status */ if (sys_info) { - const struct retro_disk_control_callback *control = - (const struct retro_disk_control_callback*) + const struct retro_disk_control_ext_callback *control = + (const struct retro_disk_control_ext_callback*) &sys_info->disk_control_cb; if (control) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 940ea71a65..c914248e23 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -3242,17 +3242,17 @@ static unsigned menu_displaylist_parse_content_information( static unsigned menu_displaylist_parse_disk_options( file_list_t *list) { - unsigned count = 0; - rarch_system_info_t *sys_info = + unsigned count = 0; + rarch_system_info_t *sys_info = runloop_get_system_info(); - const struct retro_disk_control_callback *control = NULL; + const struct retro_disk_control_ext_callback *control = NULL; bool disk_ejected; /* Sanity Check */ if (!sys_info) return count; - control = (const struct retro_disk_control_callback*) + control = (const struct retro_disk_control_ext_callback*) &sys_info->disk_control_cb; if (!control || @@ -5356,8 +5356,8 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct if (sys_info) { - const struct retro_disk_control_callback *control = - (const struct retro_disk_control_callback*) + const struct retro_disk_control_ext_callback *control = + (const struct retro_disk_control_ext_callback*) &sys_info->disk_control_cb; /* Check that the required disk control interface @@ -5368,21 +5368,56 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct { unsigned num_images = control->get_num_images(); unsigned current_image = control->get_image_index(); + unsigned num_digits = 0; unsigned i; + /* If core supports labels, index value string + * should be padded to maximum width (otherwise + * labels will be misaligned/ugly) */ + if (control->get_image_label) + { + unsigned digit_counter = num_images; + do + { + num_digits++; + digit_counter = digit_counter / 10; + } + while (digit_counter > 0); + } + /* Loop through disk images */ for (i = 0; i < num_images; i++) { - char current_image_str[256]; + char current_image_str[PATH_MAX_LENGTH]; + char image_label[PATH_MAX_LENGTH]; current_image_str[0] = '\0'; + image_label[0] = '\0'; + + /* Get image label, if supported by core */ + if (control->get_image_label) + if (!control->get_image_label(i, image_label, sizeof(image_label))) + image_label[0] = '\0'; /* Get string representation of disk index * > Note that displayed index starts at '1', * not '0' */ - snprintf( - current_image_str, sizeof(current_image_str), - "%u", i + 1); + if (!string_is_empty(image_label)) + { + /* Note: 2-space gap is intentional + * (for clarity) */ + int n = snprintf( + current_image_str, sizeof(current_image_str), + "%0*u: %s", num_digits, i + 1, image_label); + + /* Suppress GCC warnings... */ + if ((n < 0) || (n >= PATH_MAX_LENGTH)) + n = 0; + } + else + snprintf( + current_image_str, sizeof(current_image_str), + "%0*u", num_digits, i + 1); /* Add menu entry */ if (menu_entries_append_enum(list, diff --git a/retroarch.c b/retroarch.c index b89de3520f..bc98ec6d2c 100644 --- a/retroarch.c +++ b/retroarch.c @@ -5231,14 +5231,14 @@ finish: static void command_event_disk_control_set_eject(bool new_state, bool print_log) { char msg[128]; - bool error = false; - const struct retro_disk_control_callback *control = NULL; - rarch_system_info_t *info = &runloop_system; + bool error = false; + const struct retro_disk_control_ext_callback *control = NULL; + rarch_system_info_t *info = &runloop_system; msg[0] = '\0'; if (info) - control = (const struct retro_disk_control_callback*)&info->disk_control_cb; + control = (const struct retro_disk_control_ext_callback*)&info->disk_control_cb; if (!control || !control->get_num_images) return; @@ -5285,14 +5285,14 @@ static void command_event_disk_control_set_index(unsigned idx, bool print_log) { unsigned num_disks; char msg[128]; - bool error = false; - const struct retro_disk_control_callback *control = NULL; - rarch_system_info_t *info = &runloop_system; + bool error = false; + const struct retro_disk_control_ext_callback *control = NULL; + rarch_system_info_t *info = &runloop_system; msg[0] = '\0'; if (info) - control = (const struct retro_disk_control_callback*)&info->disk_control_cb; + control = (const struct retro_disk_control_ext_callback*)&info->disk_control_cb; if (!control || !control->get_num_images) return; @@ -5349,10 +5349,10 @@ static bool command_event_disk_control_append_image(const char *path) { unsigned new_idx; char msg[128]; - struct retro_game_info info = {0}; - const struct retro_disk_control_callback *control = NULL; - rarch_system_info_t *sysinfo = &runloop_system; - const char *disk_filename = NULL; + struct retro_game_info info = {0}; + const struct retro_disk_control_ext_callback *control = NULL; + rarch_system_info_t *sysinfo = &runloop_system; + const char *disk_filename = NULL; msg[0] = '\0'; @@ -5365,7 +5365,7 @@ static bool command_event_disk_control_append_image(const char *path) return false; if (sysinfo) - control = (const struct retro_disk_control_callback*) + control = (const struct retro_disk_control_ext_callback*) &sysinfo->disk_control_cb; if (!control) @@ -5419,7 +5419,7 @@ static bool command_event_disk_control_append_image(const char *path) * Perform disk cycle to previous index action (Core Disk Options). **/ static void command_event_check_disk_prev( - const struct retro_disk_control_callback *control, bool print_log) + const struct retro_disk_control_ext_callback *control, bool print_log) { unsigned num_disks = 0; unsigned current = 0; @@ -5453,7 +5453,7 @@ static void command_event_check_disk_prev( * Perform disk cycle to next index action (Core Disk Options). **/ static void command_event_check_disk_next( - const struct retro_disk_control_callback *control, bool print_log) + const struct retro_disk_control_ext_callback *control, bool print_log) { unsigned num_disks = 0; unsigned current = 0; @@ -7587,8 +7587,8 @@ TODO: Add a setting for these tweaks */ if (info && info->disk_control_cb.get_num_images) { - const struct retro_disk_control_callback *control = - (const struct retro_disk_control_callback*) + const struct retro_disk_control_ext_callback *control = + (const struct retro_disk_control_ext_callback*) &info->disk_control_cb; if (control) @@ -7624,8 +7624,8 @@ TODO: Add a setting for these tweaks */ if (info && info->disk_control_cb.get_num_images) { - const struct retro_disk_control_callback *control = - (const struct retro_disk_control_callback*) + const struct retro_disk_control_ext_callback *control = + (const struct retro_disk_control_ext_callback*) &info->disk_control_cb; bool print_log = true; @@ -7654,8 +7654,8 @@ TODO: Add a setting for these tweaks */ if (info && info->disk_control_cb.get_num_images) { - const struct retro_disk_control_callback *control = - (const struct retro_disk_control_callback*) + const struct retro_disk_control_ext_callback *control = + (const struct retro_disk_control_ext_callback*) &info->disk_control_cb; bool print_log = true; @@ -7687,8 +7687,8 @@ TODO: Add a setting for these tweaks */ if (info && info->disk_control_cb.get_num_images) { - const struct retro_disk_control_callback *control = - (const struct retro_disk_control_callback*) + const struct retro_disk_control_ext_callback *control = + (const struct retro_disk_control_ext_callback*) &info->disk_control_cb; if (!control) @@ -9803,13 +9803,42 @@ static bool rarch_environment_cb(unsigned cmd, void *data) break; } + case RETRO_ENVIRONMENT_GET_DISK_CONTROL_INTERFACE_VERSION: + /* Current API version is 1 */ + *(unsigned *)data = 1; + break; + case RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE: - RARCH_LOG("[Environ]: SET_DISK_CONTROL_INTERFACE.\n"); + { + const struct retro_disk_control_callback *control_cb = + (const struct retro_disk_control_callback*)data; + + if (control_cb && system) + { + RARCH_LOG("[Environ]: SET_DISK_CONTROL_INTERFACE.\n"); + + system->disk_control_cb.set_eject_state = control_cb->set_eject_state; + system->disk_control_cb.get_eject_state = control_cb->get_eject_state; + system->disk_control_cb.get_image_index = control_cb->get_image_index; + system->disk_control_cb.set_image_index = control_cb->set_image_index; + system->disk_control_cb.get_num_images = control_cb->get_num_images; + system->disk_control_cb.replace_image_index = control_cb->replace_image_index; + system->disk_control_cb.add_image_index = control_cb->add_image_index; + + system->disk_control_cb.set_initial_image = NULL; + system->disk_control_cb.get_image_path = NULL; + system->disk_control_cb.get_image_label = NULL; + } + } + break; + + case RETRO_ENVIRONMENT_SET_DISK_CONTROL_EXT_INTERFACE: + RARCH_LOG("[Environ]: SET_DISK_CONTROL_EXT_INTERFACE.\n"); if (system) system->disk_control_cb = - *(const struct retro_disk_control_callback*)data; + *(const struct retro_disk_control_ext_callback*)data; break; - + case RETRO_ENVIRONMENT_GET_PREFERRED_HW_RENDER: { unsigned *cb = (unsigned*)data; From 3460214467e0b1fec98324b2f016af392c419ddd Mon Sep 17 00:00:00 2001 From: Jamiras Date: Thu, 16 Jan 2020 19:39:29 -0700 Subject: [PATCH 089/148] buffer doesn't survive across CORO boundary --- cheevos-new/cheevos.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cheevos-new/cheevos.c b/cheevos-new/cheevos.c index cf8ab35b08..026960aa1b 100644 --- a/cheevos-new/cheevos.c +++ b/cheevos-new/cheevos.c @@ -210,7 +210,7 @@ static void rcheevos_get_user_agent(char* buffer) int major, minor; char tmp[64]; - ptr = rcheevos_user_agent_prefix + sprintf(rcheevos_user_agent_prefix, "RetroArch/" PACKAGE_VERSION); + ptr = rcheevos_user_agent_prefix + sprintf(rcheevos_user_agent_prefix, "RetroArch/%s", PACKAGE_VERSION); if (frontend && frontend->get_os) { @@ -2486,8 +2486,6 @@ found: *************************************************************************/ CORO_SUB(RCHEEVOS_HTTP_GET) - rcheevos_get_user_agent(buffer); - for (coro->k = 0; coro->k < 5; coro->k++) { if (coro->k != 0) @@ -2513,6 +2511,7 @@ found: continue; } + rcheevos_get_user_agent(buffer); net_http_connection_set_user_agent(coro->conn, buffer); coro->http = net_http_new(coro->conn); From 7325147d8330660e6ff00dd47dd21c7130a3bfc8 Mon Sep 17 00:00:00 2001 From: Jamiras Date: Fri, 17 Jan 2020 19:48:40 -0700 Subject: [PATCH 090/148] add task_push_http_transfer_file --- discord/discord.c | 2 +- menu/cbs/menu_cbs_ok.c | 4 +-- menu/menu_networking.c | 2 +- tasks/task_core_updater.c | 8 ++--- tasks/task_file_transfer.h | 3 ++ tasks/task_http.c | 56 +++++++++++++++++++----------- tasks/task_pl_thumbnail_download.c | 6 ++-- 7 files changed, 50 insertions(+), 31 deletions(-) diff --git a/discord/discord.c b/discord/discord.c index 539575dca7..ff2d1d5d01 100644 --- a/discord/discord.c +++ b/discord/discord.c @@ -149,7 +149,7 @@ static bool discord_download_avatar( strlcpy(transf->path, buf, sizeof(transf->path)); RARCH_LOG("[discord] downloading avatar from: %s\n", url_encoded); - task_push_http_transfer(url_encoded, true, NULL, cb_generic_download, transf); + task_push_http_transfer_file(url_encoded, true, NULL, cb_generic_download, transf); return false; } diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index a00f1049c9..f6fc4b5401 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -3991,7 +3991,7 @@ static int generic_action_ok_network(const char *path, strlcpy(transf->path, url_path, sizeof(transf->path)); net_http_urlencode_full(url_path_encoded, url_path, sizeof(url_path_encoded)); - task_push_http_transfer(url_path_encoded, suppress_msg, url_label, callback, transf); + task_push_http_transfer_file(url_path_encoded, suppress_msg, url_label, callback, transf); return generic_action_ok_displaylist_push(path, NULL, label, type, idx, entry_idx, type_id2); @@ -4293,7 +4293,7 @@ static int action_ok_download_generic(const char *path, else net_http_urlencode_full(s3, s2, sizeof(s3)); - task_push_http_transfer(s3, suppress_msg, msg_hash_to_str(enum_idx), cb, transf); + task_push_http_transfer_file(s3, suppress_msg, msg_hash_to_str(enum_idx), cb, transf); #endif return 0; } diff --git a/menu/menu_networking.c b/menu/menu_networking.c index 7df2fe7ea9..14c60d8199 100644 --- a/menu/menu_networking.c +++ b/menu/menu_networking.c @@ -241,7 +241,7 @@ finish: strlcpy(transf->path, parent_dir, sizeof(transf->path)); net_http_urlencode_full(parent_dir_encoded, parent_dir, PATH_MAX_LENGTH * sizeof(char)); - task_push_http_transfer(parent_dir_encoded, true, + task_push_http_transfer_file(parent_dir_encoded, true, "index_dirs", cb_net_generic_subdir, transf); free(parent_dir); diff --git a/tasks/task_core_updater.c b/tasks/task_core_updater.c index 9ff481fcae..af84836c4a 100644 --- a/tasks/task_core_updater.c +++ b/tasks/task_core_updater.c @@ -260,7 +260,7 @@ static void task_core_updater_get_list_handler(retro_task_t *task) transf->user_data = (void*)list_handle; /* Push HTTP transfer task */ - list_handle->http_task = (retro_task_t*)task_push_http_transfer( + list_handle->http_task = (retro_task_t*)task_push_http_transfer_file( buildbot_url, true, NULL, cb_http_task_core_updater_get_list, transf); @@ -288,7 +288,7 @@ static void task_core_updater_get_list_handler(retro_task_t *task) task, task_get_progress(list_handle->http_task)); } - /* Wait for task_push_http_transfer() + /* Wait for task_push_http_transfer_file() * callback to trigger */ if (list_handle->http_task_complete) list_handle->status = CORE_UPDATER_LIST_END; @@ -626,7 +626,7 @@ static void task_core_updater_download_handler(retro_task_t *task) transf->user_data = (void*)download_handle; /* Push HTTP transfer task */ - download_handle->http_task = (retro_task_t*)task_push_http_transfer( + download_handle->http_task = (retro_task_t*)task_push_http_transfer_file( download_handle->remote_core_path, true, NULL, cb_http_task_core_updater_download, transf); @@ -673,7 +673,7 @@ static void task_core_updater_download_handler(retro_task_t *task) } } - /* Wait for task_push_http_transfer() + /* Wait for task_push_http_transfer_file() * callback to trigger */ if (download_handle->http_task_complete) download_handle->status = CORE_UPDATER_DOWNLOAD_WAIT_DECOMPRESS; diff --git a/tasks/task_file_transfer.h b/tasks/task_file_transfer.h index f663bdf216..be5812bbd1 100644 --- a/tasks/task_file_transfer.h +++ b/tasks/task_file_transfer.h @@ -77,6 +77,9 @@ typedef struct void *user_data; } file_transfer_t; +void* task_push_http_transfer_file(const char* url, bool mute, const char* type, + retro_task_callback_t cb, file_transfer_t* transfer_data); + RETRO_END_DECLS #endif diff --git a/tasks/task_http.c b/tasks/task_http.c index 2379ab9513..da2a054b34 100644 --- a/tasks/task_http.c +++ b/tasks/task_http.c @@ -250,13 +250,9 @@ static void* task_push_http_transfer_generic( retro_task_callback_t cb, void *user_data) { task_finder_data_t find_data; - char tmp[255]; - const char *s = NULL; retro_task_t *t = NULL; http_handle_t *http = NULL; - tmp[0] = '\0'; - find_data.func = task_http_finder; find_data.userdata = (void*)url; @@ -299,22 +295,6 @@ static void* task_push_http_transfer_generic( t->user_data = user_data; t->progress = -1; - if (user_data) - s = ((file_transfer_t*)user_data)->path; - else - s = url; - - strlcpy(tmp, - msg_hash_to_str(MSG_DOWNLOADING), sizeof(tmp)); - strlcat(tmp, " ", sizeof(tmp)); - - if (strstr(s, ".index")) - strlcat(tmp, msg_hash_to_str(MSG_INDEX_FILE), sizeof(tmp)); - else - strlcat(tmp, s, sizeof(tmp)); - - t->title = strdup(tmp); - task_queue_push(t); return t; @@ -334,11 +314,47 @@ void* task_push_http_transfer(const char *url, bool mute, { if (string_is_empty(url)) return NULL; + return task_push_http_transfer_generic( net_http_connection_new(url, "GET", NULL), url, mute, type, cb, user_data); } +void* task_push_http_transfer_file(const char* url, bool mute, + const char* type, + retro_task_callback_t cb, file_transfer_t* transfer_data) +{ + const char *s = NULL; + char tmp[255] = ""; + retro_task_t *t = NULL; + + if (string_is_empty(url)) + return NULL; + + t = task_push_http_transfer_generic( + net_http_connection_new(url, "GET", NULL), + url, mute, type, cb, transfer_data); + + if (!t) + return NULL; + + if (transfer_data) + s = transfer_data->path; + else + s = url; + + strlcpy(tmp, msg_hash_to_str(MSG_DOWNLOADING), sizeof(tmp)); + strlcat(tmp, " ", sizeof(tmp)); + + if (strstr(s, ".index")) + strlcat(tmp, msg_hash_to_str(MSG_INDEX_FILE), sizeof(tmp)); + else + strlcat(tmp, s, sizeof(tmp)); + + t->title = strdup(tmp); + return t; +} + void* task_push_http_transfer_with_user_agent(const char *url, bool mute, const char *type, const char* user_agent, retro_task_callback_t cb, void *user_data) diff --git a/tasks/task_pl_thumbnail_download.c b/tasks/task_pl_thumbnail_download.c index b8f3d571b8..383293913b 100644 --- a/tasks/task_pl_thumbnail_download.c +++ b/tasks/task_pl_thumbnail_download.c @@ -269,7 +269,7 @@ static void download_pl_thumbnail(pl_thumb_handle_t *pl_thumb) /* Note: We don't actually care if this fails since that * just means the file is missing from the server, so it's * not something we can handle here... */ - pl_thumb->http_task = (retro_task_t*)task_push_http_transfer( + pl_thumb->http_task = (retro_task_t*)task_push_http_transfer_file( url, true, NULL, cb_http_task_download_pl_thumbnail, transf); /* ...if it does fail, however, we can immediately @@ -411,7 +411,7 @@ static void task_pl_thumbnail_download_handler(retro_task_t *task) if (!pl_thumb->http_task) pl_thumb->http_task_complete = true; - /* > Wait for task_push_http_transfer() + /* > Wait for task_push_http_transfer_file() * callback to trigger */ if (pl_thumb->http_task_complete) pl_thumb->http_task = NULL; @@ -726,7 +726,7 @@ static void task_pl_entry_thumbnail_download_handler(retro_task_t *task) if (!pl_thumb->http_task) pl_thumb->http_task_complete = true; - /* > Wait for task_push_http_transfer() + /* > Wait for task_push_http_transfer_file() * callback to trigger */ if (pl_thumb->http_task_complete) pl_thumb->http_task = NULL; From 59302e816c57ce7fbd787eb823d68f8ec7804e86 Mon Sep 17 00:00:00 2001 From: Jamiras Date: Fri, 17 Jan 2020 20:22:49 -0700 Subject: [PATCH 091/148] fix parsing of port in net_http_connection_done --- libretro-common/net/net_http.c | 75 ++++------------------------------ 1 file changed, 9 insertions(+), 66 deletions(-) diff --git a/libretro-common/net/net_http.c b/libretro-common/net/net_http.c index 1ccd617a25..23a1a8c593 100644 --- a/libretro-common/net/net_http.c +++ b/libretro-common/net/net_http.c @@ -252,15 +252,6 @@ static void net_http_send_str( struct http_connection_t *net_http_connection_new(const char *url, const char *method, const char *data) { - char new_domain[2048]; - bool error = false; - char **domain = NULL; - char *uri = NULL; - char *url_dup = NULL; - char *domain_port = NULL; - char *domain_port2 = NULL; - char *url_port = NULL; - struct http_connection_t *conn = (struct http_connection_t*)calloc(1, sizeof(*conn)); @@ -273,14 +264,13 @@ struct http_connection_t *net_http_connection_new(const char *url, return NULL; } - conn->urlcopy = strdup(url); - if (method) conn->methodcopy = strdup(method); if (data) conn->postdatacopy = strdup(data); + conn->urlcopy = strdup(url); if (!conn->urlcopy) goto error; @@ -292,57 +282,12 @@ struct http_connection_t *net_http_connection_new(const char *url, conn->sock_state.ssl = true; } else - error = true; + goto error; if (string_is_empty(conn->scan)) goto error; - /* Get the port here from the url if it's specified. - does not work on username password urls: user:pass@domain.com - - This code is not supposed to be needed, since the port - should be gotten elsewhere when the url is being scanned - for ":", but for whatever reason, it's not working correctly. - */ - - uri = strchr(conn->scan, (char) '/'); - - if (strchr(conn->scan, (char) ':')) - { - size_t buf_pos; - url_dup = strdup(conn->scan); - domain_port = strtok(url_dup, ":"); - domain_port2 = strtok(NULL, ":"); - url_port = domain_port2; - if (strchr(domain_port2, (char) '/')) - url_port = strtok(domain_port2, "/"); - - if (url_port) - conn->port = atoi(url_port); - - buf_pos = strlcpy(new_domain, domain_port, sizeof(new_domain)); - free(url_dup); - - if (uri) - { - if (!strchr(uri, (char) '/')) - strlcat(new_domain, uri, sizeof(new_domain)); - else - { - new_domain[buf_pos] = '/'; - new_domain[buf_pos+1] = '\0'; - strlcat(new_domain, strchr(uri, (char)'/') + sizeof(char), - sizeof(new_domain)); - } - strlcpy(conn->scan, new_domain, strlen(conn->scan) + 1); - } - } - /* end of port-fetching from url */ - if (error) - goto error; - - domain = &conn->domain; - *domain = conn->scan; + conn->domain = conn->scan; return conn; @@ -373,16 +318,11 @@ bool net_http_connection_iterate(struct http_connection_t *conn) bool net_http_connection_done(struct http_connection_t *conn) { - char **location = NULL; - if (!conn) return false; - location = &conn->location; - if (*conn->scan == '\0') return false; - *conn->scan = '\0'; if (conn->port == 0) { @@ -394,16 +334,19 @@ bool net_http_connection_done(struct http_connection_t *conn) if (*conn->scan == ':') { - if (!isdigit((int)conn->scan[1])) + *conn->scan++ = '\0'; + + if (!isdigit((int)(*conn->scan))) return false; - conn->port = (int)strtoul(conn->scan + 1, &conn->scan, 10); + conn->port = (int)strtoul(conn->scan, &conn->scan, 10); if (*conn->scan != '/') return false; } - *location = conn->scan + 1; + *conn->scan = '\0'; + conn->location = conn->scan + 1; return true; } From 92d572285e52d113710bfd3249a5b51299cb5566 Mon Sep 17 00:00:00 2001 From: Jamiras Date: Fri, 17 Jan 2020 20:36:28 -0700 Subject: [PATCH 092/148] add missing header --- tasks/task_file_transfer.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tasks/task_file_transfer.h b/tasks/task_file_transfer.h index be5812bbd1..d2b7714f8f 100644 --- a/tasks/task_file_transfer.h +++ b/tasks/task_file_transfer.h @@ -21,6 +21,7 @@ #include #include +#include #include "../msg_hash.h" From 64d34081885e8ff40ee5d5721ed0e996cb7bb40d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jan 2020 05:40:11 +0100 Subject: [PATCH 093/148] (ffmpeg) Fixups --- cores/libretro-ffmpeg/packet_buffer.c | 2 +- cores/libretro-ffmpeg/video_buffer.c | 18 +++++++++--------- libretro-common/rthreads/tpool.c | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/cores/libretro-ffmpeg/packet_buffer.c b/cores/libretro-ffmpeg/packet_buffer.c index b852631b5c..da4cd4654c 100644 --- a/cores/libretro-ffmpeg/packet_buffer.c +++ b/cores/libretro-ffmpeg/packet_buffer.c @@ -16,7 +16,7 @@ struct packet_buffer packet_buffer_t *packet_buffer_create() { - packet_buffer_t *b = malloc(sizeof(packet_buffer_t)); + packet_buffer_t *b = (packet_buffer_t*)malloc(sizeof(packet_buffer_t)); if (!b) return NULL; diff --git a/cores/libretro-ffmpeg/video_buffer.c b/cores/libretro-ffmpeg/video_buffer.c index 72aeeaf560..d59354ae09 100644 --- a/cores/libretro-ffmpeg/video_buffer.c +++ b/cores/libretro-ffmpeg/video_buffer.c @@ -25,14 +25,14 @@ struct video_buffer video_buffer_t *video_buffer_create(size_t capacity, int frame_size, int width, int height) { - video_buffer_t *b = malloc(sizeof(video_buffer_t)); + video_buffer_t *b = (video_buffer_t*)malloc(sizeof(video_buffer_t)); if (!b) return NULL; memset(b, 0, sizeof(video_buffer_t)); b->capacity = capacity; - b->status = malloc(sizeof(enum kbStatus) * capacity); + b->status = (enum kbStatus*)malloc(sizeof(enum kbStatus) * capacity); if (!b->status) goto fail; for (int i = 0; i < capacity; i++) @@ -44,21 +44,21 @@ video_buffer_t *video_buffer_create(size_t capacity, int frame_size, int width, if (!b->lock || !b->open_cond || !b->finished_cond) goto fail; - b->buffer = malloc(sizeof(video_decoder_context_t) * capacity); + b->buffer = (video_decoder_context_t*)malloc(sizeof(video_decoder_context_t) * capacity); if (!b->buffer) goto fail; for (int i = 0; i < capacity; i++) { - b->buffer[i].index = i; - b->buffer[i].pts = 0; - b->buffer[i].sws = sws_alloc_context(); - b->buffer[i].source = av_frame_alloc(); + b->buffer[i].index = i; + b->buffer[i].pts = 0; + b->buffer[i].sws = sws_alloc_context(); + b->buffer[i].source = av_frame_alloc(); #if LIBAVUTIL_VERSION_MAJOR > 55 b->buffer[i].hw_source = av_frame_alloc(); #endif - b->buffer[i].target = av_frame_alloc(); - b->buffer[i].frame_buf = av_malloc(frame_size); + b->buffer[i].target = av_frame_alloc(); + b->buffer[i].frame_buf = (uint8_t*)av_malloc(frame_size); avpicture_fill((AVPicture*)b->buffer[i].target, (const uint8_t*)b->buffer[i].frame_buf, PIX_FMT_RGB32, width, height); diff --git a/libretro-common/rthreads/tpool.c b/libretro-common/rthreads/tpool.c index db3529222f..4856492155 100644 --- a/libretro-common/rthreads/tpool.c +++ b/libretro-common/rthreads/tpool.c @@ -101,8 +101,8 @@ static tpool_work_t *tpool_work_get(tpool_t *tp) static void tpool_worker(void *arg) { - tpool_t *tp = arg; - tpool_work_t *work; + tpool_work_t *work = NULL; + tpool_t *tp = (tpool_t*)arg; while (true) { From fe9022afe0103dc2e1f502e55f25be21a8bb188f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jan 2020 05:48:19 +0100 Subject: [PATCH 094/148] More CXX_BUILD fixes --- input/drivers_joypad/dinput_joypad.c | 2 +- tasks/task_http.c | 6 +++--- ui/drivers/ui_win32.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/input/drivers_joypad/dinput_joypad.c b/input/drivers_joypad/dinput_joypad.c index 1c6b14d62d..602be215c9 100644 --- a/input/drivers_joypad/dinput_joypad.c +++ b/input/drivers_joypad/dinput_joypad.c @@ -267,7 +267,7 @@ static bool guid_is_xinput_device(const GUID* product_guid) (MAKELONG(rdi.hid.dwVendorId, rdi.hid.dwProductId) == ((LONG)product_guid->Data1)) && (GetRawInputDeviceInfoA(raw_devs[i].hDevice, RIDI_DEVICENAME, NULL, &nameSize) != ((UINT)-1)) && - ((devName = malloc(nameSize)) != NULL) && + ((devName = (char*)malloc(nameSize)) != NULL) && (GetRawInputDeviceInfoA(raw_devs[i].hDevice, RIDI_DEVICENAME, devName, &nameSize) != ((UINT)-1)) && (strstr(devName, "IG_") != NULL) ) { diff --git a/tasks/task_http.c b/tasks/task_http.c index da2a054b34..78d2f81ccc 100644 --- a/tasks/task_http.c +++ b/tasks/task_http.c @@ -324,14 +324,14 @@ void* task_push_http_transfer_file(const char* url, bool mute, const char* type, retro_task_callback_t cb, file_transfer_t* transfer_data) { - const char *s = NULL; - char tmp[255] = ""; + const char *s = NULL; + char tmp[255] = ""; retro_task_t *t = NULL; if (string_is_empty(url)) return NULL; - t = task_push_http_transfer_generic( + t = (retro_task_t*)task_push_http_transfer_generic( net_http_connection_new(url, "GET", NULL), url, mute, type, cb, transfer_data); diff --git a/ui/drivers/ui_win32.c b/ui/drivers/ui_win32.c index 7beff451ba..2e4a7b06a8 100644 --- a/ui/drivers/ui_win32.c +++ b/ui/drivers/ui_win32.c @@ -65,7 +65,7 @@ bool win32_window_init(WNDCLASSEX *wndclass, { #if _WIN32_WINNT >= 0x0501 /* Use the language set in the config for the menubar... also changes the console language. */ - SetThreadUILanguage(win32_get_langid_from_retro_lang(*msg_hash_get_uint(MSG_HASH_USER_LANGUAGE))); + SetThreadUILanguage(win32_get_langid_from_retro_lang((enum retro_language)*msg_hash_get_uint(MSG_HASH_USER_LANGUAGE))); #endif wndclass->cbSize = sizeof(WNDCLASSEX); wndclass->style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; From 142503d3b54fbb0098244ad2e934ceca3d20d798 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jan 2020 09:28:46 +0100 Subject: [PATCH 095/148] move win32_menu_loop and win32_browser to win32_common --- gfx/common/win32_common.c | 211 ++++++++++++++++++++++++++++++++++++++ gfx/common/win32_common.h | 2 - ui/drivers/ui_win32.c | 211 -------------------------------------- 3 files changed, 211 insertions(+), 213 deletions(-) diff --git a/gfx/common/win32_common.c b/gfx/common/win32_common.c index ccb2bfa30d..273421a515 100644 --- a/gfx/common/win32_common.c +++ b/gfx/common/win32_common.c @@ -604,6 +604,217 @@ static void win32_save_position(void) } } +static bool win32_browser( + HWND owner, + char *filename, + size_t filename_size, + const char *extensions, + const char *title, + const char *initial_dir) +{ + bool result = false; + const ui_browser_window_t *browser = + ui_companion_driver_get_browser_window_ptr(); + + if (browser) + { + ui_browser_window_state_t browser_state; + + /* These need to be big enough to hold the + * path/name of any file the user may select. + * FIXME: We should really handle the + * error case when this isn't big enough. */ + char new_title[PATH_MAX]; + char new_file[32768]; + + new_title[0] = '\0'; + new_file[0] = '\0'; + + if (!string_is_empty(title)) + strlcpy(new_title, title, sizeof(new_title)); + + if (filename && *filename) + strlcpy(new_file, filename, sizeof(new_file)); + + /* OPENFILENAME.lpstrFilters is actually const, + * so this cast should be safe */ + browser_state.filters = (char*)extensions; + browser_state.title = new_title; + browser_state.startdir = strdup(initial_dir); + browser_state.path = new_file; + browser_state.window = owner; + + result = browser->open(&browser_state); + + if (filename && browser_state.path) + strlcpy(filename, browser_state.path, filename_size); + + free(browser_state.startdir); + } + + return result; +} + + +static LRESULT win32_menu_loop(HWND owner, WPARAM wparam) +{ + WPARAM mode = wparam & 0xffff; + enum event_command cmd = CMD_EVENT_NONE; + bool do_wm_close = false; + settings_t *settings = config_get_ptr(); + + switch (mode) + { + case ID_M_LOAD_CORE: + { + char win32_file[PATH_MAX_LENGTH] = {0}; + char *title_cp = NULL; + size_t converted = 0; + const char *extensions = "Libretro core (.dll)\0*.dll\0All Files\0*.*\0\0"; + const char *title = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_LIST); + const char *initial_dir = settings->paths.directory_libretro; + + /* Convert UTF8 to UTF16, then back to the + * local code page. + * This is needed for proper multi-byte + * string display until Unicode is + * fully supported. + */ + wchar_t *title_wide = utf8_to_utf16_string_alloc(title); + + if (title_wide) + title_cp = utf16_to_utf8_string_alloc(title_wide); + + if (!win32_browser(owner, win32_file, sizeof(win32_file), + extensions, title_cp, initial_dir)) + { + if (title_wide) + free(title_wide); + if (title_cp) + free(title_cp); + break; + } + + if (title_wide) + free(title_wide); + if (title_cp) + free(title_cp); + path_set(RARCH_PATH_CORE, win32_file); + cmd = CMD_EVENT_LOAD_CORE; + } + break; + case ID_M_LOAD_CONTENT: + { + char win32_file[PATH_MAX_LENGTH] = {0}; + char *title_cp = NULL; + size_t converted = 0; + const char *extensions = "All Files (*.*)\0*.*\0\0"; + const char *title = msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST); + const char *initial_dir = settings->paths.directory_menu_content; + + /* Convert UTF8 to UTF16, then back to the + * local code page. + * This is needed for proper multi-byte + * string display until Unicode is + * fully supported. + */ + wchar_t *title_wide = utf8_to_utf16_string_alloc(title); + + if (title_wide) + title_cp = utf16_to_utf8_string_alloc(title_wide); + + if (!win32_browser(owner, win32_file, sizeof(win32_file), + extensions, title_cp, initial_dir)) + { + if (title_wide) + free(title_wide); + if (title_cp) + free(title_cp); + break; + } + + if (title_wide) + free(title_wide); + if (title_cp) + free(title_cp); + win32_load_content_from_gui(win32_file); + } + break; + case ID_M_RESET: + cmd = CMD_EVENT_RESET; + break; + case ID_M_MUTE_TOGGLE: + cmd = CMD_EVENT_AUDIO_MUTE_TOGGLE; + break; + case ID_M_MENU_TOGGLE: + cmd = CMD_EVENT_MENU_TOGGLE; + break; + case ID_M_PAUSE_TOGGLE: + cmd = CMD_EVENT_PAUSE_TOGGLE; + break; + case ID_M_LOAD_STATE: + cmd = CMD_EVENT_LOAD_STATE; + break; + case ID_M_SAVE_STATE: + cmd = CMD_EVENT_SAVE_STATE; + break; + case ID_M_DISK_CYCLE: + cmd = CMD_EVENT_DISK_EJECT_TOGGLE; + break; + case ID_M_DISK_NEXT: + cmd = CMD_EVENT_DISK_NEXT; + break; + case ID_M_DISK_PREV: + cmd = CMD_EVENT_DISK_PREV; + break; + case ID_M_FULL_SCREEN: + cmd = CMD_EVENT_FULLSCREEN_TOGGLE; + break; + case ID_M_MOUSE_GRAB: + cmd = CMD_EVENT_GRAB_MOUSE_TOGGLE; + break; + case ID_M_TAKE_SCREENSHOT: + cmd = CMD_EVENT_TAKE_SCREENSHOT; + break; + case ID_M_QUIT: + do_wm_close = true; + break; + case ID_M_TOGGLE_DESKTOP: + cmd = CMD_EVENT_UI_COMPANION_TOGGLE; + break; + default: + if (mode >= ID_M_WINDOW_SCALE_1X && mode <= ID_M_WINDOW_SCALE_10X) + { + unsigned idx = (mode - (ID_M_WINDOW_SCALE_1X-1)); + rarch_ctl(RARCH_CTL_SET_WINDOWED_SCALE, &idx); + cmd = CMD_EVENT_RESIZE_WINDOWED_SCALE; + } + else if (mode == ID_M_STATE_INDEX_AUTO) + { + signed idx = -1; + configuration_set_int( + settings, settings->ints.state_slot, idx); + } + else if (mode >= (ID_M_STATE_INDEX_AUTO+1) + && mode <= (ID_M_STATE_INDEX_AUTO+10)) + { + signed idx = (mode - (ID_M_STATE_INDEX_AUTO+1)); + configuration_set_int( + settings, settings->ints.state_slot, idx); + } + break; + } + + if (cmd != CMD_EVENT_NONE) + command_event(cmd, NULL); + + if (do_wm_close) + PostMessage(owner, WM_CLOSE, 0, 0); + + return 0L; +} + static LRESULT CALLBACK WndProcCommon(bool *quit, HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { diff --git a/gfx/common/win32_common.h b/gfx/common/win32_common.h index cd16046d98..f7fe71c6d3 100644 --- a/gfx/common/win32_common.h +++ b/gfx/common/win32_common.h @@ -138,8 +138,6 @@ LRESULT CALLBACK WndProcGDI(HWND hwnd, UINT message, BOOL IsIconic(HWND hwnd); #endif -LRESULT win32_menu_loop(HWND owner, WPARAM wparam); - bool win32_load_content_from_gui(const char *szFilename); void win32_setup_pixel_format(HDC hdc, bool supports_gl); diff --git a/ui/drivers/ui_win32.c b/ui/drivers/ui_win32.c index 2e4a7b06a8..2f17744b13 100644 --- a/ui/drivers/ui_win32.c +++ b/ui/drivers/ui_win32.c @@ -45,7 +45,6 @@ #include "../ui_companion_driver.h" #include "../../msg_hash.h" -#include "../../configuration.h" #include "../../driver.h" #include "../../paths.h" #include "../../retroarch.h" @@ -88,216 +87,6 @@ bool win32_window_init(WNDCLASSEX *wndclass, } #endif -static bool win32_browser( - HWND owner, - char *filename, - size_t filename_size, - const char *extensions, - const char *title, - const char *initial_dir) -{ - bool result = false; - const ui_browser_window_t *browser = - ui_companion_driver_get_browser_window_ptr(); - - if (browser) - { - ui_browser_window_state_t browser_state; - - /* These need to be big enough to hold the - * path/name of any file the user may select. - * FIXME: We should really handle the - * error case when this isn't big enough. */ - char new_title[PATH_MAX]; - char new_file[32768]; - - new_title[0] = '\0'; - new_file[0] = '\0'; - - if (!string_is_empty(title)) - strlcpy(new_title, title, sizeof(new_title)); - - if (filename && *filename) - strlcpy(new_file, filename, sizeof(new_file)); - - /* OPENFILENAME.lpstrFilters is actually const, - * so this cast should be safe */ - browser_state.filters = (char*)extensions; - browser_state.title = new_title; - browser_state.startdir = strdup(initial_dir); - browser_state.path = new_file; - browser_state.window = owner; - - result = browser->open(&browser_state); - - if (filename && browser_state.path) - strlcpy(filename, browser_state.path, filename_size); - - free(browser_state.startdir); - } - - return result; -} - -LRESULT win32_menu_loop(HWND owner, WPARAM wparam) -{ - WPARAM mode = wparam & 0xffff; - enum event_command cmd = CMD_EVENT_NONE; - bool do_wm_close = false; - settings_t *settings = config_get_ptr(); - - switch (mode) - { - case ID_M_LOAD_CORE: - { - char win32_file[PATH_MAX_LENGTH] = {0}; - char *title_cp = NULL; - size_t converted = 0; - const char *extensions = "Libretro core (.dll)\0*.dll\0All Files\0*.*\0\0"; - const char *title = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_LIST); - const char *initial_dir = settings->paths.directory_libretro; - - /* Convert UTF8 to UTF16, then back to the - * local code page. - * This is needed for proper multi-byte - * string display until Unicode is - * fully supported. - */ - wchar_t *title_wide = utf8_to_utf16_string_alloc(title); - - if (title_wide) - title_cp = utf16_to_utf8_string_alloc(title_wide); - - if (!win32_browser(owner, win32_file, sizeof(win32_file), - extensions, title_cp, initial_dir)) - { - if (title_wide) - free(title_wide); - if (title_cp) - free(title_cp); - break; - } - - if (title_wide) - free(title_wide); - if (title_cp) - free(title_cp); - path_set(RARCH_PATH_CORE, win32_file); - cmd = CMD_EVENT_LOAD_CORE; - } - break; - case ID_M_LOAD_CONTENT: - { - char win32_file[PATH_MAX_LENGTH] = {0}; - char *title_cp = NULL; - size_t converted = 0; - const char *extensions = "All Files (*.*)\0*.*\0\0"; - const char *title = msg_hash_to_str( - MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST); - const char *initial_dir = settings->paths.directory_menu_content; - - /* Convert UTF8 to UTF16, then back to the - * local code page. - * This is needed for proper multi-byte - * string display until Unicode is - * fully supported. - */ - wchar_t *title_wide = utf8_to_utf16_string_alloc(title); - - if (title_wide) - title_cp = utf16_to_utf8_string_alloc(title_wide); - - if (!win32_browser(owner, win32_file, sizeof(win32_file), - extensions, title_cp, initial_dir)) - { - if (title_wide) - free(title_wide); - if (title_cp) - free(title_cp); - break; - } - - if (title_wide) - free(title_wide); - if (title_cp) - free(title_cp); - win32_load_content_from_gui(win32_file); - } - break; - case ID_M_RESET: - cmd = CMD_EVENT_RESET; - break; - case ID_M_MUTE_TOGGLE: - cmd = CMD_EVENT_AUDIO_MUTE_TOGGLE; - break; - case ID_M_MENU_TOGGLE: - cmd = CMD_EVENT_MENU_TOGGLE; - break; - case ID_M_PAUSE_TOGGLE: - cmd = CMD_EVENT_PAUSE_TOGGLE; - break; - case ID_M_LOAD_STATE: - cmd = CMD_EVENT_LOAD_STATE; - break; - case ID_M_SAVE_STATE: - cmd = CMD_EVENT_SAVE_STATE; - break; - case ID_M_DISK_CYCLE: - cmd = CMD_EVENT_DISK_EJECT_TOGGLE; - break; - case ID_M_DISK_NEXT: - cmd = CMD_EVENT_DISK_NEXT; - break; - case ID_M_DISK_PREV: - cmd = CMD_EVENT_DISK_PREV; - break; - case ID_M_FULL_SCREEN: - cmd = CMD_EVENT_FULLSCREEN_TOGGLE; - break; - case ID_M_MOUSE_GRAB: - cmd = CMD_EVENT_GRAB_MOUSE_TOGGLE; - break; - case ID_M_TAKE_SCREENSHOT: - cmd = CMD_EVENT_TAKE_SCREENSHOT; - break; - case ID_M_QUIT: - do_wm_close = true; - break; - case ID_M_TOGGLE_DESKTOP: - cmd = CMD_EVENT_UI_COMPANION_TOGGLE; - break; - default: - if (mode >= ID_M_WINDOW_SCALE_1X && mode <= ID_M_WINDOW_SCALE_10X) - { - unsigned idx = (mode - (ID_M_WINDOW_SCALE_1X-1)); - rarch_ctl(RARCH_CTL_SET_WINDOWED_SCALE, &idx); - cmd = CMD_EVENT_RESIZE_WINDOWED_SCALE; - } - else if (mode == ID_M_STATE_INDEX_AUTO) - { - signed idx = -1; - configuration_set_int( - settings, settings->ints.state_slot, idx); - } - else if (mode >= (ID_M_STATE_INDEX_AUTO+1) - && mode <= (ID_M_STATE_INDEX_AUTO+10)) - { - signed idx = (mode - (ID_M_STATE_INDEX_AUTO+1)); - configuration_set_int( - settings, settings->ints.state_slot, idx); - } - break; - } - - if (cmd != CMD_EVENT_NONE) - command_event(cmd, NULL); - - if (do_wm_close) - PostMessage(owner, WM_CLOSE, 0, 0); - - return 0L; -} - static void ui_companion_win32_deinit(void *data) { ui_companion_win32_t *handle = (ui_companion_win32_t*)data; From a67896ab2b3d44e86a083bab0a5325d5f6a934c4 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jan 2020 09:37:16 +0100 Subject: [PATCH 096/148] Cleanup --- gfx/common/win32_common.c | 58 ++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/gfx/common/win32_common.c b/gfx/common/win32_common.c index 273421a515..52ce166cf8 100644 --- a/gfx/common/win32_common.c +++ b/gfx/common/win32_common.c @@ -500,9 +500,10 @@ bool win32_load_content_from_gui(const char *szFilename) { bool okay = false; settings_t *settings = config_get_ptr(); + bool video_is_fs = settings->bools.video_fullscreen; /* Fullscreen: Show mouse cursor for dialog */ - if (settings->bools.video_fullscreen) + if (video_is_fs) video_driver_show_mouse(); /* Pick one core that could be compatible, ew */ @@ -515,7 +516,7 @@ bool win32_load_content_from_gui(const char *szFilename) } /* Fullscreen: Hide mouse cursor after dialog */ - if (settings->bools.video_fullscreen) + if (video_is_fs) video_driver_hide_mouse(); return okay; } @@ -658,16 +659,15 @@ static bool win32_browser( static LRESULT win32_menu_loop(HWND owner, WPARAM wparam) { - WPARAM mode = wparam & 0xffff; - enum event_command cmd = CMD_EVENT_NONE; - bool do_wm_close = false; - settings_t *settings = config_get_ptr(); + WPARAM mode = wparam & 0xffff; + enum event_command cmd = CMD_EVENT_NONE; switch (mode) { case ID_M_LOAD_CORE: { char win32_file[PATH_MAX_LENGTH] = {0}; + settings_t *settings = config_get_ptr(); char *title_cp = NULL; size_t converted = 0; const char *extensions = "Libretro core (.dll)\0*.dll\0All Files\0*.*\0\0"; @@ -711,6 +711,7 @@ static LRESULT win32_menu_loop(HWND owner, WPARAM wparam) const char *extensions = "All Files (*.*)\0*.*\0\0"; const char *title = msg_hash_to_str( MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST); + settings_t *settings = config_get_ptr(); const char *initial_dir = settings->paths.directory_menu_content; /* Convert UTF8 to UTF16, then back to the @@ -778,30 +779,33 @@ static LRESULT win32_menu_loop(HWND owner, WPARAM wparam) cmd = CMD_EVENT_TAKE_SCREENSHOT; break; case ID_M_QUIT: - do_wm_close = true; + PostMessage(owner, WM_CLOSE, 0, 0); break; case ID_M_TOGGLE_DESKTOP: cmd = CMD_EVENT_UI_COMPANION_TOGGLE; break; default: - if (mode >= ID_M_WINDOW_SCALE_1X && mode <= ID_M_WINDOW_SCALE_10X) { - unsigned idx = (mode - (ID_M_WINDOW_SCALE_1X-1)); - rarch_ctl(RARCH_CTL_SET_WINDOWED_SCALE, &idx); - cmd = CMD_EVENT_RESIZE_WINDOWED_SCALE; - } - else if (mode == ID_M_STATE_INDEX_AUTO) - { - signed idx = -1; - configuration_set_int( - settings, settings->ints.state_slot, idx); - } - else if (mode >= (ID_M_STATE_INDEX_AUTO+1) - && mode <= (ID_M_STATE_INDEX_AUTO+10)) - { - signed idx = (mode - (ID_M_STATE_INDEX_AUTO+1)); - configuration_set_int( - settings, settings->ints.state_slot, idx); + settings_t *settings = config_get_ptr(); + if (mode >= ID_M_WINDOW_SCALE_1X && mode <= ID_M_WINDOW_SCALE_10X) + { + unsigned idx = (mode - (ID_M_WINDOW_SCALE_1X-1)); + rarch_ctl(RARCH_CTL_SET_WINDOWED_SCALE, &idx); + cmd = CMD_EVENT_RESIZE_WINDOWED_SCALE; + } + else if (mode == ID_M_STATE_INDEX_AUTO) + { + signed idx = -1; + configuration_set_int( + settings, settings->ints.state_slot, idx); + } + else if (mode >= (ID_M_STATE_INDEX_AUTO+1) + && mode <= (ID_M_STATE_INDEX_AUTO+10)) + { + signed idx = (mode - (ID_M_STATE_INDEX_AUTO+1)); + configuration_set_int( + settings, settings->ints.state_slot, idx); + } } break; } @@ -809,9 +813,6 @@ static LRESULT win32_menu_loop(HWND owner, WPARAM wparam) if (cmd != CMD_EVENT_NONE) command_event(cmd, NULL); - if (do_wm_close) - PostMessage(owner, WM_CLOSE, 0, 0); - return 0L; } @@ -890,7 +891,8 @@ static LRESULT CALLBACK WndProcCommon(bool *quit, HWND hwnd, UINT message, mod |= RETROKMOD_META; #if _WIN32_WINNT >= 0x0501 /* XP */ - if (settings && string_is_equal(settings->arrays.input_driver, "raw")) + if (settings && + string_is_equal(settings->arrays.input_driver, "raw")) keysym = (unsigned)wparam; else #endif From 57c00e7e26c25b8d81586e260aa92e095aa0b439 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jan 2020 10:41:26 +0100 Subject: [PATCH 097/148] Cleanup --- gfx/common/win32_common.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/gfx/common/win32_common.c b/gfx/common/win32_common.c index 52ce166cf8..f828f4cb45 100644 --- a/gfx/common/win32_common.c +++ b/gfx/common/win32_common.c @@ -819,11 +819,11 @@ static LRESULT win32_menu_loop(HWND owner, WPARAM wparam) static LRESULT CALLBACK WndProcCommon(bool *quit, HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { - if (message == WM_NCLBUTTONDBLCLK) - doubleclick_on_titlebar = true; - switch (message) { + case WM_NCLBUTTONDBLCLK: + doubleclick_on_titlebar = true; + break; case WM_SYSCOMMAND: /* Prevent screensavers, etc, while running. */ switch (wparam) @@ -970,11 +970,11 @@ LRESULT CALLBACK WndProcD3D(HWND hwnd, UINT message, LRESULT ret; bool quit = false; - if (message == WM_NCLBUTTONDBLCLK) - doubleclick_on_titlebar = true; - switch (message) { + case WM_NCLBUTTONDBLCLK: + doubleclick_on_titlebar = true; + break; case WM_DROPFILES: case WM_SYSCOMMAND: case WM_CHAR: @@ -1029,11 +1029,12 @@ LRESULT CALLBACK WndProcGL(HWND hwnd, UINT message, LRESULT ret; bool quit = false; - if (message == WM_NCLBUTTONDBLCLK) - doubleclick_on_titlebar = true; switch (message) { + case WM_NCLBUTTONDBLCLK: + doubleclick_on_titlebar = true; + break; case WM_DROPFILES: case WM_SYSCOMMAND: case WM_CHAR: @@ -1081,11 +1082,11 @@ LRESULT CALLBACK WndProcGDI(HWND hwnd, UINT message, LRESULT ret; bool quit = false; - if (message == WM_NCLBUTTONDBLCLK) - doubleclick_on_titlebar = true; - switch (message) { + case WM_NCLBUTTONDBLCLK: + doubleclick_on_titlebar = true; + break; case WM_PAINT: { gdi_t *gdi = (gdi_t*)video_driver_get_ptr(false); @@ -1192,7 +1193,7 @@ bool win32_window_create(void *data, unsigned style, #if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0500 /* 2K */ g_taskbar_message = RegisterWindowMessage("TaskbarButtonCreated"); - ZeroMemory(¬ification_filter, sizeof(notification_filter) ); + memset(¬ification_filter, 0, sizeof(notification_filter)); notification_filter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE); notification_filter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE; notification_filter.dbcc_classguid = GUID_DEVINTERFACE_HID; From a01e6652df4e4bb66ed237f8fcd7d8a91d289c81 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jan 2020 10:46:25 +0100 Subject: [PATCH 098/148] Replace ZeroMemory with memset --- gfx/common/win32_common.c | 10 +++++----- retroarch.c | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gfx/common/win32_common.c b/gfx/common/win32_common.c index f828f4cb45..25a9b2a64c 100644 --- a/gfx/common/win32_common.c +++ b/gfx/common/win32_common.c @@ -203,7 +203,7 @@ typedef LONG (WINAPI *GETDISPLAYCONFIGBUFFERSIZES)(UINT32, UINT32*, UINT32*); static bool g_win32_resized = false; bool g_win32_restore_desktop = false; static bool doubleclick_on_titlebar = false; -static bool g_taskbar_is_created = false; +static bool taskbar_is_created = false; bool g_win32_inited = false; static bool g_win32_quit = false; @@ -273,7 +273,7 @@ static HMONITOR win32_monitor_all[MAX_MONITORS]; bool win32_taskbar_is_created(void) { - return g_taskbar_is_created; + return taskbar_is_created; } bool doubleclick_on_titlebar_pressed(void) @@ -1006,7 +1006,7 @@ LRESULT CALLBACK WndProcD3D(HWND hwnd, UINT message, #if _WIN32_WINNT >= 0x0500 /* 2K */ if (g_taskbar_message && message == g_taskbar_message) - g_taskbar_is_created = true; + taskbar_is_created = true; #endif #ifdef HAVE_DINPUT @@ -1063,7 +1063,7 @@ LRESULT CALLBACK WndProcGL(HWND hwnd, UINT message, #if _WIN32_WINNT >= 0x0500 /* 2K */ if (g_taskbar_message && message == g_taskbar_message) - g_taskbar_is_created = true; + taskbar_is_created = true; #endif #ifdef HAVE_DINPUT @@ -1149,7 +1149,7 @@ LRESULT CALLBACK WndProcGDI(HWND hwnd, UINT message, #if _WIN32_WINNT >= 0x0500 /* 2K */ if (g_taskbar_message && message == g_taskbar_message) - g_taskbar_is_created = true; + taskbar_is_created = true; #endif #ifdef HAVE_DINPUT diff --git a/retroarch.c b/retroarch.c index bc98ec6d2c..f08b4c5630 100644 --- a/retroarch.c +++ b/retroarch.c @@ -29665,9 +29665,9 @@ static bool terminate_win32_process(PROCESS_INFORMATION pi) static bool create_win32_process(char* cmd) { STARTUPINFO si; - ZeroMemory(&si, sizeof(si)); + memset(&si, 0, sizeof(si)); si.cb = sizeof(si); - ZeroMemory(&pi, sizeof(pi)); + memset(&pi, 0, sizeof(pi)); if (!CreateProcess(NULL, cmd, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi)) From c26c9483ec48d8a91b340c11d1305ab9ed6ce934 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jan 2020 11:34:50 +0100 Subject: [PATCH 099/148] Cleanup WNDPROC functions --- gfx/common/win32_common.c | 134 +++++++++++++++++++++++++++----------- 1 file changed, 97 insertions(+), 37 deletions(-) diff --git a/gfx/common/win32_common.c b/gfx/common/win32_common.c index 25a9b2a64c..f7ccbd6750 100644 --- a/gfx/common/win32_common.c +++ b/gfx/common/win32_common.c @@ -89,6 +89,20 @@ #define EDS_ROTATEDMODE 4 #endif +/* These are defined in later SDKs, thus ifdeffed. */ + +#ifndef WM_POINTERUPDATE +#define WM_POINTERUPDATE 0x0245 +#endif + +#ifndef WM_POINTERDOWN +#define WM_POINTERDOWN 0x0246 +#endif + +#ifndef WM_POINTERUP +#define WM_POINTERUP 0x0247 +#endif + const GUID GUID_DEVINTERFACE_HID = { 0x4d1e55b2, 0xf16f, 0x11Cf, { 0x88, 0xcb, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 } }; #if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x501 static HDEVNOTIFY notification_handler; @@ -972,8 +986,33 @@ LRESULT CALLBACK WndProcD3D(HWND hwnd, UINT message, switch (message) { + case WM_MOUSEMOVE: + case WM_POINTERDOWN: + case WM_POINTERUP: + case WM_POINTERUPDATE: + case WM_DEVICECHANGE: + case WM_MOUSEWHEEL: + case WM_MOUSEHWHEEL: +#if _WIN32_WINNT >= 0x0500 /* 2K */ + if (g_taskbar_message && message == g_taskbar_message) + taskbar_is_created = true; +#endif +#ifdef HAVE_DINPUT + if (input_get_ptr() == &input_dinput) + { + void* input_data = input_get_data(); + if (input_data && dinput_handle_message(input_data, + message, wparam, lparam)) + return 0; + } +#endif + break; case WM_NCLBUTTONDBLCLK: doubleclick_on_titlebar = true; +#if _WIN32_WINNT >= 0x0500 /* 2K */ + if (g_taskbar_message && message == g_taskbar_message) + taskbar_is_created = true; +#endif break; case WM_DROPFILES: case WM_SYSCOMMAND: @@ -991,6 +1030,10 @@ LRESULT CALLBACK WndProcD3D(HWND hwnd, UINT message, ret = WndProcCommon(&quit, hwnd, message, wparam, lparam); if (quit) return ret; +#if _WIN32_WINNT >= 0x0500 /* 2K */ + if (g_taskbar_message && message == g_taskbar_message) + taskbar_is_created = true; +#endif break; case WM_CREATE: { @@ -1004,20 +1047,6 @@ LRESULT CALLBACK WndProcD3D(HWND hwnd, UINT message, return 0; } -#if _WIN32_WINNT >= 0x0500 /* 2K */ - if (g_taskbar_message && message == g_taskbar_message) - taskbar_is_created = true; -#endif - -#ifdef HAVE_DINPUT - if (input_get_ptr() == &input_dinput) - { - void* input_data = input_get_data(); - if (input_data && dinput_handle_message(input_data, - message, wparam, lparam)) - return 0; - } -#endif return DefWindowProc(hwnd, message, wparam, lparam); } #endif @@ -1029,11 +1058,31 @@ LRESULT CALLBACK WndProcGL(HWND hwnd, UINT message, LRESULT ret; bool quit = false; - switch (message) { + case WM_MOUSEMOVE: + case WM_POINTERDOWN: + case WM_POINTERUP: + case WM_POINTERUPDATE: + case WM_DEVICECHANGE: + case WM_MOUSEWHEEL: + case WM_MOUSEHWHEEL: +#if _WIN32_WINNT >= 0x0500 /* 2K */ + if (g_taskbar_message && message == g_taskbar_message) + taskbar_is_created = true; +#endif +#ifdef HAVE_DINPUT + if (dinput_wgl && dinput_handle_message(dinput_wgl, + message, wparam, lparam)) + return 0; +#endif + break; case WM_NCLBUTTONDBLCLK: doubleclick_on_titlebar = true; +#if _WIN32_WINNT >= 0x0500 /* 2K */ + if (g_taskbar_message && message == g_taskbar_message) + taskbar_is_created = true; +#endif break; case WM_DROPFILES: case WM_SYSCOMMAND: @@ -1052,25 +1101,18 @@ LRESULT CALLBACK WndProcGL(HWND hwnd, UINT message, hwnd, message, wparam, lparam); if (quit) return ret; +#if _WIN32_WINNT >= 0x0500 /* 2K */ + if (g_taskbar_message && message == g_taskbar_message) + taskbar_is_created = true; +#endif break; case WM_CREATE: create_graphics_context(hwnd, &g_win32_quit); - if (DragAcceptFiles_func) DragAcceptFiles_func(hwnd, true); return 0; } -#if _WIN32_WINNT >= 0x0500 /* 2K */ - if (g_taskbar_message && message == g_taskbar_message) - taskbar_is_created = true; -#endif - -#ifdef HAVE_DINPUT - if (dinput_wgl && dinput_handle_message(dinput_wgl, - message, wparam, lparam)) - return 0; -#endif return DefWindowProc(hwnd, message, wparam, lparam); } #endif @@ -1084,8 +1126,29 @@ LRESULT CALLBACK WndProcGDI(HWND hwnd, UINT message, switch (message) { + case WM_MOUSEMOVE: + case WM_POINTERDOWN: + case WM_POINTERUP: + case WM_POINTERUPDATE: + case WM_DEVICECHANGE: + case WM_MOUSEWHEEL: + case WM_MOUSEHWHEEL: +#if _WIN32_WINNT >= 0x0500 /* 2K */ + if (g_taskbar_message && message == g_taskbar_message) + taskbar_is_created = true; +#endif +#ifdef HAVE_DINPUT + if (dinput_gdi && dinput_handle_message(dinput_gdi, + message, wparam, lparam)) + return 0; +#endif + break; case WM_NCLBUTTONDBLCLK: doubleclick_on_titlebar = true; +#if _WIN32_WINNT >= 0x0500 /* 2K */ + if (g_taskbar_message && message == g_taskbar_message) + taskbar_is_created = true; +#endif break; case WM_PAINT: { @@ -1120,6 +1183,10 @@ LRESULT CALLBACK WndProcGDI(HWND hwnd, UINT message, SelectObject(gdi->memDC, gdi->bmp_old); } +#if _WIN32_WINNT >= 0x0500 /* 2K */ + if (g_taskbar_message && message == g_taskbar_message) + taskbar_is_created = true; +#endif break; } case WM_DROPFILES: @@ -1138,25 +1205,18 @@ LRESULT CALLBACK WndProcGDI(HWND hwnd, UINT message, ret = WndProcCommon(&quit, hwnd, message, wparam, lparam); if (quit) return ret; +#if _WIN32_WINNT >= 0x0500 /* 2K */ + if (g_taskbar_message && message == g_taskbar_message) + taskbar_is_created = true; +#endif break; case WM_CREATE: create_gdi_context(hwnd, &g_win32_quit); - if (DragAcceptFiles_func) DragAcceptFiles_func(hwnd, true); return 0; } -#if _WIN32_WINNT >= 0x0500 /* 2K */ - if (g_taskbar_message && message == g_taskbar_message) - taskbar_is_created = true; -#endif - -#ifdef HAVE_DINPUT - if (dinput_gdi && dinput_handle_message(dinput_gdi, - message, wparam, lparam)) - return 0; -#endif return DefWindowProc(hwnd, message, wparam, lparam); } #endif From 7ca666a0e94173e173ef578cbcdb2dba2a206e7e Mon Sep 17 00:00:00 2001 From: Toad King Date: Sat, 18 Jan 2020 12:44:57 -0600 Subject: [PATCH 100/148] fix mouse capture hotkey not working There's a normal binding for this set in your configs/`grab_mouse_toggle`, but there's a second place where it's hardcoded to check the F11 key. Because F11 is the default key, both of these codepaths will run which immediately captures and then uncaptures the mouse cursor, effectively breaking it. Tested and this fixes the behavior on Linux and Emscripten --- retroarch.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/retroarch.c b/retroarch.c index bc98ec6d2c..2efec80a59 100644 --- a/retroarch.c +++ b/retroarch.c @@ -14983,12 +14983,6 @@ static unsigned menu_event( ret = MENU_ACTION_TOGGLE; } - if (menu_keyboard_key_state[RETROK_F11]) - { - command_event(CMD_EVENT_GRAB_MOUSE_TOGGLE, NULL); - menu_keyboard_key_state[RETROK_F11] = 0; - } - /* Get pointer (mouse + touchscreen) input */ /* > If pointer input is disabled, do nothing */ From 14c67fde7f1f18089fccac46fd0fe269d0a7288b Mon Sep 17 00:00:00 2001 From: Toad King Date: Sat, 18 Jan 2020 12:51:21 -0600 Subject: [PATCH 101/148] emscripten: recreate input event listeners properly There's a new (undocumented -_-) API for removing event listeners in emscripten now, so use that when recreating input listeners. Fixes mouse events breaking when loading cores. --- input/drivers/rwebinput_input.c | 197 +++++++++++++------------- input/drivers_joypad/rwebpad_joypad.c | 40 +++--- pkg/emscripten/libretro/embed.html | 4 +- pkg/emscripten/libretro/index.html | 2 +- 4 files changed, 116 insertions(+), 127 deletions(-) diff --git a/input/drivers/rwebinput_input.c b/input/drivers/rwebinput_input.c index 80e00c0a1e..ce68c1d2ed 100644 --- a/input/drivers/rwebinput_input.c +++ b/input/drivers/rwebinput_input.c @@ -63,9 +63,13 @@ typedef struct rwebinput_mouse_states { signed x; signed y; + signed pending_delta_x; + signed pending_delta_y; signed delta_x; signed delta_y; uint8_t buttons; + double pending_scroll_x; + double pending_scroll_y; double scroll_x; double scroll_y; } rwebinput_mouse_state_t; @@ -74,6 +78,7 @@ typedef struct rwebinput_input { bool keys[RETROK_LAST]; rwebinput_mouse_state_t mouse; + rwebinput_keyboard_event_queue_t keyboard; const input_device_driver_t *joypad; } rwebinput_input_t; @@ -194,10 +199,6 @@ static const rwebinput_key_to_code_map_entry_t rwebinput_key_to_code_map[] = { "Power", RETROK_POWER }, }; -static bool g_rwebinput_initialized; -static rwebinput_keyboard_event_queue_t *g_rwebinput_keyboard; -static rwebinput_mouse_state_t *g_rwebinput_mouse; - /* to make the string labels for codes from JavaScript work, we convert them * to CRC32 hashes for the LUT */ static void rwebinput_generate_lut(void) @@ -237,22 +238,24 @@ static void rwebinput_generate_lut(void) static EM_BOOL rwebinput_keyboard_cb(int event_type, const EmscriptenKeyboardEvent *key_event, void *user_data) { + rwebinput_input_t *rwebinput = (rwebinput_input_t*)user_data; + if (event_type == EMSCRIPTEN_EVENT_KEYPRESS) return EM_TRUE; - if (g_rwebinput_keyboard->count >= g_rwebinput_keyboard->max_size) + if (rwebinput->keyboard.count >= rwebinput->keyboard.max_size) { - size_t new_max = MAX(1, g_rwebinput_keyboard->max_size << 1); - g_rwebinput_keyboard->events = realloc(g_rwebinput_keyboard->events, - new_max * sizeof(g_rwebinput_keyboard->events[0])); - retro_assert(g_rwebinput_keyboard->events != NULL); - g_rwebinput_keyboard->max_size = new_max; + size_t new_max = MAX(1, rwebinput->keyboard.max_size << 1); + rwebinput->keyboard.events = realloc(rwebinput->keyboard.events, + new_max * sizeof(rwebinput->keyboard.events[0])); + retro_assert(rwebinput->keyboard.events != NULL); + rwebinput->keyboard.max_size = new_max; } - g_rwebinput_keyboard->events[g_rwebinput_keyboard->count].type = event_type; - memcpy(&g_rwebinput_keyboard->events[g_rwebinput_keyboard->count].event, + rwebinput->keyboard.events[rwebinput->keyboard.count].type = event_type; + memcpy(&rwebinput->keyboard.events[rwebinput->keyboard.count].event, key_event, sizeof(*key_event)); - g_rwebinput_keyboard->count++; + rwebinput->keyboard.count++; return EM_TRUE; } @@ -260,22 +263,22 @@ static EM_BOOL rwebinput_keyboard_cb(int event_type, static EM_BOOL rwebinput_mouse_cb(int event_type, const EmscriptenMouseEvent *mouse_event, void *user_data) { - (void)user_data; + rwebinput_input_t *rwebinput = (rwebinput_input_t*)user_data; uint8_t mask = 1 << mouse_event->button; - g_rwebinput_mouse->x = mouse_event->targetX; - g_rwebinput_mouse->y = mouse_event->targetY; - g_rwebinput_mouse->delta_x += mouse_event->movementX; - g_rwebinput_mouse->delta_y += mouse_event->movementY; + rwebinput->mouse.x = mouse_event->targetX; + rwebinput->mouse.y = mouse_event->targetY; + rwebinput->mouse.pending_delta_x += mouse_event->movementX; + rwebinput->mouse.pending_delta_y += mouse_event->movementY; if (event_type == EMSCRIPTEN_EVENT_MOUSEDOWN) { - g_rwebinput_mouse->buttons |= mask; + rwebinput->mouse.buttons |= mask; } else if (event_type == EMSCRIPTEN_EVENT_MOUSEUP) { - g_rwebinput_mouse->buttons &= ~mask; + rwebinput->mouse.buttons &= ~mask; } return EM_TRUE; @@ -284,91 +287,80 @@ static EM_BOOL rwebinput_mouse_cb(int event_type, static EM_BOOL rwebinput_wheel_cb(int event_type, const EmscriptenWheelEvent *wheel_event, void *user_data) { + rwebinput_input_t *rwebinput = (rwebinput_input_t*)user_data; (void)event_type; - (void)user_data; - g_rwebinput_mouse->scroll_x += wheel_event->deltaX; - g_rwebinput_mouse->scroll_y += wheel_event->deltaY; + rwebinput->mouse.pending_scroll_x += wheel_event->deltaX; + rwebinput->mouse.pending_scroll_y += wheel_event->deltaY; return EM_TRUE; } static void *rwebinput_input_init(const char *joypad_driver) { + EMSCRIPTEN_RESULT r; rwebinput_input_t *rwebinput = (rwebinput_input_t*)calloc(1, sizeof(*rwebinput)); - g_rwebinput_keyboard = (rwebinput_keyboard_event_queue_t*) - calloc(1, sizeof(rwebinput_keyboard_event_queue_t)); - g_rwebinput_mouse = (rwebinput_mouse_state_t*) - calloc(1, sizeof(rwebinput_mouse_state_t)); - if (!rwebinput || !g_rwebinput_keyboard || !g_rwebinput_mouse) + if (!rwebinput) goto error; - if (!g_rwebinput_initialized) + rwebinput_generate_lut(); + + r = emscripten_set_keydown_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, rwebinput, false, + rwebinput_keyboard_cb); + if (r != EMSCRIPTEN_RESULT_SUCCESS) { - EMSCRIPTEN_RESULT r; + RARCH_ERR( + "[EMSCRIPTEN/INPUT] failed to create keydown callback: %d\n", r); + } - g_rwebinput_initialized = true; - rwebinput_generate_lut(); + r = emscripten_set_keyup_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, rwebinput, false, + rwebinput_keyboard_cb); + if (r != EMSCRIPTEN_RESULT_SUCCESS) + { + RARCH_ERR( + "[EMSCRIPTEN/INPUT] failed to create keydown callback: %d\n", r); + } - /* emscripten currently doesn't have an API to remove handlers, so make - * once and reuse it */ - r = emscripten_set_keydown_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, NULL, false, - rwebinput_keyboard_cb); - if (r != EMSCRIPTEN_RESULT_SUCCESS) - { - RARCH_ERR( - "[EMSCRIPTEN/INPUT] failed to create keydown callback: %d\n", r); - } + r = emscripten_set_keypress_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, rwebinput, false, + rwebinput_keyboard_cb); + if (r != EMSCRIPTEN_RESULT_SUCCESS) + { + RARCH_ERR( + "[EMSCRIPTEN/INPUT] failed to create keypress callback: %d\n", r); + } - r = emscripten_set_keyup_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, NULL, false, - rwebinput_keyboard_cb); - if (r != EMSCRIPTEN_RESULT_SUCCESS) - { - RARCH_ERR( - "[EMSCRIPTEN/INPUT] failed to create keydown callback: %d\n", r); - } + r = emscripten_set_mousedown_callback("#canvas", rwebinput, false, + rwebinput_mouse_cb); + if (r != EMSCRIPTEN_RESULT_SUCCESS) + { + RARCH_ERR( + "[EMSCRIPTEN/INPUT] failed to create mousedown callback: %d\n", r); + } - r = emscripten_set_keypress_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, NULL, false, - rwebinput_keyboard_cb); - if (r != EMSCRIPTEN_RESULT_SUCCESS) - { - RARCH_ERR( - "[EMSCRIPTEN/INPUT] failed to create keypress callback: %d\n", r); - } + r = emscripten_set_mouseup_callback("#canvas", rwebinput, false, + rwebinput_mouse_cb); + if (r != EMSCRIPTEN_RESULT_SUCCESS) + { + RARCH_ERR( + "[EMSCRIPTEN/INPUT] failed to create mouseup callback: %d\n", r); + } - r = emscripten_set_mousedown_callback("#canvas", NULL, false, - rwebinput_mouse_cb); - if (r != EMSCRIPTEN_RESULT_SUCCESS) - { - RARCH_ERR( - "[EMSCRIPTEN/INPUT] failed to create mousedown callback: %d\n", r); - } + r = emscripten_set_mousemove_callback("#canvas", rwebinput, false, + rwebinput_mouse_cb); + if (r != EMSCRIPTEN_RESULT_SUCCESS) + { + RARCH_ERR( + "[EMSCRIPTEN/INPUT] failed to create mousemove callback: %d\n", r); + } - r = emscripten_set_mouseup_callback("#canvas", NULL, false, - rwebinput_mouse_cb); - if (r != EMSCRIPTEN_RESULT_SUCCESS) - { - RARCH_ERR( - "[EMSCRIPTEN/INPUT] failed to create mouseup callback: %d\n", r); - } - - r = emscripten_set_mousemove_callback("#canvas", NULL, false, - rwebinput_mouse_cb); - if (r != EMSCRIPTEN_RESULT_SUCCESS) - { - RARCH_ERR( - "[EMSCRIPTEN/INPUT] failed to create mousemove callback: %d\n", r); - } - - r = emscripten_set_wheel_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, NULL, false, - rwebinput_wheel_cb); - if (r != EMSCRIPTEN_RESULT_SUCCESS) - { - RARCH_ERR( - "[EMSCRIPTEN/INPUT] failed to create wheel callback: %d\n", r); - } + r = emscripten_set_wheel_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, rwebinput, false, + rwebinput_wheel_cb); + if (r != EMSCRIPTEN_RESULT_SUCCESS) + { + RARCH_ERR( + "[EMSCRIPTEN/INPUT] failed to create wheel callback: %d\n", r); } input_keymaps_init_keyboard_lut(rarch_key_map_rwebinput); @@ -378,8 +370,6 @@ static void *rwebinput_input_init(const char *joypad_driver) return rwebinput; error: - free(g_rwebinput_keyboard); - free(g_rwebinput_mouse); free(rwebinput); return NULL; } @@ -526,7 +516,7 @@ static int16_t rwebinput_input_state(void *data, const struct retro_keybind **binds, unsigned port, unsigned device, unsigned idx, unsigned id) { - rwebinput_input_t *rwebinput = (rwebinput_input_t*)data; + rwebinput_input_t *rwebinput = (rwebinput_input_t*)data; switch (device) { @@ -584,14 +574,15 @@ static void rwebinput_input_free(void *data) { rwebinput_input_t *rwebinput = (rwebinput_input_t*)data; - if (g_rwebinput_keyboard) - free(g_rwebinput_keyboard->events); - free(g_rwebinput_keyboard); - g_rwebinput_keyboard = NULL; - free(g_rwebinput_mouse); - g_rwebinput_mouse = NULL; + emscripten_html5_remove_all_event_listeners(); + + if (rwebinput->joypad) + rwebinput->joypad->destroy(); + + free(rwebinput->keyboard.events); free(rwebinput); } + static void rwebinput_process_keyboard_events(rwebinput_input_t *rwebinput, rwebinput_keyboard_event_t *event) { @@ -644,14 +635,20 @@ static void rwebinput_input_poll(void *data) size_t i; rwebinput_input_t *rwebinput = (rwebinput_input_t*)data; - for (i = 0; i < g_rwebinput_keyboard->count; i++) + for (i = 0; i < rwebinput->keyboard.count; i++) rwebinput_process_keyboard_events(rwebinput, - &g_rwebinput_keyboard->events[i]); - g_rwebinput_keyboard->count = 0; + &rwebinput->keyboard.events[i]); + rwebinput->keyboard.count = 0; - memcpy(&rwebinput->mouse, g_rwebinput_mouse, sizeof(*g_rwebinput_mouse)); - g_rwebinput_mouse->delta_x = g_rwebinput_mouse->delta_y = 0; - g_rwebinput_mouse->scroll_x = g_rwebinput_mouse->scroll_y = 0.0; + rwebinput->mouse.delta_x = rwebinput->mouse.pending_delta_x; + rwebinput->mouse.delta_y = rwebinput->mouse.pending_delta_y; + rwebinput->mouse.pending_delta_x = 0; + rwebinput->mouse.pending_delta_y = 0; + + rwebinput->mouse.scroll_x = rwebinput->mouse.pending_scroll_x; + rwebinput->mouse.scroll_y = rwebinput->mouse.pending_scroll_y; + rwebinput->mouse.pending_scroll_x = 0; + rwebinput->mouse.pending_scroll_y = 0; if (rwebinput->joypad) rwebinput->joypad->poll(); diff --git a/input/drivers_joypad/rwebpad_joypad.c b/input/drivers_joypad/rwebpad_joypad.c index a77a03be23..463a9d4aa6 100644 --- a/input/drivers_joypad/rwebpad_joypad.c +++ b/input/drivers_joypad/rwebpad_joypad.c @@ -27,8 +27,6 @@ #define CLAMPDOUBLE(x) MIN(1.0, MAX(-1.0, (x))) -static bool g_rwebpad_initialized; - static EM_BOOL rwebpad_gamepad_cb(int event_type, const EmscriptenGamepadEvent *gamepad_event, void *user_data) { @@ -64,34 +62,28 @@ static EM_BOOL rwebpad_gamepad_cb(int event_type, static bool rwebpad_joypad_init(void *data) { - EMSCRIPTEN_RESULT supported; + EMSCRIPTEN_RESULT r; (void)data; - supported = emscripten_sample_gamepad_data(); - if (supported == EMSCRIPTEN_RESULT_NOT_SUPPORTED) + r = emscripten_sample_gamepad_data(); + if (r == EMSCRIPTEN_RESULT_NOT_SUPPORTED) return false; - if (!g_rwebpad_initialized) + /* callbacks needs to be registered for gamepads to connect */ + r = emscripten_set_gamepadconnected_callback(NULL, false, + rwebpad_gamepad_cb); + if (r != EMSCRIPTEN_RESULT_SUCCESS) { - EMSCRIPTEN_RESULT r; - g_rwebpad_initialized = true; + RARCH_ERR( + "[EMSCRIPTEN/PAD] failed to create connect callback: %d\n", r); + } - /* callbacks needs to be registered for gamepads to connect */ - r = emscripten_set_gamepadconnected_callback(NULL, false, - rwebpad_gamepad_cb); - if (r != EMSCRIPTEN_RESULT_SUCCESS) - { - RARCH_ERR( - "[EMSCRIPTEN/PAD] failed to create connect callback: %d\n", r); - } - - r = emscripten_set_gamepaddisconnected_callback(NULL, false, - rwebpad_gamepad_cb); - if (r != EMSCRIPTEN_RESULT_SUCCESS) - { - RARCH_ERR( - "[EMSCRIPTEN/PAD] failed to create disconnect callback: %d\n", r); - } + r = emscripten_set_gamepaddisconnected_callback(NULL, false, + rwebpad_gamepad_cb); + if (r != EMSCRIPTEN_RESULT_SUCCESS) + { + RARCH_ERR( + "[EMSCRIPTEN/PAD] failed to create disconnect callback: %d\n", r); } return true; diff --git a/pkg/emscripten/libretro/embed.html b/pkg/emscripten/libretro/embed.html index f37ceb365f..5c6f6b0bdf 100644 --- a/pkg/emscripten/libretro/embed.html +++ b/pkg/emscripten/libretro/embed.html @@ -50,11 +50,11 @@ - - diff --git a/pkg/emscripten/libretro/index.html b/pkg/emscripten/libretro/index.html index 5f4ed08b91..79bde9a1bf 100644 --- a/pkg/emscripten/libretro/index.html +++ b/pkg/emscripten/libretro/index.html @@ -93,7 +93,7 @@ - From 21b8ae9e52f7dd651bf34c5b3d6faa8f782c6b9a Mon Sep 17 00:00:00 2001 From: DEX357 Date: Sat, 18 Jan 2020 20:29:49 +0100 Subject: [PATCH 102/148] New PL strings --- intl/msg_hash_pl.h | 159 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) diff --git a/intl/msg_hash_pl.h b/intl/msg_hash_pl.h index 8964207024..db3ea21309 100644 --- a/intl/msg_hash_pl.h +++ b/intl/msg_hash_pl.h @@ -4800,3 +4800,162 @@ MSG_HASH( MENU_ENUM_SUBLABEL_MENU_TICKER_SMOOTH,/* FIXME */ "Użyj płynnej animacji przewijania podczas wyświetlania długich ciągów tekstowych menu. Ma niewielki wpływ na wydajność." ) + MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_LIST, + "Skanowanie ręczne" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_LIST, + "Konfigurowalne skanowanie w oparciu o nazwy plików zawartości. Nie wymaga zawartości pasującej do bazy danych." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_DIR, + "Katalog treści" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_DIR, + "Wybiera katalog do skanowania w poszukiwaniu zawartości." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_SYSTEM_NAME, + "Nazwa systemu" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_SYSTEM_NAME, + "Podaj „nazwę systemu”, z którą chcesz powiązać zeskanowaną zawartość. Służy do nazywania wygenerowanego pliku listy odtwarzania i identyfikowania miniatur listy odtwarzania." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_SYSTEM_NAME_CUSTOM, + "Niestandardowa nazwa systemu" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_SYSTEM_NAME_CUSTOM, + "Ręcznie określ „nazwę systemu” dla skanowanej zawartości. Używane tylko, gdy „Nazwa Systemu” jest ustawiona na „”." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_CORE_NAME, + "Rdzeń" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_CORE_NAME, + "Wybierz domyślny rdzeń, który będzie używany podczas uruchamiania zeskanowanej zawartości." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_FILE_EXTS, + "Rozszerzenia plików" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_FILE_EXTS, + "Rozdzielana spacjami lista typów plików, które należy uwzględnić podczas skanowania. Jeśli jest pusta, obejmuje wszystkie pliki - lub jeśli określono rdzeń, wszystkie pliki obsługiwane przez rdzeń." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_SEARCH_ARCHIVES, + "Skanuj wewnątrz archiwów" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_SEARCH_ARCHIVES, + "Po włączeniu pliki archiwów (.zip, .7z itp.) Będą wyszukiwane pod kątem prawidłowej / obsługiwanej zawartości. Może mieć znaczący wpływ na wydajność skanowania." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_DAT_FILE, + "Plik Arcade DAT" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_DAT_FILE, + "ybierz plik XML DAT Logiqx lub MAME List, aby włączyć automatyczne nazywanie zeskanowanej zawartości zręcznościowej (MAME, FinalBurn Neo itp.)." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_OVERWRITE, + "Zastąp istniejącą listę odtwarzania" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_OVERWRITE, + "Po włączeniu wszelkie istniejące listy odtwarzania zostaną usunięte przed skanowaniem zawartości. Po wyłączeniu istniejące wpisy listy odtwarzania są zachowywane i dodawana jest tylko zawartość aktualnie brakująca na liście odtwarzania." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_START, + "Rozpocznij skanowanie" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_START, + "Skanuj wybraną zawartość." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_OUTPUT_SETTINGS, + "Wyjście" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_OUTPUT_SETTINGS, + "Zmień ustawienia wyjścia wideo." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SCALING_SETTINGS, + "Skalowanie" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SCALING_SETTINGS, + "Zmień ustawienia skalowania wideo." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SYNCHRONIZATION_SETTINGS, + "Synchronizacja" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SYNCHRONIZATION_SETTINGS, + "Zmień ustawienia synchronizacji wideo." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_OUTPUT_SETTINGS, + "Wyjście" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_OUTPUT_SETTINGS, + "Zmień ustawienia wyjścia audio." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_SYNCHRONIZATION_SETTINGS, + "Synchronization" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_SYNCHRONIZATION_SETTINGS, + "Zmień ustawienia synchronizacji dźwięku." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_SETTINGS, + "Resampler" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_RESAMPLER_SETTINGS, + "Zmień ustawienia resamplera audio." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_TURBO_MODE, + "Wybiera ogólne zachowanie trybu turbo." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_TURBO_DEFAULT_BUTTON, + "Domyślny przycisk Turbo" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_TURBO_MODE, + "Tryb turbo" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_TURBO_DEFAULT_BUTTON, + "Domyślny aktywny przycisk trybu pojedynczego „Turbo”." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_HAPTIC_FEEDBACK_SETTINGS, + "Haptyczne sprzężenie zwrotne / wibracje" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_HAPTIC_FEEDBACK_SETTINGS, + "Zmień ustawienia dotykowego sprzężenia zwrotnego i wibracji." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MENU_SETTINGS, + "Sterowanie menu" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_MENU_SETTINGS, + "Zmień ustawienia sterowania menu." + ) From 7f3bf757883df00282f4f696291a8fe5e06b6c8c Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 19 Jan 2020 04:14:47 +0100 Subject: [PATCH 103/148] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 815e3e62f3..6f10970bee 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,5 @@ # Future +- BUGFIX: Fix mouse capture hotkey not working # 1.8.4 - ANDROID/BUGFIX: Prevent crash when Android device is minimized and you go back to the app From ff81118ffc72536c25612f895e9b73d5342c30ba Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 19 Jan 2020 04:15:25 +0100 Subject: [PATCH 104/148] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 6f10970bee..093f0ed72c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,6 @@ # Future - BUGFIX: Fix mouse capture hotkey not working +- EMSCRIPTEN: Recreate input event listeners properly # 1.8.4 - ANDROID/BUGFIX: Prevent crash when Android device is minimized and you go back to the app From 17153b4aae10b4995d31154c74912f7d31d6c87d Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 19 Jan 2020 04:16:08 +0100 Subject: [PATCH 105/148] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 093f0ed72c..c24f75f607 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,6 @@ # Future - BUGFIX: Fix mouse capture hotkey not working +- CHEEVOS: Support for extended Sega CD memory - EMSCRIPTEN: Recreate input event listeners properly # 1.8.4 From 4e7a8a6478dacebbf8e274b9a63841e780b20d1f Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 19 Jan 2020 04:16:41 +0100 Subject: [PATCH 106/148] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index c24f75f607..acf4f00336 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,6 +2,7 @@ - BUGFIX: Fix mouse capture hotkey not working - CHEEVOS: Support for extended Sega CD memory - EMSCRIPTEN: Recreate input event listeners properly +- LIBRETRO: Add disk control interface API extension # 1.8.4 - ANDROID/BUGFIX: Prevent crash when Android device is minimized and you go back to the app From 638b65c828d623e9fae1f08c5749f18507e48e64 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 19 Jan 2020 04:23:07 +0100 Subject: [PATCH 107/148] (platform_switch.c) Cleanups --- frontend/drivers/platform_switch.c | 199 +++++++++++------------------ 1 file changed, 76 insertions(+), 123 deletions(-) diff --git a/frontend/drivers/platform_switch.c b/frontend/drivers/platform_switch.c index df18934f91..250a505511 100644 --- a/frontend/drivers/platform_switch.c +++ b/frontend/drivers/platform_switch.c @@ -63,7 +63,7 @@ bool platform_switch_has_focus = true; /* Splash */ static uint32_t *splashData = NULL; -static bool psmInitialized = false; +static bool psmInitialized = false; static AppletHookCookie applet_hook_cookie; @@ -71,12 +71,19 @@ static AppletHookCookie applet_hook_cookie; extern bool nxlink_connected; #endif -void libnx_apply_overclock() { - const size_t profiles_count = sizeof(SWITCH_CPU_PROFILES) / sizeof(SWITCH_CPU_PROFILES[1]); - if (config_get_ptr()->uints.libnx_overclock >= 0 && config_get_ptr()->uints.libnx_overclock <= profiles_count){ - if(hosversionBefore(8, 0, 0)) { +void libnx_apply_overclock(void) +{ + const size_t profiles_count = sizeof(SWITCH_CPU_PROFILES) + / sizeof(SWITCH_CPU_PROFILES[1]); + + if (config_get_ptr()->uints.libnx_overclock >= 0 && config_get_ptr()->uints.libnx_overclock <= profiles_count) + { + if (hosversionBefore(8, 0, 0)) + { pcvSetClockRate(PcvModule_CpuBus, SWITCH_CPU_SPEEDS_VALUES[config_get_ptr()->uints.libnx_overclock]); - } else { + } + else + { ClkrstSession session = {0}; clkrstOpenSession(&session, PcvModuleId_CpuBus, 3); clkrstSetClockRate(&session, SWITCH_CPU_SPEEDS_VALUES[config_get_ptr()->uints.libnx_overclock]); @@ -85,52 +92,59 @@ void libnx_apply_overclock() { } } -static void on_applet_hook(AppletHookType hook, void *param) { +static void on_applet_hook(AppletHookType hook, void *param) +{ u32 performance_mode; AppletFocusState focus_state; /* Exit request */ switch (hook) { - case AppletHookType_OnExitRequest: - RARCH_LOG("Got AppletHook OnExitRequest, exiting.\n"); - retroarch_main_quit(); - break; + case AppletHookType_OnExitRequest: + RARCH_LOG("Got AppletHook OnExitRequest, exiting.\n"); + retroarch_main_quit(); + break; - /* Focus state*/ - case AppletHookType_OnFocusState: - focus_state = appletGetFocusState(); - RARCH_LOG("Got AppletHook OnFocusState - new focus state is %d\n", focus_state); - platform_switch_has_focus = focus_state == AppletFocusState_Focused; - if(!platform_switch_has_focus) { - if(hosversionBefore(8, 0, 0)) { - pcvSetClockRate(PcvModule_CpuBus, 1020000000); - } else { - ClkrstSession session = {0}; - clkrstOpenSession(&session, PcvModuleId_CpuBus, 3); - clkrstSetClockRate(&session, 1020000000); - clkrstCloseSession(&session); + /* Focus state*/ + case AppletHookType_OnFocusState: + focus_state = appletGetFocusState(); + RARCH_LOG("Got AppletHook OnFocusState - new focus state is %d\n", focus_state); + platform_switch_has_focus = focus_state == AppletFocusState_Focused; + + if (!platform_switch_has_focus) + { + if (hosversionBefore(8, 0, 0)) + { + pcvSetClockRate(PcvModule_CpuBus, 1020000000); + } + else + { + ClkrstSession session = {0}; + clkrstOpenSession(&session, PcvModuleId_CpuBus, 3); + clkrstSetClockRate(&session, 1020000000); + clkrstCloseSession(&session); + } } - } else { + else + libnx_apply_overclock(); + break; + + /* Performance mode */ + case AppletHookType_OnPerformanceMode: + /* 0 == Handheld, 1 == Docked + * Since CPU doesn't change we just re-apply */ + performance_mode = appletGetPerformanceMode(); libnx_apply_overclock(); - } - break; + break; - /* Performance mode */ - case AppletHookType_OnPerformanceMode: - // 0 == Handheld, 1 == Docked - // Since CPU doesn't change we just re-apply - performance_mode = appletGetPerformanceMode(); - libnx_apply_overclock(); - break; - - default: - break; + default: + break; } } #endif /* HAVE_LIBNX */ +#ifdef IS_SALAMANDER static void get_first_valid_core(char *path_return) { DIR *dir; @@ -140,11 +154,11 @@ static void get_first_valid_core(char *path_return) path_return[0] = '\0'; dir = opendir(SD_PREFIX "/retroarch/cores"); - if (dir != NULL) + if (dir) { - while ((ent = readdir(dir)) != NULL) + while ((ent = readdir(dir))) { - if (ent == NULL) + if (!ent) break; if (strlen(ent->d_name) > strlen(extension) && !strcmp(ent->d_name + strlen(ent->d_name) - strlen(extension), extension)) { @@ -157,8 +171,10 @@ static void get_first_valid_core(char *path_return) closedir(dir); } } +#endif -static void frontend_switch_get_environment_settings(int *argc, char *argv[], void *args, void *params_data) +static void frontend_switch_get_environment_settings( + int *argc, char *argv[], void *args, void *params_data) { unsigned i; (void)args; @@ -266,10 +282,13 @@ static void frontend_switch_deinit(void *data) #ifdef HAVE_LIBNX nifmExit(); - if(hosversionBefore(8, 0, 0)) { + if (hosversionBefore(8, 0, 0)) + { pcvSetClockRate(PcvModule_CpuBus, 1020000000); pcvExit(); - } else { + } + else + { ClkrstSession session = {0}; clkrstOpenSession(&session, PcvModuleId_CpuBus, 3); clkrstSetClockRate(&session, 1020000000); @@ -548,26 +567,21 @@ ssize_t readlink(const char *restrict path, char *restrict buf, size_t bufsize) /* Taken from glibc */ char *realpath(const char *name, char *resolved) { - char *rpath, *dest, *extra_buf = NULL; + char *rpath, *dest = NULL; const char *start, *end, *rpath_limit; long int path_max; - int num_links = 0; - if (name == NULL) - { - /* As per Single Unix Specification V2 we must return an error if - either parameter is a null pointer. We extend this to allow - the RESOLVED parameter to be NULL in case the we are expected to - allocate the room for the return value. */ + /* As per Single Unix Specification V2 we must return an error if + either parameter is a null pointer. We extend this to allow + the RESOLVED parameter to be NULL in case the we are expected to + allocate the room for the return value. */ + if (!name) return NULL; - } + /* As per Single Unix Specification V2 we must return an error if + the name argument points to an empty string. */ if (name[0] == '\0') - { - /* As per Single Unix Specification V2 we must return an error if - the name argument points to an empty string. */ return NULL; - } #ifdef PATH_MAX path_max = PATH_MAX; @@ -577,10 +591,10 @@ char *realpath(const char *name, char *resolved) path_max = 1024; #endif - if (resolved == NULL) + if (!resolved) { rpath = malloc(path_max); - if (rpath == NULL) + if (!rpath) return NULL; } else @@ -650,7 +664,7 @@ char *realpath(const char *name, char *resolved) else new_size += path_max; new_rpath = (char *)realloc(rpath, new_size); - if (new_rpath == NULL) + if (!new_rpath) goto error; rpath = new_rpath; rpath_limit = rpath + new_size; @@ -669,7 +683,7 @@ char *realpath(const char *name, char *resolved) return rpath; error: - if (resolved == NULL) + if (!resolved) free(rpath); return NULL; } @@ -688,12 +702,10 @@ static void frontend_switch_init(void *data) { #ifdef HAVE_LIBNX bool recording_supported = false; - uint32_t width = 0; - uint32_t height = 0; nifmInitialize(NifmServiceType_User); - if(hosversionBefore(8, 0, 0)) + if (hosversionBefore(8, 0, 0)) pcvInitialize(); else clkrstInitialize(); @@ -703,7 +715,7 @@ static void frontend_switch_init(void *data) appletSetFocusHandlingMode(AppletFocusHandlingMode_NoSuspend); appletIsGamePlayRecordingSupported(&recording_supported); - if(recording_supported) + if (recording_supported) appletInitializeGamePlayRecording(); #ifdef NXLINK @@ -723,65 +735,6 @@ static void frontend_switch_init(void *data) RARCH_WARN("Error initializing psm\n"); } -#if 0 -#ifndef HAVE_OPENGL - /* Load splash */ - if (!splashData) - { - rarch_system_info_t *sys_info = runloop_get_system_info(); - retro_get_system_info(sys_info); - - if (sys_info) - { - const char *core_name = sys_info->info.library_name; - char *full_core_splash_path = (char*)malloc(PATH_MAX); - - snprintf(full_core_splash_path, - PATH_MAX, "/retroarch/rgui/splash/%s.png", core_name); - - rpng_load_image_argb((const char *) - full_core_splash_path, &splashData, &width, &height); - - if (splashData) - { - argb_to_rgba8(splashData, height, width); - frontend_switch_showsplash(); - } - else - { - rpng_load_image_argb( - "/retroarch/rgui/splash/RetroArch.png", - &splashData, &width, &height); - - if (splashData) - { - argb_to_rgba8(splashData, height, width); - frontend_switch_showsplash(); - } - } - - free(full_core_splash_path); - } - else - { - rpng_load_image_argb( - "/retroarch/rgui/splash/RetroArch.png", - &splashData, &width, &height); - - if (splashData) - { - argb_to_rgba8(splashData, height, width); - frontend_switch_showsplash(); - } - } - } - else - { - frontend_switch_showsplash(); - } -#endif -#endif - #endif /* HAVE_LIBNX (splash) */ } From 51d6b467d6508cedcbd19c736940f041bfc37a93 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 19 Jan 2020 04:56:12 +0100 Subject: [PATCH 108/148] (Win32) Buildfix --- gfx/common/win32_common.c | 8 ++++++++ input/drivers/dinput.c | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gfx/common/win32_common.c b/gfx/common/win32_common.c index f7ccbd6750..9bb809ad75 100644 --- a/gfx/common/win32_common.c +++ b/gfx/common/win32_common.c @@ -91,6 +91,14 @@ /* These are defined in later SDKs, thus ifdeffed. */ +#ifndef WM_MOUSEHWHEEL +#define WM_MOUSEHWHEEL 0x20e +#endif + +#ifndef WM_MOUSEWHEEL +#define WM_MOUSEWHEEL 0x020A +#endif + #ifndef WM_POINTERUPDATE #define WM_POINTERUPDATE 0x0245 #endif diff --git a/input/drivers/dinput.c b/input/drivers/dinput.c index 4d0f2c1ce0..b0d682287a 100644 --- a/input/drivers/dinput.c +++ b/input/drivers/dinput.c @@ -32,11 +32,11 @@ #include #ifndef WM_MOUSEHWHEEL -#define WM_MOUSEHWHEEL 0x20e +#define WM_MOUSEHWHEEL 0x20e #endif #ifndef WM_MOUSEWHEEL -#define WM_MOUSEWHEEL 0x020A +#define WM_MOUSEWHEEL 0x020A #endif #ifdef HAVE_CONFIG_H From 32c62a7fe1bf9610b27328fdf4703eb5901edb7d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 19 Jan 2020 05:00:35 +0100 Subject: [PATCH 109/148] Get rid of header include --- gfx/display_servers/dispserv_x11.c | 1 - 1 file changed, 1 deletion(-) diff --git a/gfx/display_servers/dispserv_x11.c b/gfx/display_servers/dispserv_x11.c index 253a14254c..7fbfc1510c 100644 --- a/gfx/display_servers/dispserv_x11.c +++ b/gfx/display_servers/dispserv_x11.c @@ -36,7 +36,6 @@ #include "../video_display_server.h" #include "../common/x11_common.h" -#include "../../configuration.h" #include "../../retroarch.h" #include "../video_crt_switch.h" /* needed to set aspect for low res in linux */ From f8522090400f740f09f7dd048a2e559a4dac0963 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 19 Jan 2020 06:04:37 +0100 Subject: [PATCH 110/148] Silence some unused variable warnings on some targets --- gfx/common/egl_common.c | 1 - menu/widgets/menu_widgets.c | 4 ++++ retroarch.c | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/gfx/common/egl_common.c b/gfx/common/egl_common.c index 2b6905b63a..791f1b86e2 100644 --- a/gfx/common/egl_common.c +++ b/gfx/common/egl_common.c @@ -564,7 +564,6 @@ bool egl_init_context(egl_ctx_data_t *egl, EGLint *count, const EGLint *attrib_ptr, egl_accept_config_cb_t cb) { - int config_index = -1; EGLDisplay dpy = get_egl_display(platform, display_data); if (dpy == EGL_NO_DISPLAY) diff --git a/menu/widgets/menu_widgets.c b/menu/widgets/menu_widgets.c index dd6a4d9df9..8ade8c4300 100644 --- a/menu/widgets/menu_widgets.c +++ b/menu/widgets/menu_widgets.c @@ -56,11 +56,15 @@ static float msg_queue_info[16] = COLOR_HEX_TO_FLOAT(0x12ACF8, 1.0f); static float msg_queue_task_progress_1[16] = COLOR_HEX_TO_FLOAT(0x397869, 1.0f); /* Color of first progress bar in a task message */ static float msg_queue_task_progress_2[16] = COLOR_HEX_TO_FLOAT(0x317198, 1.0f); /* Color of second progress bar in a task message (for multiple tasks with same message) */ +#if 0 static float color_task_progress_bar[16] = COLOR_HEX_TO_FLOAT(0x22B14C, 1.0f); +#endif static unsigned text_color_info = 0xD8EEFFFF; +#if 0 static unsigned text_color_success = 0x22B14CFF; static unsigned text_color_error = 0xC23B22FF; +#endif static unsigned text_color_faint = 0x878787FF; static float volume_bar_background[16] = COLOR_HEX_TO_FLOAT(0x1A1A1A, 1.0f); diff --git a/retroarch.c b/retroarch.c index be5515feeb..735239a4d3 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1120,7 +1120,9 @@ static bool runloop_autosave = false; static bool runloop_max_frames_screenshot = false; static bool log_file_created = false; static bool log_file_override_active = false; +#ifdef HAVE_RUNAHEAD static bool has_variable_update = false; +#endif #if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_SLANG) || defined(HAVE_HLSL) static bool shader_presets_need_reload = true; #endif From 7748ac207c10714f75688e8b18ae60fac2edc732 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 19 Jan 2020 06:40:07 +0100 Subject: [PATCH 111/148] Split up blissbox code into separate file tasks/task_autodetect_blissbox.c --- Makefile.common | 1 + griffin/griffin.c | 1 + input/include/blissbox.h | 69 +--- tasks/task_autodetect.c | 476 +------------------------- tasks/task_autodetect_blissbox.c | 551 +++++++++++++++++++++++++++++++ tasks/tasks_internal.h | 15 + 6 files changed, 573 insertions(+), 540 deletions(-) create mode 100644 tasks/task_autodetect_blissbox.c diff --git a/Makefile.common b/Makefile.common index ee7dcf175d..96217ee911 100644 --- a/Makefile.common +++ b/Makefile.common @@ -230,6 +230,7 @@ OBJ += \ managers/state_manager.o \ gfx/drivers_font_renderer/bitmapfont.o \ tasks/task_autodetect.o \ + tasks/task_autodetect_blissbox.o \ input/input_autodetect_builtin.o \ input/input_keymaps.o \ input/input_remapping.o \ diff --git a/griffin/griffin.c b/griffin/griffin.c index 5f8bd10d51..91b9b2a5ee 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -606,6 +606,7 @@ FONTS INPUT ============================================================ */ #include "../tasks/task_autodetect.c" +#include "../tasks/task_autodetect_blissbox.c" #ifdef HAVE_AUDIOMIXER #include "../tasks/task_audio_mixer.c" #endif diff --git a/input/include/blissbox.h b/input/include/blissbox.h index 35686fe02e..cb840ef2a0 100644 --- a/input/include/blissbox.h +++ b/input/include/blissbox.h @@ -31,77 +31,12 @@ RETRO_BEGIN_DECLS -typedef struct { +typedef struct +{ const char *name; int index; } blissbox_pad_type_t; -const blissbox_pad_type_t blissbox_pad_types[] = -{ - {"A5200", 6}, - {"A5200_TB", 50}, - {"A7800", 4}, - {"ATARI", 0}, - {"ATARI_KEYPAD", 43}, - {"ATMARK", 10}, - {"BALLY", 42}, - {"CD32", 24}, - {"CDI", 33}, - {"COL", 1}, - {"COL_FLASHBACK", 48}, /* 3.0 */ - {"DC_ASCI", 15}, - {"DC_PAD", 16}, - {"DC_TWIN", 35}, /* 3.0 */ - {"FC_ARKANOID", 53}, - {"FC_NES", 52}, - {"GC", 9}, - {"GC_WHEEL", 18}, - {"GEN_3", 20}, - {"GEN_6", 21}, - {"GRAVIS_EX", 38}, - {"HAMMERHEAD", 40}, - {"HPD", 7}, - {"INTELI", 14}, - {"JAG", 11}, - {"MSSW", 39}, - {"N64", 19}, - {"NEO", 49}, - {"NES", 17}, - {"NES_ARKANOID", 30}, - {"NES_GUN", 28}, - {"NES_POWERPAD", 36}, - {"PADDLES", 41}, - {"PC_FX", 26}, - {"PC_GAMEPAD", 46}, - {"PSX_DIGITAL", 65}, - {"PSX_DS", 115}, - {"PSX_DS2", 121}, - {"PSX_FS", 83}, - {"PSX_JOGCON", 227}, /* 3.0 */ - {"PSX_NEGCON", 51}, - {"PSX_WHEEL", 12}, - {"SAC", 34}, - {"SATURN_ANALOG", 8}, - {"SATURN_DIGITAL", 3}, - {"SMS", 22}, - {"SNES", 27}, - {"SNESS_NTT", 47}, /* 3.0 */ - {"SPEEK", 45}, - {"TG16", 23}, - {"TG16_6BUTTON", 54}, /* 3.0 */ - {"THREE_DO", 25}, - {"THREE_DO_ANALOG", 37}, - {"VEC", 5}, - {"V_BOY", 29}, - {"WII_CLASSIC", 31}, - {"WII_DRUM", 55}, /* 3.0 */ - {"WII_MPLUS", 32}, - {"WII_NUNCHUK", 13}, - {"ZXSINC", 44}, - {"gx4000", 2}, - {NULL, 0}, /* used to mark unconnected ports, do not remove */ -}; - RETRO_END_DECLS #endif diff --git a/tasks/task_autodetect.c b/tasks/task_autodetect.c index 314d4fb0fa..29b6207302 100644 --- a/tasks/task_autodetect.c +++ b/tasks/task_autodetect.c @@ -21,56 +21,9 @@ #include #include -#include #include -#include -#include #include -#ifdef HAVE_LIBUSB -#ifdef __FreeBSD__ -#include -#else -#include -#endif -#endif - -#if defined(_WIN32) && !defined(_XBOX) && !defined(_MSC_VER) && _WIN32_WINNT >= 0x0500 -/* MinGW Win32 HID API */ -#include -#include -#include -#ifdef __NO_INLINE__ -/* Workaround MinGW issue where compiling without -O2 (which sets __NO_INLINE__) causes the strsafe functions - * to never be defined (only declared). - */ -#define __CRT_STRSAFE_IMPL -#endif -#include -#include -#include -#include -#include -#ifdef __cplusplus -extern "C" { -#endif -#include -#ifdef __cplusplus -} -#endif - -/* Why doesn't including cguid.h work to get a GUID_NULL instead? */ -#ifdef __cplusplus -EXTERN_C __attribute__((weak)) -const GUID GUID_NULL = {0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0}}; -#else -__attribute__((weak)) -const GUID GUID_NULL = {0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0}}; -#endif -#endif - -#include "../input/include/blissbox.h" - #include "../configuration.h" #include "../file_path_special.h" #include "../list_special.h" @@ -78,22 +31,9 @@ const GUID GUID_NULL = {0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0}}; #include "../retroarch.h" #include "tasks_internal.h" - -/* HID Class-Specific Requests values. See section 7.2 of the HID specifications */ -#define USB_HID_GET_REPORT 0x01 -#define USB_CTRL_IN LIBUSB_ENDPOINT_IN|LIBUSB_REQUEST_TYPE_CLASS|LIBUSB_RECIPIENT_INTERFACE -#define USB_PACKET_CTRL_LEN 5 -#define USB_TIMEOUT 5000 /* timeout in ms */ - -/* only one blissbox per machine is currently supported */ -static const blissbox_pad_type_t *blissbox_pads[BLISSBOX_MAX_PADS] = {NULL}; - -#ifdef HAVE_LIBUSB -static struct libusb_device_handle *autoconfig_libusb_handle = NULL; -#endif +#include "../input/include/blissbox.h" typedef struct autoconfig_disconnect autoconfig_disconnect_t; -typedef struct autoconfig_params autoconfig_params_t; struct autoconfig_disconnect { @@ -101,16 +41,6 @@ struct autoconfig_disconnect char *msg; }; -struct autoconfig_params -{ - int32_t vid; - int32_t pid; - unsigned idx; - uint32_t max_users; - char *name; - char *autoconfig_directory; -}; - static bool input_autoconfigured[MAX_USERS]; static unsigned input_device_name_index[MAX_INPUT_DEVICES]; static bool input_autoconfigure_swap_override; @@ -418,407 +348,6 @@ static void input_autoconfigure_params_free(autoconfig_params_t *params) params->autoconfig_directory = NULL; } -#ifdef _WIN32 -static const blissbox_pad_type_t* input_autoconfigure_get_blissbox_pad_type_win32(int vid, int pid) -{ - /* TODO: Remove the check for !defined(_MSC_VER) after making sure this builds on MSVC */ - - /* HID API is available since Windows 2000 */ -#if defined(_WIN32) && !defined(_XBOX) && !defined(_MSC_VER) && _WIN32_WINNT >= 0x0500 - HDEVINFO hDeviceInfo; - SP_DEVINFO_DATA DeviceInfoData; - SP_DEVICE_INTERFACE_DATA deviceInterfaceData; - HANDLE hDeviceHandle = INVALID_HANDLE_VALUE; - BOOL bResult = TRUE; - BOOL success = FALSE; - GUID guidDeviceInterface = {0}; - PSP_DEVICE_INTERFACE_DETAIL_DATA - pInterfaceDetailData = NULL; - ULONG requiredLength = 0; - LPTSTR lpDevicePath = NULL; - char *devicePath = NULL; - DWORD index = 0; - DWORD intIndex = 0; - size_t nLength = 0; - unsigned len = 0; - unsigned i = 0; - char vidPidString[32] = {0}; - char vidString[5] = {0}; - char pidString[5] = {0}; - char report[USB_PACKET_CTRL_LEN + 1] = {0}; - - snprintf(vidString, sizeof(vidString), "%04x", vid); - snprintf(pidString, sizeof(pidString), "%04x", pid); - - strlcat(vidPidString, "vid_", sizeof(vidPidString)); - strlcat(vidPidString, vidString, sizeof(vidPidString)); - strlcat(vidPidString, "&pid_", sizeof(vidPidString)); - strlcat(vidPidString, pidString, sizeof(vidPidString)); - - HidD_GetHidGuid(&guidDeviceInterface); - - if (!memcmp(&guidDeviceInterface, &GUID_NULL, sizeof(GUID_NULL))) - { - RARCH_ERR("[Autoconf]: null guid\n"); - return NULL; - } - - /* Get information about all the installed devices for the specified - * device interface class. - */ - hDeviceInfo = SetupDiGetClassDevs( - &guidDeviceInterface, - NULL, - NULL, - DIGCF_PRESENT | DIGCF_DEVICEINTERFACE); - - if (hDeviceInfo == INVALID_HANDLE_VALUE) - { - RARCH_ERR("[Autoconf]: Error in SetupDiGetClassDevs: %d.\n", - GetLastError()); - goto done; - } - - /* Enumerate all the device interfaces in the device information set. */ - DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA); - - while (!success) - { - success = SetupDiEnumDeviceInfo(hDeviceInfo, index, &DeviceInfoData); - - /* Reset for this iteration */ - if (lpDevicePath) - { - LocalFree(lpDevicePath); - lpDevicePath = NULL; - } - - if (pInterfaceDetailData) - { - LocalFree(pInterfaceDetailData); - pInterfaceDetailData = NULL; - } - - /* Check if this is the last item */ - if (GetLastError() == ERROR_NO_MORE_ITEMS) - break; - - deviceInterfaceData.cbSize = sizeof(SP_INTERFACE_DEVICE_DATA); - - /* Get information about the device interface. */ - for (intIndex = 0; (bResult = SetupDiEnumDeviceInterfaces( - hDeviceInfo, - &DeviceInfoData, - &guidDeviceInterface, - intIndex, - &deviceInterfaceData)); intIndex++) - { - /* Check if this is the last item */ - if (GetLastError() == ERROR_NO_MORE_ITEMS) - break; - - /* Check for some other error */ - if (!bResult) - { - RARCH_ERR("[Autoconf]: Error in SetupDiEnumDeviceInterfaces: %d.\n", GetLastError()); - goto done; - } - - /* Interface data is returned in SP_DEVICE_INTERFACE_DETAIL_DATA - * which we need to allocate, so we have to call this function twice. - * First to get the size so that we know how much to allocate, and - * second to do the actual call with the allocated buffer. - */ - - bResult = SetupDiGetDeviceInterfaceDetail( - hDeviceInfo, - &deviceInterfaceData, - NULL, 0, - &requiredLength, - NULL); - - /* Check for some other error */ - if (!bResult) - { - if ((ERROR_INSUFFICIENT_BUFFER == GetLastError()) && (requiredLength > 0)) - { - /* we got the size, now allocate buffer */ - pInterfaceDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)LocalAlloc(LPTR, requiredLength); - - if (!pInterfaceDetailData) - { - RARCH_ERR("[Autoconf]: Error allocating memory for the device detail buffer.\n"); - goto done; - } - } - else - { - RARCH_ERR("[Autoconf]: Other error: %d.\n", GetLastError()); - goto done; - } - } - - /* get the interface detailed data */ - pInterfaceDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA); - - /* Now call it with the correct size and allocated buffer */ - bResult = SetupDiGetDeviceInterfaceDetail( - hDeviceInfo, - &deviceInterfaceData, - pInterfaceDetailData, - requiredLength, - NULL, - &DeviceInfoData); - - /* Check for some other error */ - if (!bResult) - { - RARCH_LOG("[Autoconf]: Error in SetupDiGetDeviceInterfaceDetail: %d.\n", GetLastError()); - goto done; - } - - /* copy device path */ - nLength = _tcslen(pInterfaceDetailData->DevicePath) + 1; - lpDevicePath = (TCHAR*)LocalAlloc(LPTR, nLength * sizeof(TCHAR)); - - StringCchCopy(lpDevicePath, nLength, pInterfaceDetailData->DevicePath); - - devicePath = (char*)malloc(nLength); - - for (len = 0; len < nLength; len++) - devicePath[len] = lpDevicePath[len]; - - lpDevicePath[nLength - 1] = 0; - - if (strstr(devicePath, vidPidString)) - goto found; - } - - success = FALSE; - index++; - } - - if (!lpDevicePath) - { - RARCH_ERR("[Autoconf]: No devicepath. Error %d.", GetLastError()); - goto done; - } - -found: - /* Open the device */ - hDeviceHandle = CreateFileA( - devicePath, - GENERIC_READ, /* | GENERIC_WRITE,*/ - FILE_SHARE_READ, /* | FILE_SHARE_WRITE,*/ - NULL, - OPEN_EXISTING, - 0, /*FILE_FLAG_OVERLAPPED,*/ - NULL); - - if (hDeviceHandle == INVALID_HANDLE_VALUE) - { - /* Windows sometimes erroneously fails to open with a sharing violation: - * https://github.com/signal11/hidapi/issues/231 - * If this happens, trying again with read + write usually works for some reason. - */ - - /* Open the device */ - hDeviceHandle = CreateFileA( - devicePath, - GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, - OPEN_EXISTING, - 0, /*FILE_FLAG_OVERLAPPED,*/ - NULL); - - if (hDeviceHandle == INVALID_HANDLE_VALUE) - { - RARCH_ERR("[Autoconf]: Can't open device for reading and writing: %d.", GetLastError()); - runloop_msg_queue_push("Bliss-Box already in use. Please make sure other programs are not using it.", 2, 300, false, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - goto done; - } - } - -done: - free(devicePath); - LocalFree(lpDevicePath); - LocalFree(pInterfaceDetailData); - bResult = SetupDiDestroyDeviceInfoList(hDeviceInfo); - - devicePath = NULL; - lpDevicePath = NULL; - pInterfaceDetailData = NULL; - - if (!bResult) - RARCH_ERR("[Autoconf]: Could not destroy device info list.\n"); - - if (!hDeviceHandle || hDeviceHandle == INVALID_HANDLE_VALUE) - { - /* device is not connected */ - return NULL; - } - - report[0] = BLISSBOX_USB_FEATURE_REPORT_ID; - - HidD_GetFeature(hDeviceHandle, report, sizeof(report)); - - CloseHandle(hDeviceHandle); - - for (i = 0; i < sizeof(blissbox_pad_types) / sizeof(blissbox_pad_types[0]); i++) - { - const blissbox_pad_type_t *pad = &blissbox_pad_types[i]; - - if (!pad || string_is_empty(pad->name)) - continue; - - if (pad->index == report[0]) - return pad; - } - - RARCH_LOG("[Autoconf]: Could not find connected pad in Bliss-Box port#%d.\n", pid - BLISSBOX_PID); -#endif - - return NULL; -} -#else -static const blissbox_pad_type_t* input_autoconfigure_get_blissbox_pad_type_libusb(int vid, int pid) -{ -#ifdef HAVE_LIBUSB - unsigned i; - unsigned char answer[USB_PACKET_CTRL_LEN] = {0}; - int ret = libusb_init(NULL); - - if (ret < 0) - { - RARCH_ERR("[Autoconf]: Could not initialize libusb.\n"); - return NULL; - } - - autoconfig_libusb_handle = libusb_open_device_with_vid_pid(NULL, vid, pid); - - if (!autoconfig_libusb_handle) - { - RARCH_ERR("[Autoconf]: Could not find or open libusb device %d:%d.\n", vid, pid); - goto error; - } - -#ifdef __linux__ - libusb_detach_kernel_driver(autoconfig_libusb_handle, 0); -#endif - - ret = libusb_set_configuration(autoconfig_libusb_handle, 1); - - if (ret < 0) - { - RARCH_ERR("[Autoconf]: Error during libusb_set_configuration.\n"); - goto error; - } - - ret = libusb_claim_interface(autoconfig_libusb_handle, 0); - - if (ret < 0) - { - RARCH_ERR("[Autoconf]: Error during libusb_claim_interface.\n"); - goto error; - } - - ret = libusb_control_transfer(autoconfig_libusb_handle, USB_CTRL_IN, USB_HID_GET_REPORT, BLISSBOX_USB_FEATURE_REPORT_ID, 0, answer, USB_PACKET_CTRL_LEN, USB_TIMEOUT); - - if (ret < 0) - RARCH_ERR("[Autoconf]: Error during libusb_control_transfer.\n"); - - libusb_release_interface(autoconfig_libusb_handle, 0); - -#ifdef __linux__ - libusb_attach_kernel_driver(autoconfig_libusb_handle, 0); -#endif - - libusb_close(autoconfig_libusb_handle); - libusb_exit(NULL); - - for (i = 0; i < sizeof(blissbox_pad_types) / sizeof(blissbox_pad_types[0]); i++) - { - const blissbox_pad_type_t *pad = &blissbox_pad_types[i]; - - if (!pad || string_is_empty(pad->name)) - continue; - - if (pad->index == answer[0]) - return pad; - } - - RARCH_LOG("[Autoconf]: Could not find connected pad in Bliss-Box port#%d.\n", pid - BLISSBOX_PID); - - return NULL; - -error: - libusb_close(autoconfig_libusb_handle); - libusb_exit(NULL); -#endif - - return NULL; -} -#endif - -static const blissbox_pad_type_t* input_autoconfigure_get_blissbox_pad_type(int vid, int pid) -{ -#if defined(_WIN32) -#if defined(_MSC_VER) || defined(_XBOX) - /* no MSVC/XBOX support */ - return NULL; -#else - /* MinGW */ - return input_autoconfigure_get_blissbox_pad_type_win32(vid, pid); -#endif -#else - return input_autoconfigure_get_blissbox_pad_type_libusb(vid, pid); -#endif -} - -static void input_autoconfigure_override_handler(autoconfig_params_t *params) -{ - if (params->vid == BLISSBOX_VID) - { - if (params->pid == BLISSBOX_UPDATE_MODE_PID) - RARCH_LOG("[Autoconf]: Bliss-Box in update mode detected. Ignoring.\n"); - else if (params->pid == BLISSBOX_OLD_PID) - RARCH_LOG("[Autoconf]: Bliss-Box 1.0 firmware detected. Please update to 2.0 or later.\n"); - else if (params->pid >= BLISSBOX_PID && params->pid <= BLISSBOX_PID + BLISSBOX_MAX_PAD_INDEX) - { - const blissbox_pad_type_t *pad; - char name[255] = {0}; - int index = params->pid - BLISSBOX_PID; - - RARCH_LOG("[Autoconf]: Bliss-Box detected. Getting pad type...\n"); - - if (blissbox_pads[index]) - pad = blissbox_pads[index]; - else - pad = input_autoconfigure_get_blissbox_pad_type(params->vid, params->pid); - - if (pad && !string_is_empty(pad->name)) - { - RARCH_LOG("[Autoconf]: Found Bliss-Box pad type: %s (%d) in port#%d\n", pad->name, pad->index, index); - - if (params->name) - free(params->name); - - /* override name given to autoconfig so it knows what kind of pad this is */ - strlcat(name, "Bliss-Box 4-Play ", sizeof(name)); - strlcat(name, pad->name, sizeof(name)); - - params->name = strdup(name); - - blissbox_pads[index] = pad; - } - /* use NULL entry to mark as an unconnected port */ - else - blissbox_pads[index] = &blissbox_pad_types[ARRAY_SIZE(blissbox_pad_types) - 1]; - } - } -} - static void input_autoconfigure_connect_handler(retro_task_t *task) { autoconfig_params_t *params = (autoconfig_params_t*)task->state; @@ -999,7 +528,8 @@ void input_autoconfigure_connect( state->max_users = *( input_driver_get_uint(INPUT_ACTION_MAX_USERS)); - input_autoconfigure_override_handler(state); + if (state->vid == BLISSBOX_VID) + input_autoconfigure_override_handler(state); if (!string_is_empty(state->name)) input_config_set_device_name(state->idx, state->name); diff --git a/tasks/task_autodetect_blissbox.c b/tasks/task_autodetect_blissbox.c new file mode 100644 index 0000000000..c4a6b0ae51 --- /dev/null +++ b/tasks/task_autodetect_blissbox.c @@ -0,0 +1,551 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2016-2019 - Brad Parker + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include + +#include +#include +#include + +#include "../verbosity.h" +#include "../retroarch.h" + +#include "tasks_internal.h" + +#ifdef HAVE_LIBUSB +#ifdef __FreeBSD__ +#include +#else +#include +#endif +#endif + +#if defined(_WIN32) && !defined(_XBOX) && !defined(_MSC_VER) && _WIN32_WINNT >= 0x0500 +/* MinGW Win32 HID API */ +#include +#include +#include +#ifdef __NO_INLINE__ +/* Workaround MinGW issue where compiling without -O2 (which sets __NO_INLINE__) causes the strsafe functions + * to never be defined (only declared). + */ +#define __CRT_STRSAFE_IMPL +#endif +#include +#include +#include +#include +#include +#ifdef __cplusplus +extern "C" { +#endif +#include +#ifdef __cplusplus +} +#endif + +/* Why doesn't including cguid.h work to get a GUID_NULL instead? */ +#ifdef __cplusplus +EXTERN_C __attribute__((weak)) +const GUID GUID_NULL = {0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0}}; +#else +__attribute__((weak)) +const GUID GUID_NULL = {0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0}}; +#endif +#endif + +#include "../input/include/blissbox.h" + +/* HID Class-Specific Requests values. See section 7.2 of the HID specifications */ +#define USB_HID_GET_REPORT 0x01 +#define USB_CTRL_IN LIBUSB_ENDPOINT_IN|LIBUSB_REQUEST_TYPE_CLASS|LIBUSB_RECIPIENT_INTERFACE +#define USB_PACKET_CTRL_LEN 5 +#define USB_TIMEOUT 5000 /* timeout in ms */ + +const blissbox_pad_type_t blissbox_pad_types[] = +{ + {"A5200", 6}, + {"A5200_TB", 50}, + {"A7800", 4}, + {"ATARI", 0}, + {"ATARI_KEYPAD", 43}, + {"ATMARK", 10}, + {"BALLY", 42}, + {"CD32", 24}, + {"CDI", 33}, + {"COL", 1}, + {"COL_FLASHBACK", 48}, /* 3.0 */ + {"DC_ASCI", 15}, + {"DC_PAD", 16}, + {"DC_TWIN", 35}, /* 3.0 */ + {"FC_ARKANOID", 53}, + {"FC_NES", 52}, + {"GC", 9}, + {"GC_WHEEL", 18}, + {"GEN_3", 20}, + {"GEN_6", 21}, + {"GRAVIS_EX", 38}, + {"HAMMERHEAD", 40}, + {"HPD", 7}, + {"INTELI", 14}, + {"JAG", 11}, + {"MSSW", 39}, + {"N64", 19}, + {"NEO", 49}, + {"NES", 17}, + {"NES_ARKANOID", 30}, + {"NES_GUN", 28}, + {"NES_POWERPAD", 36}, + {"PADDLES", 41}, + {"PC_FX", 26}, + {"PC_GAMEPAD", 46}, + {"PSX_DIGITAL", 65}, + {"PSX_DS", 115}, + {"PSX_DS2", 121}, + {"PSX_FS", 83}, + {"PSX_JOGCON", 227}, /* 3.0 */ + {"PSX_NEGCON", 51}, + {"PSX_WHEEL", 12}, + {"SAC", 34}, + {"SATURN_ANALOG", 8}, + {"SATURN_DIGITAL", 3}, + {"SMS", 22}, + {"SNES", 27}, + {"SNESS_NTT", 47}, /* 3.0 */ + {"SPEEK", 45}, + {"TG16", 23}, + {"TG16_6BUTTON", 54}, /* 3.0 */ + {"THREE_DO", 25}, + {"THREE_DO_ANALOG", 37}, + {"VEC", 5}, + {"V_BOY", 29}, + {"WII_CLASSIC", 31}, + {"WII_DRUM", 55}, /* 3.0 */ + {"WII_MPLUS", 32}, + {"WII_NUNCHUK", 13}, + {"ZXSINC", 44}, + {"gx4000", 2}, + {NULL, 0}, /* used to mark unconnected ports, do not remove */ +}; + + +/* only one blissbox per machine is currently supported */ +static const blissbox_pad_type_t *blissbox_pads[BLISSBOX_MAX_PADS] = {NULL}; + +#ifdef HAVE_LIBUSB +static struct libusb_device_handle *autoconfig_libusb_handle = NULL; +#endif + +#ifdef _WIN32 +static const blissbox_pad_type_t* input_autoconfigure_get_blissbox_pad_type_win32(int vid, int pid) +{ + /* TODO: Remove the check for !defined(_MSC_VER) after making sure this builds on MSVC */ + + /* HID API is available since Windows 2000 */ +#if defined(_WIN32) && !defined(_XBOX) && !defined(_MSC_VER) && _WIN32_WINNT >= 0x0500 + HDEVINFO hDeviceInfo; + SP_DEVINFO_DATA DeviceInfoData; + SP_DEVICE_INTERFACE_DATA deviceInterfaceData; + HANDLE hDeviceHandle = INVALID_HANDLE_VALUE; + BOOL bResult = TRUE; + BOOL success = FALSE; + GUID guidDeviceInterface = {0}; + PSP_DEVICE_INTERFACE_DETAIL_DATA + pInterfaceDetailData = NULL; + ULONG requiredLength = 0; + LPTSTR lpDevicePath = NULL; + char *devicePath = NULL; + DWORD index = 0; + DWORD intIndex = 0; + size_t nLength = 0; + unsigned len = 0; + unsigned i = 0; + char vidPidString[32] = {0}; + char vidString[5] = {0}; + char pidString[5] = {0}; + char report[USB_PACKET_CTRL_LEN + 1] = {0}; + + snprintf(vidString, sizeof(vidString), "%04x", vid); + snprintf(pidString, sizeof(pidString), "%04x", pid); + + strlcat(vidPidString, "vid_", sizeof(vidPidString)); + strlcat(vidPidString, vidString, sizeof(vidPidString)); + strlcat(vidPidString, "&pid_", sizeof(vidPidString)); + strlcat(vidPidString, pidString, sizeof(vidPidString)); + + HidD_GetHidGuid(&guidDeviceInterface); + + if (!memcmp(&guidDeviceInterface, &GUID_NULL, sizeof(GUID_NULL))) + { + RARCH_ERR("[Autoconf]: null guid\n"); + return NULL; + } + + /* Get information about all the installed devices for the specified + * device interface class. + */ + hDeviceInfo = SetupDiGetClassDevs( + &guidDeviceInterface, + NULL, + NULL, + DIGCF_PRESENT | DIGCF_DEVICEINTERFACE); + + if (hDeviceInfo == INVALID_HANDLE_VALUE) + { + RARCH_ERR("[Autoconf]: Error in SetupDiGetClassDevs: %d.\n", + GetLastError()); + goto done; + } + + /* Enumerate all the device interfaces in the device information set. */ + DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA); + + while (!success) + { + success = SetupDiEnumDeviceInfo(hDeviceInfo, index, &DeviceInfoData); + + /* Reset for this iteration */ + if (lpDevicePath) + { + LocalFree(lpDevicePath); + lpDevicePath = NULL; + } + + if (pInterfaceDetailData) + { + LocalFree(pInterfaceDetailData); + pInterfaceDetailData = NULL; + } + + /* Check if this is the last item */ + if (GetLastError() == ERROR_NO_MORE_ITEMS) + break; + + deviceInterfaceData.cbSize = sizeof(SP_INTERFACE_DEVICE_DATA); + + /* Get information about the device interface. */ + for (intIndex = 0; (bResult = SetupDiEnumDeviceInterfaces( + hDeviceInfo, + &DeviceInfoData, + &guidDeviceInterface, + intIndex, + &deviceInterfaceData)); intIndex++) + { + /* Check if this is the last item */ + if (GetLastError() == ERROR_NO_MORE_ITEMS) + break; + + /* Check for some other error */ + if (!bResult) + { + RARCH_ERR("[Autoconf]: Error in SetupDiEnumDeviceInterfaces: %d.\n", GetLastError()); + goto done; + } + + /* Interface data is returned in SP_DEVICE_INTERFACE_DETAIL_DATA + * which we need to allocate, so we have to call this function twice. + * First to get the size so that we know how much to allocate, and + * second to do the actual call with the allocated buffer. + */ + + bResult = SetupDiGetDeviceInterfaceDetail( + hDeviceInfo, + &deviceInterfaceData, + NULL, 0, + &requiredLength, + NULL); + + /* Check for some other error */ + if (!bResult) + { + if ((ERROR_INSUFFICIENT_BUFFER == GetLastError()) && (requiredLength > 0)) + { + /* we got the size, now allocate buffer */ + pInterfaceDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)LocalAlloc(LPTR, requiredLength); + + if (!pInterfaceDetailData) + { + RARCH_ERR("[Autoconf]: Error allocating memory for the device detail buffer.\n"); + goto done; + } + } + else + { + RARCH_ERR("[Autoconf]: Other error: %d.\n", GetLastError()); + goto done; + } + } + + /* get the interface detailed data */ + pInterfaceDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA); + + /* Now call it with the correct size and allocated buffer */ + bResult = SetupDiGetDeviceInterfaceDetail( + hDeviceInfo, + &deviceInterfaceData, + pInterfaceDetailData, + requiredLength, + NULL, + &DeviceInfoData); + + /* Check for some other error */ + if (!bResult) + { + RARCH_LOG("[Autoconf]: Error in SetupDiGetDeviceInterfaceDetail: %d.\n", GetLastError()); + goto done; + } + + /* copy device path */ + nLength = _tcslen(pInterfaceDetailData->DevicePath) + 1; + lpDevicePath = (TCHAR*)LocalAlloc(LPTR, nLength * sizeof(TCHAR)); + + StringCchCopy(lpDevicePath, nLength, pInterfaceDetailData->DevicePath); + + devicePath = (char*)malloc(nLength); + + for (len = 0; len < nLength; len++) + devicePath[len] = lpDevicePath[len]; + + lpDevicePath[nLength - 1] = 0; + + if (strstr(devicePath, vidPidString)) + goto found; + } + + success = FALSE; + index++; + } + + if (!lpDevicePath) + { + RARCH_ERR("[Autoconf]: No devicepath. Error %d.", GetLastError()); + goto done; + } + +found: + /* Open the device */ + hDeviceHandle = CreateFileA( + devicePath, + GENERIC_READ, /* | GENERIC_WRITE,*/ + FILE_SHARE_READ, /* | FILE_SHARE_WRITE,*/ + NULL, + OPEN_EXISTING, + 0, /*FILE_FLAG_OVERLAPPED,*/ + NULL); + + if (hDeviceHandle == INVALID_HANDLE_VALUE) + { + /* Windows sometimes erroneously fails to open with a sharing violation: + * https://github.com/signal11/hidapi/issues/231 + * If this happens, trying again with read + write usually works for some reason. + */ + + /* Open the device */ + hDeviceHandle = CreateFileA( + devicePath, + GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + 0, /*FILE_FLAG_OVERLAPPED,*/ + NULL); + + if (hDeviceHandle == INVALID_HANDLE_VALUE) + { + RARCH_ERR("[Autoconf]: Can't open device for reading and writing: %d.", GetLastError()); + runloop_msg_queue_push("Bliss-Box already in use. Please make sure other programs are not using it.", 2, 300, false, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + goto done; + } + } + +done: + free(devicePath); + LocalFree(lpDevicePath); + LocalFree(pInterfaceDetailData); + bResult = SetupDiDestroyDeviceInfoList(hDeviceInfo); + + devicePath = NULL; + lpDevicePath = NULL; + pInterfaceDetailData = NULL; + + if (!bResult) + RARCH_ERR("[Autoconf]: Could not destroy device info list.\n"); + + if (!hDeviceHandle || hDeviceHandle == INVALID_HANDLE_VALUE) + { + /* device is not connected */ + return NULL; + } + + report[0] = BLISSBOX_USB_FEATURE_REPORT_ID; + + HidD_GetFeature(hDeviceHandle, report, sizeof(report)); + + CloseHandle(hDeviceHandle); + + for (i = 0; i < sizeof(blissbox_pad_types) / sizeof(blissbox_pad_types[0]); i++) + { + const blissbox_pad_type_t *pad = &blissbox_pad_types[i]; + + if (!pad || string_is_empty(pad->name)) + continue; + + if (pad->index == report[0]) + return pad; + } + + RARCH_LOG("[Autoconf]: Could not find connected pad in Bliss-Box port#%d.\n", pid - BLISSBOX_PID); +#endif + + return NULL; +} +#else +static const blissbox_pad_type_t* input_autoconfigure_get_blissbox_pad_type_libusb(int vid, int pid) +{ +#ifdef HAVE_LIBUSB + unsigned i; + unsigned char answer[USB_PACKET_CTRL_LEN] = {0}; + int ret = libusb_init(NULL); + + if (ret < 0) + { + RARCH_ERR("[Autoconf]: Could not initialize libusb.\n"); + return NULL; + } + + autoconfig_libusb_handle = libusb_open_device_with_vid_pid(NULL, vid, pid); + + if (!autoconfig_libusb_handle) + { + RARCH_ERR("[Autoconf]: Could not find or open libusb device %d:%d.\n", vid, pid); + goto error; + } + +#ifdef __linux__ + libusb_detach_kernel_driver(autoconfig_libusb_handle, 0); +#endif + + ret = libusb_set_configuration(autoconfig_libusb_handle, 1); + + if (ret < 0) + { + RARCH_ERR("[Autoconf]: Error during libusb_set_configuration.\n"); + goto error; + } + + ret = libusb_claim_interface(autoconfig_libusb_handle, 0); + + if (ret < 0) + { + RARCH_ERR("[Autoconf]: Error during libusb_claim_interface.\n"); + goto error; + } + + ret = libusb_control_transfer(autoconfig_libusb_handle, USB_CTRL_IN, USB_HID_GET_REPORT, BLISSBOX_USB_FEATURE_REPORT_ID, 0, answer, USB_PACKET_CTRL_LEN, USB_TIMEOUT); + + if (ret < 0) + RARCH_ERR("[Autoconf]: Error during libusb_control_transfer.\n"); + + libusb_release_interface(autoconfig_libusb_handle, 0); + +#ifdef __linux__ + libusb_attach_kernel_driver(autoconfig_libusb_handle, 0); +#endif + + libusb_close(autoconfig_libusb_handle); + libusb_exit(NULL); + + for (i = 0; i < sizeof(blissbox_pad_types) / sizeof(blissbox_pad_types[0]); i++) + { + const blissbox_pad_type_t *pad = &blissbox_pad_types[i]; + + if (!pad || string_is_empty(pad->name)) + continue; + + if (pad->index == answer[0]) + return pad; + } + + RARCH_LOG("[Autoconf]: Could not find connected pad in Bliss-Box port#%d.\n", pid - BLISSBOX_PID); + + return NULL; + +error: + libusb_close(autoconfig_libusb_handle); + libusb_exit(NULL); +#endif + + return NULL; +} +#endif + +static const blissbox_pad_type_t* input_autoconfigure_get_blissbox_pad_type(int vid, int pid) +{ +#if defined(_WIN32) +#if defined(_MSC_VER) || defined(_XBOX) + /* no MSVC/XBOX support */ + return NULL; +#else + /* MinGW */ + return input_autoconfigure_get_blissbox_pad_type_win32(vid, pid); +#endif +#else + return input_autoconfigure_get_blissbox_pad_type_libusb(vid, pid); +#endif +} + +void input_autoconfigure_override_handler(void *data) +{ + autoconfig_params_t *params = (autoconfig_params_t*)data; + + if (params->pid == BLISSBOX_UPDATE_MODE_PID) + RARCH_LOG("[Autoconf]: Bliss-Box in update mode detected. Ignoring.\n"); + else if (params->pid == BLISSBOX_OLD_PID) + RARCH_LOG("[Autoconf]: Bliss-Box 1.0 firmware detected. Please update to 2.0 or later.\n"); + else if (params->pid >= BLISSBOX_PID && params->pid <= BLISSBOX_PID + BLISSBOX_MAX_PAD_INDEX) + { + const blissbox_pad_type_t *pad; + char name[255] = {0}; + int index = params->pid - BLISSBOX_PID; + + RARCH_LOG("[Autoconf]: Bliss-Box detected. Getting pad type...\n"); + + if (blissbox_pads[index]) + pad = blissbox_pads[index]; + else + pad = input_autoconfigure_get_blissbox_pad_type(params->vid, params->pid); + + if (pad && !string_is_empty(pad->name)) + { + RARCH_LOG("[Autoconf]: Found Bliss-Box pad type: %s (%d) in port#%d\n", pad->name, pad->index, index); + + if (params->name) + free(params->name); + + /* override name given to autoconfig so it knows what kind of pad this is */ + strlcat(name, "Bliss-Box 4-Play ", sizeof(name)); + strlcat(name, pad->name, sizeof(name)); + + params->name = strdup(name); + + blissbox_pads[index] = pad; + } + /* use NULL entry to mark as an unconnected port */ + else + blissbox_pads[index] = &blissbox_pad_types[ARRAY_SIZE(blissbox_pad_types) - 1]; + } +} diff --git a/tasks/tasks_internal.h b/tasks/tasks_internal.h index 6e10f8a455..c92e927952 100644 --- a/tasks/tasks_internal.h +++ b/tasks/tasks_internal.h @@ -46,6 +46,19 @@ typedef struct nbio_buf char *path; } nbio_buf_t; +typedef struct autoconfig_params autoconfig_params_t; + +struct autoconfig_params +{ + int32_t vid; + int32_t pid; + unsigned idx; + uint32_t max_users; + char *name; + char *autoconfig_directory; +}; + + #ifdef HAVE_NETWORKING typedef struct { @@ -159,6 +172,8 @@ unsigned input_autoconfigure_get_device_name_index(unsigned i); void input_autoconfigure_reset(void); +void input_autoconfigure_override_handler(void *data); + void input_autoconfigure_connect( const char *name, const char *display_name, From 72a6e71e7212d8cc74f02155e5f11492a61f8e7c Mon Sep 17 00:00:00 2001 From: Yoshi Sugawara Date: Sat, 18 Jan 2020 20:01:41 -1000 Subject: [PATCH 112/148] tvOS: fix preprocessor flag; update version in Info.plist --- audio/drivers/coreaudio.c | 2 +- .../RetroArch_iOS11.xcodeproj/project.pbxproj | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/audio/drivers/coreaudio.c b/audio/drivers/coreaudio.c index e148f4b0ff..6109ee9822 100644 --- a/audio/drivers/coreaudio.c +++ b/audio/drivers/coreaudio.c @@ -371,7 +371,7 @@ static ssize_t coreaudio_write(void *data, const void *buf_, size_t size) break; } -#if TARGET_OS_IPHONE +#if TARGET_OS_IOS if (write_avail == 0 && !scond_wait_timeout( dev->cond, dev->lock, 3000000)) g_interrupted = true; diff --git a/pkg/apple/RetroArch_iOS11.xcodeproj/project.pbxproj b/pkg/apple/RetroArch_iOS11.xcodeproj/project.pbxproj index 957bcdec67..d06df10e7b 100644 --- a/pkg/apple/RetroArch_iOS11.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch_iOS11.xcodeproj/project.pbxproj @@ -614,7 +614,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_RESOURCE_RULES_PATH = "$(SDKROOT)/ResourceRules.plist"; - CURRENT_PROJECT_VERSION = 1.8.1; + CURRENT_PROJECT_VERSION = 1.8.4; DEVELOPMENT_TEAM = BJ7B9HU3GU; ENABLE_BITCODE = NO; GCC_PRECOMPILE_PREFIX_HEADER = NO; @@ -631,7 +631,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_NO_PIE = YES; LIBRARY_SEARCH_PATHS = ""; - MARKETING_VERSION = 1.8.1; + MARKETING_VERSION = 1.8.4; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "-DDONT_WANT_ARM_OPTIMIZATIONS", @@ -708,7 +708,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_RESOURCE_RULES_PATH = "$(SDKROOT)/ResourceRules.plist"; - CURRENT_PROJECT_VERSION = 1.8.1; + CURRENT_PROJECT_VERSION = 1.8.4; DEVELOPMENT_TEAM = BJ7B9HU3GU; ENABLE_BITCODE = NO; GCC_PRECOMPILE_PREFIX_HEADER = NO; @@ -725,7 +725,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_NO_PIE = YES; LIBRARY_SEARCH_PATHS = ""; - MARKETING_VERSION = 1.8.1; + MARKETING_VERSION = 1.8.4; "OTHER_CFLAGS[arch=*]" = ( "-DNS_BLOCK_ASSERTIONS=1", "-DNDEBUG", @@ -826,7 +826,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1.8.1; + CURRENT_PROJECT_VERSION = 1.8.4; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = BJ7B9HU3GU; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -848,7 +848,7 @@ ); INFOPLIST_FILE = "$(SRCROOT)/tvOS/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 1.8.1; + MARKETING_VERSION = 1.8.4; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -948,7 +948,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1.8.1; + CURRENT_PROJECT_VERSION = 1.8.4; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = BJ7B9HU3GU; ENABLE_NS_ASSERTIONS = NO; @@ -970,7 +970,7 @@ ); INFOPLIST_FILE = "$(SRCROOT)/tvOS/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 1.8.1; + MARKETING_VERSION = 1.8.4; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( From bfc46120bb46f902454f3b1f0d5b312b22563d66 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 19 Jan 2020 07:36:38 +0100 Subject: [PATCH 113/148] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index acf4f00336..5c292cca10 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,7 @@ - CHEEVOS: Support for extended Sega CD memory - EMSCRIPTEN: Recreate input event listeners properly - LIBRETRO: Add disk control interface API extension +- LOCALIZATION: Update Polish translation # 1.8.4 - ANDROID/BUGFIX: Prevent crash when Android device is minimized and you go back to the app From 61c6dc5a7089cfa0fd60cee3c8c0c8e0a485416e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 19 Jan 2020 07:49:27 +0100 Subject: [PATCH 114/148] (msg_hash_pl.h) Buildfix --- intl/msg_hash_pl.h | 1 + 1 file changed, 1 insertion(+) diff --git a/intl/msg_hash_pl.h b/intl/msg_hash_pl.h index db3ea21309..977eda481b 100644 --- a/intl/msg_hash_pl.h +++ b/intl/msg_hash_pl.h @@ -4800,6 +4800,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_MENU_TICKER_SMOOTH,/* FIXME */ "Użyj płynnej animacji przewijania podczas wyświetlania długich ciągów tekstowych menu. Ma niewielki wpływ na wydajność." ) +MSG_HASH( MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_LIST, "Skanowanie ręczne" ) From 826b2245ecd6e1764fc505a2a866c0e94f95ca7d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 19 Jan 2020 12:17:26 +0100 Subject: [PATCH 115/148] WndProcCommon - small optimization --- gfx/common/win32_common.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gfx/common/win32_common.c b/gfx/common/win32_common.c index 9bb809ad75..370f2fd73d 100644 --- a/gfx/common/win32_common.c +++ b/gfx/common/win32_common.c @@ -841,6 +841,8 @@ static LRESULT win32_menu_loop(HWND owner, WPARAM wparam) static LRESULT CALLBACK WndProcCommon(bool *quit, HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { + bool keydown = true; + switch (message) { case WM_NCLBUTTONDBLCLK: @@ -887,13 +889,15 @@ static LRESULT CALLBACK WndProcCommon(bool *quit, HWND hwnd, UINT message, return TRUE; case WM_KEYUP: case WM_SYSKEYUP: + /* Key released */ + keydown = false; + /* fall-through */ case WM_KEYDOWN: case WM_SYSKEYDOWN: *quit = true; { uint16_t mod = 0; unsigned keycode = 0; - bool keydown = true; unsigned keysym = (lparam >> 16) & 0xff; #if _WIN32_WINNT >= 0x0501 /* XP */ settings_t *settings = config_get_ptr(); @@ -928,10 +932,6 @@ static LRESULT CALLBACK WndProcCommon(bool *quit, HWND hwnd, UINT message, #endif } - /* Key released? */ - if (message == WM_KEYUP || message == WM_SYSKEYUP) - keydown = false; - keycode = input_keymaps_translate_keysym_to_rk(keysym); input_keyboard_event(keydown, keycode, From 8a989b65ee47cd4d4723df90c6a16605cac6a291 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 19 Jan 2020 13:19:25 +0100 Subject: [PATCH 116/148] Cleanup --- gfx/common/win32_common.c | 71 ++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 38 deletions(-) diff --git a/gfx/common/win32_common.c b/gfx/common/win32_common.c index 370f2fd73d..22b8593233 100644 --- a/gfx/common/win32_common.c +++ b/gfx/common/win32_common.c @@ -682,7 +682,6 @@ static bool win32_browser( static LRESULT win32_menu_loop(HWND owner, WPARAM wparam) { WPARAM mode = wparam & 0xffff; - enum event_command cmd = CMD_EVENT_NONE; switch (mode) { @@ -722,7 +721,7 @@ static LRESULT win32_menu_loop(HWND owner, WPARAM wparam) if (title_cp) free(title_cp); path_set(RARCH_PATH_CORE, win32_file); - cmd = CMD_EVENT_LOAD_CORE; + command_event(CMD_EVENT_LOAD_CORE, NULL); } break; case ID_M_LOAD_CONTENT: @@ -765,76 +764,72 @@ static LRESULT win32_menu_loop(HWND owner, WPARAM wparam) } break; case ID_M_RESET: - cmd = CMD_EVENT_RESET; + command_event(CMD_EVENT_RESET, NULL); break; case ID_M_MUTE_TOGGLE: - cmd = CMD_EVENT_AUDIO_MUTE_TOGGLE; + command_event(CMD_EVENT_AUDIO_MUTE_TOGGLE, NULL); break; case ID_M_MENU_TOGGLE: - cmd = CMD_EVENT_MENU_TOGGLE; + command_event(CMD_EVENT_MENU_TOGGLE, NULL); break; case ID_M_PAUSE_TOGGLE: - cmd = CMD_EVENT_PAUSE_TOGGLE; + command_event(CMD_EVENT_PAUSE_TOGGLE, NULL); break; case ID_M_LOAD_STATE: - cmd = CMD_EVENT_LOAD_STATE; + command_event(CMD_EVENT_LOAD_STATE, NULL); break; case ID_M_SAVE_STATE: - cmd = CMD_EVENT_SAVE_STATE; + command_event(CMD_EVENT_SAVE_STATE, NULL); break; case ID_M_DISK_CYCLE: - cmd = CMD_EVENT_DISK_EJECT_TOGGLE; + command_event(CMD_EVENT_DISK_EJECT_TOGGLE, NULL); break; case ID_M_DISK_NEXT: - cmd = CMD_EVENT_DISK_NEXT; + command_event(CMD_EVENT_DISK_NEXT, NULL); break; case ID_M_DISK_PREV: - cmd = CMD_EVENT_DISK_PREV; + command_event(CMD_EVENT_DISK_PREV, NULL); break; case ID_M_FULL_SCREEN: - cmd = CMD_EVENT_FULLSCREEN_TOGGLE; + command_event(CMD_EVENT_FULLSCREEN_TOGGLE, NULL); break; case ID_M_MOUSE_GRAB: - cmd = CMD_EVENT_GRAB_MOUSE_TOGGLE; + command_event(CMD_EVENT_GRAB_MOUSE_TOGGLE, NULL); break; case ID_M_TAKE_SCREENSHOT: - cmd = CMD_EVENT_TAKE_SCREENSHOT; + command_event(CMD_EVENT_TAKE_SCREENSHOT, NULL); break; case ID_M_QUIT: PostMessage(owner, WM_CLOSE, 0, 0); break; case ID_M_TOGGLE_DESKTOP: - cmd = CMD_EVENT_UI_COMPANION_TOGGLE; + command_event(CMD_EVENT_UI_COMPANION_TOGGLE, NULL); break; default: + if (mode >= ID_M_WINDOW_SCALE_1X && mode <= ID_M_WINDOW_SCALE_10X) { - settings_t *settings = config_get_ptr(); - if (mode >= ID_M_WINDOW_SCALE_1X && mode <= ID_M_WINDOW_SCALE_10X) - { - unsigned idx = (mode - (ID_M_WINDOW_SCALE_1X-1)); - rarch_ctl(RARCH_CTL_SET_WINDOWED_SCALE, &idx); - cmd = CMD_EVENT_RESIZE_WINDOWED_SCALE; - } - else if (mode == ID_M_STATE_INDEX_AUTO) - { - signed idx = -1; - configuration_set_int( - settings, settings->ints.state_slot, idx); - } - else if (mode >= (ID_M_STATE_INDEX_AUTO+1) - && mode <= (ID_M_STATE_INDEX_AUTO+10)) - { - signed idx = (mode - (ID_M_STATE_INDEX_AUTO+1)); - configuration_set_int( - settings, settings->ints.state_slot, idx); - } + unsigned idx = (mode - (ID_M_WINDOW_SCALE_1X-1)); + rarch_ctl(RARCH_CTL_SET_WINDOWED_SCALE, &idx); + command_event(CMD_EVENT_RESIZE_WINDOWED_SCALE, NULL); + } + else if (mode == ID_M_STATE_INDEX_AUTO) + { + signed idx = -1; + settings_t *settings = config_get_ptr(); + configuration_set_int( + settings, settings->ints.state_slot, idx); + } + else if (mode >= (ID_M_STATE_INDEX_AUTO+1) + && mode <= (ID_M_STATE_INDEX_AUTO+10)) + { + signed idx = (mode - (ID_M_STATE_INDEX_AUTO+1)); + settings_t *settings = config_get_ptr(); + configuration_set_int( + settings, settings->ints.state_slot, idx); } break; } - if (cmd != CMD_EVENT_NONE) - command_event(cmd, NULL); - return 0L; } From 481f31fe8f2e939c3639825560e3f94819fb3a57 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 20 Jan 2020 04:31:32 +0100 Subject: [PATCH 117/148] Turn task_patch.c into separately compiled file --- Makefile.common | 1 + griffin/griffin.c | 1 + tasks/task_content.c | 2 -- tasks/task_patch.c | 2 +- tasks/tasks_internal.h | 10 ++++++++++ 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Makefile.common b/Makefile.common index 96217ee911..586aa37f34 100644 --- a/Makefile.common +++ b/Makefile.common @@ -170,6 +170,7 @@ OBJ += frontend/frontend_driver.o \ intl/msg_hash_us.o \ $(LIBRETRO_COMM_DIR)/queues/task_queue.o \ tasks/task_content.o \ + tasks/task_patch.o \ tasks/task_save.o \ tasks/task_file_transfer.o \ tasks/task_image.o \ diff --git a/griffin/griffin.c b/griffin/griffin.c index 91b9b2a5ee..40312bb175 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -1204,6 +1204,7 @@ DATA RUNLOOP ============================================================ */ #include "../tasks/task_powerstate.c" #include "../tasks/task_content.c" +#include "../tasks/task_patch.c" #include "../tasks/task_save.c" #include "../tasks/task_image.c" #include "../tasks/task_file_transfer.c" diff --git a/tasks/task_content.c b/tasks/task_content.c index 074e7d8fbe..76e21455b5 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -109,8 +109,6 @@ #include "../discord/discord.h" -#include "task_patch.c" - extern bool discord_is_inited; #define MAX_ARGS 32 diff --git a/tasks/task_patch.c b/tasks/task_patch.c index bb1b79db63..1fc8f210e5 100644 --- a/tasks/task_patch.c +++ b/tasks/task_patch.c @@ -722,7 +722,7 @@ static bool try_ips_patch(bool allow_ips, * Apply patch to the content file in-memory. * **/ -static bool patch_content( +bool patch_content( bool is_ips_pref, bool is_bps_pref, bool is_ups_pref, diff --git a/tasks/tasks_internal.h b/tasks/tasks_internal.h index c92e927952..44f4ea15ca 100644 --- a/tasks/tasks_internal.h +++ b/tasks/tasks_internal.h @@ -136,6 +136,16 @@ bool task_push_overlay_load_default( void *user_data); #endif +bool patch_content( + bool is_ips_pref, + bool is_bps_pref, + bool is_ups_pref, + const char *name_ips, + const char *name_bps, + const char *name_ups, + uint8_t **buf, + void *data); + bool task_check_decompress(const char *source_file); void *task_push_decompress( From 60faeffde0ead8bebeef05056e559c62268e6026 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 20 Jan 2020 04:44:45 +0100 Subject: [PATCH 118/148] (task_patch.c) Cleanups --- tasks/task_patch.c | 200 ++++++++++++++++++++++----------------------- 1 file changed, 100 insertions(+), 100 deletions(-) diff --git a/tasks/task_patch.c b/tasks/task_patch.c index 1fc8f210e5..add06fbf88 100644 --- a/tasks/task_patch.c +++ b/tasks/task_patch.c @@ -133,11 +133,11 @@ static enum patch_error bps_apply_patch( uint8_t **target_data, uint64_t *target_length) { size_t i; - uint32_t checksum; - size_t modify_source_size; - size_t modify_target_size; - size_t modify_markup_size; struct bps_data bps; + uint32_t checksum = 0; + size_t modify_source_size = 0; + size_t modify_target_size = 0; + size_t modify_markup_size = 0; uint32_t modify_source_checksum = 0; uint32_t modify_target_checksum = 0; uint32_t modify_modify_checksum = 0; @@ -176,15 +176,18 @@ static enum patch_error bps_apply_patch( if (modify_source_size > bps.source_length) return PATCH_SOURCE_TOO_SMALL; - if (modify_target_size > bps.target_length){ + + if (modify_target_size > bps.target_length) + { uint8_t *prov=(uint8_t*)malloc((size_t)modify_target_size); - if (prov!=NULL){ - free(*target_data); - bps.target_data=prov; - *target_data=prov; - bps.target_length=modify_target_size; - }else + + if (!prov) return PATCH_TARGET_ALLOC_FAILED; + + free(*target_data); + bps.target_data = prov; + *target_data = prov; + bps.target_length = modify_target_size; } while (bps.modify_offset < bps.modify_length - 12) @@ -364,14 +367,14 @@ static enum patch_error ups_apply_patch( *targetlength = (data.source_length == source_read_length ? target_read_length : source_read_length); - if (data.target_length < *targetlength){ + if (data.target_length < *targetlength) + { uint8_t *prov=(uint8_t*)malloc((size_t)*targetlength); - if(prov!=NULL){ - free(*targetdata); - *targetdata=prov; - data.target_data=prov; - }else + if (!prov) return PATCH_TARGET_ALLOC_FAILED; + free(*targetdata); + *targetdata = prov; + data.target_data = prov; } data.target_length = (unsigned)*targetlength; @@ -410,19 +413,19 @@ static enum patch_error ups_apply_patch( if (patch_result_checksum != patch_read_checksum) return PATCH_PATCH_INVALID; - if (data.source_checksum == source_read_checksum - && data.source_length == source_read_length) + if ( data.source_checksum == source_read_checksum + && data.source_length == source_read_length) { - if (data.target_checksum == target_read_checksum - && data.target_length == target_read_length) + if ( data.target_checksum == target_read_checksum + && data.target_length == target_read_length) return PATCH_SUCCESS; return PATCH_TARGET_INVALID; } else if (data.source_checksum == target_read_checksum - && data.source_length == target_read_length) + && data.source_length == target_read_length) { - if (data.target_checksum == source_read_checksum - && data.target_length == source_read_length) + if ( data.target_checksum == source_read_checksum + && data.target_length == source_read_length) return PATCH_SUCCESS; return PATCH_TARGET_INVALID; } @@ -437,7 +440,7 @@ static enum patch_error ips_alloc_targetdata( { uint8_t *prov_alloc; uint32_t offset = 5; - *targetlength = sourcelength; + *targetlength = sourcelength; for (;;) { @@ -455,24 +458,25 @@ static enum patch_error ips_alloc_targetdata( { if (offset == patchlen) { - prov_alloc=(uint8_t*)malloc((size_t)*targetlength); + prov_alloc = (uint8_t*)malloc((size_t)*targetlength); if (!prov_alloc) return PATCH_TARGET_ALLOC_FAILED; free(*targetdata); - *targetdata=prov_alloc; + *targetdata = prov_alloc; return PATCH_SUCCESS; } else if (offset == patchlen - 3) { - uint32_t size = patchdata[offset++] << 16; - size |= patchdata[offset++] << 8; - size |= patchdata[offset++] << 0; - *targetlength = size; - prov_alloc=(uint8_t*)malloc((size_t)*targetlength); + uint32_t size = patchdata[offset++] << 16; + size |= patchdata[offset++] << 8; + size |= patchdata[offset++] << 0; + *targetlength = size; + prov_alloc = (uint8_t*)malloc((size_t)*targetlength); + if (!prov_alloc) return PATCH_TARGET_ALLOC_FAILED; free(*targetdata); - *targetdata=prov_alloc; + *targetdata = prov_alloc; return PATCH_SUCCESS; } } @@ -525,7 +529,7 @@ static enum patch_error ips_apply_patch( { uint32_t offset = 5; enum patch_error error_patch = PATCH_UNKNOWN; - if (patchlen < 8 || + if ( patchlen < 8 || patchdata[0] != 'P' || patchdata[1] != 'A' || patchdata[2] != 'T' || @@ -533,10 +537,9 @@ static enum patch_error ips_apply_patch( patchdata[4] != 'H') return PATCH_PATCH_INVALID; - error_patch = ips_alloc_targetdata( patchdata, patchlen, - sourcelength, targetdata, - targetlength); - if ( error_patch != PATCH_SUCCESS) + if ((error_patch = ips_alloc_targetdata( + patchdata, patchlen, sourcelength, + targetdata, targetlength)) != PATCH_SUCCESS) return error_patch; memcpy(*targetdata, sourcedata, (size_t)sourcelength); @@ -557,11 +560,12 @@ static enum patch_error ips_apply_patch( { if (offset == patchlen) return PATCH_SUCCESS; - else if (offset == patchlen - 3) + + if (offset == patchlen - 3) { - uint32_t size = patchdata[offset++] << 16; - size |= patchdata[offset++] << 8; - size |= patchdata[offset++] << 0; + uint32_t size = patchdata[offset++] << 16; + size |= patchdata[offset++] << 8; + size |= patchdata[offset++] << 0; return PATCH_SUCCESS; } } @@ -614,10 +618,8 @@ static bool apply_patch_content(uint8_t **buf, RARCH_LOG("Found %s file in \"%s\", attempting to patch ...\n", patch_desc, patch_path); - err = func((const uint8_t*)patch_data, patch_size, ret_buf, - ret_size, &patched_content, &target_size); - - if (err == PATCH_SUCCESS) + if ((err = func((const uint8_t*)patch_data, patch_size, ret_buf, + ret_size, &patched_content, &target_size)) == PATCH_SUCCESS) { free(ret_buf); *buf = patched_content; @@ -636,81 +638,79 @@ static bool apply_patch_content(uint8_t **buf, static bool try_bps_patch(bool allow_bps, const char *name_bps, uint8_t **buf, ssize_t *size) { - if (allow_bps && !string_is_empty(name_bps)) - if (path_is_valid(name_bps)) - { - int64_t patch_size; - bool ret = false; - void *patch_data = NULL; + if ( allow_bps + && !string_is_empty(name_bps) + && path_is_valid(name_bps) + ) + { + int64_t patch_size; + bool ret = false; + void *patch_data = NULL; - if (!filestream_read_file(name_bps, &patch_data, &patch_size)) - return false; + if (!filestream_read_file(name_bps, &patch_data, &patch_size)) + return false; - if (patch_size >= 0) - { - ret = apply_patch_content( - buf, size, "BPS", name_bps, - bps_apply_patch, patch_data, patch_size); - } + if (patch_size >= 0) + ret = apply_patch_content(buf, size, "BPS", name_bps, + bps_apply_patch, patch_data, patch_size); + + if (patch_data) + free(patch_data); + return ret; + } - if (patch_data) - free(patch_data); - return ret; - } return false; } static bool try_ups_patch(bool allow_ups, const char *name_ups, uint8_t **buf, ssize_t *size) { - if (allow_ups && !string_is_empty(name_ups)) - if (path_is_valid(name_ups)) - { - int64_t patch_size; - bool ret = false; - void *patch_data = NULL; + if ( allow_ups + && !string_is_empty(name_ups) + && path_is_valid(name_ups) + ) + { + int64_t patch_size; + bool ret = false; + void *patch_data = NULL; - if (!filestream_read_file(name_ups, &patch_data, &patch_size)) - return false; + if (!filestream_read_file(name_ups, &patch_data, &patch_size)) + return false; - if (patch_size >= 0) - { - ret = apply_patch_content( - buf, size, "UPS", name_ups, - ups_apply_patch, patch_data, patch_size); - } + if (patch_size >= 0) + ret = apply_patch_content(buf, size, "UPS", name_ups, + ups_apply_patch, patch_data, patch_size); - if (patch_data) - free(patch_data); - return ret; - } + if (patch_data) + free(patch_data); + return ret; + } return false; } static bool try_ips_patch(bool allow_ips, const char *name_ips, uint8_t **buf, ssize_t *size) { - if (allow_ips && !string_is_empty(name_ips)) - if (path_is_valid(name_ips)) - { - int64_t patch_size; - bool ret = false; - void *patch_data = NULL; + if ( allow_ips + && !string_is_empty(name_ips) + && path_is_valid(name_ips) + ) + { + int64_t patch_size; + bool ret = false; + void *patch_data = NULL; - if (!filestream_read_file(name_ips, &patch_data, &patch_size)) - return false; + if (!filestream_read_file(name_ips, &patch_data, &patch_size)) + return false; - if (patch_size >= 0) - { - ret = apply_patch_content( - buf, size, "IPS", name_ips, - ips_apply_patch, patch_data, patch_size); - } + if (patch_size >= 0) + ret = apply_patch_content(buf, size, "IPS", name_ips, + ips_apply_patch, patch_data, patch_size); - if (patch_data) - free(patch_data); - return ret; - } + if (patch_data) + free(patch_data); + return ret; + } return false; } From d4a1f2ef85d7b0cb5282e205a06ebcfaf33d9f39 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 20 Jan 2020 05:06:51 +0100 Subject: [PATCH 119/148] Cleanups --- tasks/task_content.c | 332 +++++++++++++++++++++---------------------- 1 file changed, 159 insertions(+), 173 deletions(-) diff --git a/tasks/task_content.c b/tasks/task_content.c index 76e21455b5..31e471ffb7 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -201,7 +201,10 @@ static char *pending_subsystem_roms[RARCH_MAX_SUBSYSTEM_ROMS]; #ifdef HAVE_CDROM static void task_cdrom_dump_handler(retro_task_t *task) { - task_cdrom_dump_state_t *state = (task_cdrom_dump_state_t*)task->state; + task_cdrom_dump_state_t *state = (task_cdrom_dump_state_t*)task->state; + settings_t *settings = config_get_ptr(); + const char *directory_core_assets = settings + ? settings->paths.directory_core_assets : NULL; if (task_get_progress(task) == 100) { @@ -226,186 +229,180 @@ static void task_cdrom_dump_handler(retro_task_t *task) switch (state->state) { case DUMP_STATE_TOC_PENDING: - { - /* open cuesheet file from drive */ - char cue_path[PATH_MAX_LENGTH] = {0}; - - cdrom_device_fillpath(cue_path, sizeof(cue_path), state->drive_letter[0], 0, true); - - state->file = filestream_open(cue_path, RETRO_VFS_FILE_ACCESS_READ, 0); - - if (!state->file) { - RARCH_ERR("[CDROM]: Error opening file for reading: %s\n", cue_path); - task_set_progress(task, 100); - task_free_title(task); - task_set_title(task, strdup(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_FILE_READ_OPEN_FAILED))); - return; - } + /* open cuesheet file from drive */ + char cue_path[PATH_MAX_LENGTH] = {0}; - state->state = DUMP_STATE_WRITE_CUE; + cdrom_device_fillpath(cue_path, sizeof(cue_path), state->drive_letter[0], 0, true); - break; - } - case DUMP_STATE_WRITE_CUE: - { - /* write cuesheet to a file */ - int64_t cue_size = filestream_get_size(state->file); - char *cue_data = (char*)calloc(1, cue_size); - settings_t *settings = config_get_ptr(); - char output_file[PATH_MAX_LENGTH]; - char cue_filename[PATH_MAX_LENGTH]; + state->file = filestream_open(cue_path, RETRO_VFS_FILE_ACCESS_READ, 0); - output_file[0] = cue_filename[0] = '\0'; - - filestream_read(state->file, cue_data, cue_size); - - state->stream = filestream_get_vfs_handle(state->file); - state->toc = retro_vfs_file_get_cdrom_toc(); - - if (cdrom_has_atip(state->stream)) - RARCH_LOG("[CDROM]: This disc is not genuine.\n"); - - filestream_close(state->file); - - output_file[0] = cue_filename[0] = '\0'; - - snprintf(cue_filename, sizeof(cue_filename), "%s.cue", state->title); - - fill_pathname_join(output_file, settings->paths.directory_core_assets, - cue_filename, sizeof(output_file)); - - { - RFILE *file = filestream_open(output_file, RETRO_VFS_FILE_ACCESS_WRITE, 0); - unsigned char point = 0; - - if (!file) + if (!state->file) { - RARCH_ERR("[CDROM]: Error opening file for writing: %s\n", output_file); + RARCH_ERR("[CDROM]: Error opening file for reading: %s\n", cue_path); task_set_progress(task, 100); task_free_title(task); - task_set_title(task, strdup(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_FILE_WRITE_OPEN_FAILED))); + task_set_title(task, strdup(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_FILE_READ_OPEN_FAILED))); return; } - for (point = 1; point <= state->toc->num_tracks; point++) + state->state = DUMP_STATE_WRITE_CUE; + + break; + } + case DUMP_STATE_WRITE_CUE: + { + char output_file[PATH_MAX_LENGTH]; + char cue_filename[PATH_MAX_LENGTH]; + /* write cuesheet to a file */ + int64_t cue_size = filestream_get_size(state->file); + char *cue_data = (char*)calloc(1, cue_size); + + output_file[0] = cue_filename[0] = '\0'; + + filestream_read(state->file, cue_data, cue_size); + + state->stream = filestream_get_vfs_handle(state->file); + state->toc = retro_vfs_file_get_cdrom_toc(); + + if (cdrom_has_atip(state->stream)) + RARCH_LOG("[CDROM]: This disc is not genuine.\n"); + + filestream_close(state->file); + + snprintf(cue_filename, sizeof(cue_filename), "%s.cue", state->title); + + fill_pathname_join(output_file, + directory_core_assets, cue_filename, sizeof(output_file)); + { - const char *track_type = "MODE1/2352"; + RFILE *file = filestream_open(output_file, RETRO_VFS_FILE_ACCESS_WRITE, 0); + unsigned char point = 0; + + if (!file) + { + RARCH_ERR("[CDROM]: Error opening file for writing: %s\n", output_file); + task_set_progress(task, 100); + task_free_title(task); + task_set_title(task, strdup(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_FILE_WRITE_OPEN_FAILED))); + return; + } + + for (point = 1; point <= state->toc->num_tracks; point++) + { + const char *track_type = "MODE1/2352"; + char track_filename[PATH_MAX_LENGTH]; + + state->disc_total_bytes += state->toc->track[point - 1].track_bytes; + + track_filename[0] = '\0'; + + if (state->toc->track[point - 1].audio) + track_type = "AUDIO"; + else if (state->toc->track[point - 1].mode == 1) + track_type = "MODE1/2352"; + else if (state->toc->track[point - 1].mode == 2) + track_type = "MODE2/2352"; + + snprintf(track_filename, sizeof(track_filename), "%s (Track %02d).bin", state->title, point); + + filestream_printf(file, "FILE \"%s\" BINARY\n", track_filename); + filestream_printf(file, " TRACK %02d %s\n", point, track_type); + + { + unsigned pregap_lba_len = state->toc->track[point - 1].lba - state->toc->track[point - 1].lba_start; + + if (state->toc->track[point - 1].audio && pregap_lba_len > 0) + { + unsigned char min = 0; + unsigned char sec = 0; + unsigned char frame = 0; + + cdrom_lba_to_msf(pregap_lba_len, &min, &sec, &frame); + + filestream_printf(file, " INDEX 00 00:00:00\n"); + filestream_printf(file, " INDEX 01 %02u:%02u:%02u\n", (unsigned)min, (unsigned)sec, (unsigned)frame); + } + else + filestream_printf(file, " INDEX 01 00:00:00\n"); + } + } + + filestream_close(file); + } + + state->file = NULL; + state->state = DUMP_STATE_NEXT_TRACK; + + free(cue_data); + } + break; + case DUMP_STATE_NEXT_TRACK: + { + /* no file is open as we either just started or just finished a track, need to start dumping the next track */ + state->cur_track++; + + /* no more tracks to dump, we're done */ + if (state->toc && state->cur_track > state->toc->num_tracks) + { + task_set_progress(task, 100); + return; + } + + RARCH_LOG("[CDROM]: Dumping track %d...\n", state->cur_track); + + memset(state->cdrom_path, 0, sizeof(state->cdrom_path)); + + cdrom_device_fillpath(state->cdrom_path, sizeof(state->cdrom_path), state->drive_letter[0], state->cur_track, false); + + state->track_written_bytes = 0; + state->file = filestream_open(state->cdrom_path, RETRO_VFS_FILE_ACCESS_READ, 0); + + /* open a new file for writing for this next track */ + if (state->file) + { + char output_path[PATH_MAX_LENGTH]; char track_filename[PATH_MAX_LENGTH]; - state->disc_total_bytes += state->toc->track[point - 1].track_bytes; + output_path[0] = track_filename[0] = '\0'; - track_filename[0] = '\0'; + snprintf(track_filename, sizeof(track_filename), "%s (Track %02d).bin", state->title, state->cur_track); - if (state->toc->track[point - 1].audio) - track_type = "AUDIO"; - else if (state->toc->track[point - 1].mode == 1) - track_type = "MODE1/2352"; - else if (state->toc->track[point - 1].mode == 2) - track_type = "MODE2/2352"; + state->cur_track_bytes = filestream_get_size(state->file); - snprintf(track_filename, sizeof(track_filename), "%s (Track %02d).bin", state->title, point); + fill_pathname_join(output_path, + directory_core_assets, track_filename, sizeof(output_path)); - filestream_printf(file, "FILE \"%s\" BINARY\n", track_filename); - filestream_printf(file, " TRACK %02d %s\n", point, track_type); + state->output_file = filestream_open(output_path, RETRO_VFS_FILE_ACCESS_WRITE, 0); + if (!state->output_file) { - unsigned pregap_lba_len = state->toc->track[point - 1].lba - state->toc->track[point - 1].lba_start; - - if (state->toc->track[point - 1].audio && pregap_lba_len > 0) - { - unsigned char min = 0; - unsigned char sec = 0; - unsigned char frame = 0; - - cdrom_lba_to_msf(pregap_lba_len, &min, &sec, &frame); - - filestream_printf(file, " INDEX 00 00:00:00\n"); - filestream_printf(file, " INDEX 01 %02u:%02u:%02u\n", (unsigned)min, (unsigned)sec, (unsigned)frame); - } - else - filestream_printf(file, " INDEX 01 00:00:00\n"); + RARCH_ERR("[CDROM]: Error opening file for writing: %s\n", output_path); + task_set_progress(task, 100); + task_free_title(task); + task_set_title(task, strdup(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_FILE_WRITE_OPEN_FAILED))); + return; } } - - filestream_close(file); - } - - state->file = NULL; - state->state = DUMP_STATE_NEXT_TRACK; - - free(cue_data); - - return; - } - case DUMP_STATE_NEXT_TRACK: - { - /* no file is open as we either just started or just finished a track, need to start dumping the next track */ - state->cur_track++; - - /* no more tracks to dump, we're done */ - if (state->toc && state->cur_track > state->toc->num_tracks) - { - task_set_progress(task, 100); - return; - } - - RARCH_LOG("[CDROM]: Dumping track %d...\n", state->cur_track); - - memset(state->cdrom_path, 0, sizeof(state->cdrom_path)); - - cdrom_device_fillpath(state->cdrom_path, sizeof(state->cdrom_path), state->drive_letter[0], state->cur_track, false); - - state->track_written_bytes = 0; - state->file = filestream_open(state->cdrom_path, RETRO_VFS_FILE_ACCESS_READ, 0); - - /* open a new file for writing for this next track */ - if (state->file) - { - settings_t *settings = config_get_ptr(); - char output_path[PATH_MAX_LENGTH]; - char track_filename[PATH_MAX_LENGTH]; - - output_path[0] = track_filename[0] = '\0'; - - snprintf(track_filename, sizeof(track_filename), "%s (Track %02d).bin", state->title, state->cur_track); - - state->cur_track_bytes = filestream_get_size(state->file); - - fill_pathname_join(output_path, settings->paths.directory_core_assets, - track_filename, sizeof(output_path)); - - state->output_file = filestream_open(output_path, RETRO_VFS_FILE_ACCESS_WRITE, 0); - - if (!state->output_file) + else { - RARCH_ERR("[CDROM]: Error opening file for writing: %s\n", output_path); + RARCH_ERR("[CDROM]: Error opening file for writing: %s\n", state->cdrom_path); task_set_progress(task, 100); task_free_title(task); task_set_title(task, strdup(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_FILE_WRITE_OPEN_FAILED))); return; } - } - else - { - RARCH_ERR("[CDROM]: Error opening file for writing: %s\n", state->cdrom_path); - task_set_progress(task, 100); - task_free_title(task); - task_set_title(task, strdup(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_FILE_WRITE_OPEN_FAILED))); - return; - } - state->state = DUMP_STATE_READ_TRACK; - return; - } + state->state = DUMP_STATE_READ_TRACK; + } + break; case DUMP_STATE_READ_TRACK: - { /* read data from track and write it to a file in chunks */ if (state->cur_track_bytes > state->track_written_bytes) { char data[2352 * 2] = {0}; - int64_t read_bytes = filestream_read(state->file, data, sizeof(data)); - int progress = 0; + int64_t read_bytes = filestream_read(state->file, data, sizeof(data)); + int progress = 0; if (read_bytes <= 0) { @@ -432,8 +429,6 @@ static void task_cdrom_dump_handler(retro_task_t *task) } task_set_progress(task, progress); - - return; } else if (state->cur_track_bytes == state->track_written_bytes) { @@ -450,11 +445,8 @@ static void task_cdrom_dump_handler(retro_task_t *task) } state->state = DUMP_STATE_NEXT_TRACK; - return; } - break; - } } } @@ -470,20 +462,20 @@ static void task_cdrom_dump_callback(retro_task_t *task, void task_push_cdrom_dump(const char *drive) { - retro_task_t *task = task_init(); + retro_task_t *task = task_init(); task_cdrom_dump_state_t *state = (task_cdrom_dump_state_t*)calloc(1, sizeof(*state)); - state->drive_letter[0] = drive[0]; - state->next = true; - state->cur_track = 0; - state->state = DUMP_STATE_TOC_PENDING; + state->drive_letter[0] = drive[0]; + state->next = true; + state->cur_track = 0; + state->state = DUMP_STATE_TOC_PENDING; fill_str_dated_filename(state->title, "cdrom", NULL, sizeof(state->title)); - task->state = state; - task->handler = task_cdrom_dump_handler; - task->callback = task_cdrom_dump_callback; - task->title = strdup(msg_hash_to_str(MSG_DUMPING_DISC)); + task->state = state; + task->handler = task_cdrom_dump_handler; + task->callback = task_cdrom_dump_callback; + task->title = strdup(msg_hash_to_str(MSG_DUMPING_DISC)); RARCH_LOG("[CDROM]: Starting disc dump...\n"); @@ -494,11 +486,9 @@ void task_push_cdrom_dump(const char *drive) static int64_t content_file_read(const char *path, void **buf, int64_t *length) { #ifdef HAVE_COMPRESSION - if (path_contains_compressed_file(path)) - { - if (file_archive_compressed_read(path, buf, NULL, length)) - return 1; - } + if ( path_contains_compressed_file(path) + && file_archive_compressed_read(path, buf, NULL, length)) + return 1; #endif return filestream_read_file(path, buf, length); } @@ -588,10 +578,8 @@ static bool content_load(content_ctx_info_t *info) int *rarch_argc_ptr = (int*)&info->argc; struct rarch_main_wrap *wrap_args = NULL; - wrap_args = (struct rarch_main_wrap*) - calloc(1, sizeof(*wrap_args)); - - if (!wrap_args) + if (!(wrap_args = (struct rarch_main_wrap*) + calloc(1, sizeof(*wrap_args)))) return false; retro_assert(wrap_args); @@ -1089,9 +1077,7 @@ static bool content_file_load( rcheevos_hardcore_paused = true; } else - { rcheevos_hardcore_paused = true; - } #endif return true; From ef27a660a7fb722772033e2b417a65b20cc7648c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 22 Jan 2020 10:11:42 +0100 Subject: [PATCH 120/148] (shader vulkan) Cleanups - moving C code out of the C++ file --- gfx/common/vulkan_common.c | 34 ++ gfx/common/vulkan_common.h | 3 + gfx/drivers/vulkan.c | 4 +- gfx/drivers_shader/shader_vulkan.cpp | 500 +++++++++++++-------------- gfx/drivers_shader/shader_vulkan.h | 19 + 5 files changed, 290 insertions(+), 270 deletions(-) diff --git a/gfx/common/vulkan_common.c b/gfx/common/vulkan_common.c index b48f46c839..3bf3fb9310 100644 --- a/gfx/common/vulkan_common.c +++ b/gfx/common/vulkan_common.c @@ -3175,3 +3175,37 @@ bool vulkan_create_swapchain(gfx_ctx_vulkan_data_t *vk, return true; } + +void vulkan_initialize_render_pass(VkDevice device, VkFormat format, + VkRenderPass *render_pass) +{ + VkRenderPassCreateInfo rp_info = { + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO }; + VkAttachmentReference color_ref = { 0, + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL }; + VkAttachmentDescription attachment = {0}; + VkSubpassDescription subpass = {0}; + + /* We will always write to the entire framebuffer, + * so we don't really need to clear. */ + attachment.format = format; + attachment.samples = VK_SAMPLE_COUNT_1_BIT; + attachment.loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; + attachment.storeOp = VK_ATTACHMENT_STORE_OP_STORE; + attachment.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; + attachment.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + + attachment.initialLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + attachment.finalLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + + subpass.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS; + subpass.colorAttachmentCount = 1; + subpass.pColorAttachments = &color_ref; + + rp_info.attachmentCount = 1; + rp_info.pAttachments = &attachment; + rp_info.subpassCount = 1; + rp_info.pSubpasses = &subpass; + + vkCreateRenderPass(device, &rp_info, NULL, render_pass); +} diff --git a/gfx/common/vulkan_common.h b/gfx/common/vulkan_common.h index 048c739aaa..1b5c1f4c71 100644 --- a/gfx/common/vulkan_common.h +++ b/gfx/common/vulkan_common.h @@ -592,6 +592,9 @@ bool vulkan_create_swapchain(gfx_ctx_vulkan_data_t *vk, unsigned width, unsigned height, unsigned swap_interval); +void vulkan_initialize_render_pass(VkDevice device, + VkFormat format, VkRenderPass *render_pass); + RETRO_END_DECLS #endif diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index d99a7dd559..e4a648518e 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -85,10 +85,10 @@ static void vulkan_init_render_pass( { VkRenderPassCreateInfo rp_info = { VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO }; - VkAttachmentDescription attachment = {0}; - VkSubpassDescription subpass = {0}; VkAttachmentReference color_ref = { 0, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL }; + VkAttachmentDescription attachment = {0}; + VkSubpassDescription subpass = {0}; /* Backbuffer format. */ attachment.format = vk->context->swapchain_format; diff --git a/gfx/drivers_shader/shader_vulkan.cpp b/gfx/drivers_shader/shader_vulkan.cpp index 6d6ce40ae5..3b2db4f994 100644 --- a/gfx/drivers_shader/shader_vulkan.cpp +++ b/gfx/drivers_shader/shader_vulkan.cpp @@ -129,26 +129,6 @@ struct Texture vulkan_filter_chain_address address; }; -static vulkan_filter_chain_address wrap_to_address(gfx_wrap_type type) -{ - switch (type) - { - case RARCH_WRAP_BORDER: - return VULKAN_FILTER_CHAIN_ADDRESS_CLAMP_TO_BORDER; - case RARCH_WRAP_REPEAT: - return VULKAN_FILTER_CHAIN_ADDRESS_REPEAT; - case RARCH_WRAP_MIRRORED_REPEAT: - return VULKAN_FILTER_CHAIN_ADDRESS_MIRRORED_REPEAT; - case RARCH_WRAP_EDGE: - default: - break; - } - - return VULKAN_FILTER_CHAIN_ADDRESS_CLAMP_TO_EDGE; -} - - - class DeferredDisposer { public: @@ -263,14 +243,14 @@ class Framebuffer void generate_mips(VkCommandBuffer cmd); private: - const VkPhysicalDeviceMemoryProperties &memory_properties; - VkDevice device = VK_NULL_HANDLE; - VkImage image = VK_NULL_HANDLE; - VkImageView view = VK_NULL_HANDLE; - VkImageView fb_view = VK_NULL_HANDLE; Size2D size; VkFormat format; unsigned max_levels; + const VkPhysicalDeviceMemoryProperties &memory_properties; + VkDevice device = VK_NULL_HANDLE; + VkImage image = VK_NULL_HANDLE; + VkImageView view = VK_NULL_HANDLE; + VkImageView fb_view = VK_NULL_HANDLE; unsigned levels = 0; VkFramebuffer framebuffer = VK_NULL_HANDLE; @@ -278,14 +258,12 @@ class Framebuffer struct { - size_t size = 0; - uint32_t type = 0; - VkDeviceMemory memory = VK_NULL_HANDLE; + size_t size = 0; + uint32_t type = 0; + VkDeviceMemory memory = VK_NULL_HANDLE; } memory; void init(DeferredDisposer *disposer); - void init_framebuffer(); - void init_render_pass(); }; struct CommonResources @@ -296,10 +274,10 @@ struct CommonResources unique_ptr vbo; unique_ptr ubo; - uint8_t *ubo_mapped = nullptr; + uint8_t *ubo_mapped = nullptr; size_t ubo_sync_index_stride = 0; - size_t ubo_offset = 0; - size_t ubo_alignment = 1; + size_t ubo_offset = 0; + size_t ubo_alignment = 1; VkSampler samplers[VULKAN_FILTER_CHAIN_COUNT][VULKAN_FILTER_CHAIN_COUNT][VULKAN_FILTER_CHAIN_ADDRESS_COUNT]; @@ -1192,23 +1170,25 @@ static unique_ptr vulkan_filter_chain_load_lut( if (!image_texture_load(&image, shader->path)) return {}; - image_info.imageType = VK_IMAGE_TYPE_2D; - image_info.format = VK_FORMAT_B8G8R8A8_UNORM; - image_info.extent.width = image.width; - image_info.extent.height = image.height; - image_info.extent.depth = 1; - image_info.mipLevels = shader->mipmap ? num_miplevels(image.width, image.height) : 1; - image_info.arrayLayers = 1; - image_info.samples = VK_SAMPLE_COUNT_1_BIT; - image_info.tiling = VK_IMAGE_TILING_OPTIMAL; - image_info.usage = VK_IMAGE_USAGE_SAMPLED_BIT | - VK_IMAGE_USAGE_TRANSFER_SRC_BIT | - VK_IMAGE_USAGE_TRANSFER_DST_BIT; - image_info.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + image_info.imageType = VK_IMAGE_TYPE_2D; + image_info.format = VK_FORMAT_B8G8R8A8_UNORM; + image_info.extent.width = image.width; + image_info.extent.height = image.height; + image_info.extent.depth = 1; + image_info.mipLevels = shader->mipmap ? num_miplevels(image.width, image.height) : 1; + image_info.arrayLayers = 1; + image_info.samples = VK_SAMPLE_COUNT_1_BIT; + image_info.tiling = VK_IMAGE_TILING_OPTIMAL; + image_info.usage = VK_IMAGE_USAGE_SAMPLED_BIT | + VK_IMAGE_USAGE_TRANSFER_SRC_BIT | + VK_IMAGE_USAGE_TRANSFER_DST_BIT; + image_info.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + vkCreateImage(info->device, &image_info, nullptr, &tex); vkGetImageMemoryRequirements(info->device, tex, &mem_reqs); - alloc.allocationSize = mem_reqs.size; - alloc.memoryTypeIndex = vulkan_find_memory_type( + + alloc.allocationSize = mem_reqs.size; + alloc.memoryTypeIndex = vulkan_find_memory_type( &*info->memory_properties, mem_reqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT); @@ -1230,9 +1210,10 @@ static unique_ptr vulkan_filter_chain_load_lut( view_info.subresourceRange.layerCount = 1; vkCreateImageView(info->device, &view_info, nullptr, &view); - buffer = unique_ptr(new Buffer(info->device, *info->memory_properties, - image.width * image.height * sizeof(uint32_t), VK_BUFFER_USAGE_TRANSFER_SRC_BIT)); - ptr = buffer->map(); + buffer = + unique_ptr(new Buffer(info->device, *info->memory_properties, + image.width * image.height * sizeof(uint32_t), VK_BUFFER_USAGE_TRANSFER_SRC_BIT)); + ptr = buffer->map(); memcpy(ptr, image.pixels, image.width * image.height * sizeof(uint32_t)); buffer->unmap(); @@ -1242,13 +1223,13 @@ static unique_ptr vulkan_filter_chain_load_lut( 0, VK_ACCESS_TRANSFER_WRITE_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT); - region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - region.imageSubresource.mipLevel = 0; + region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + region.imageSubresource.mipLevel = 0; region.imageSubresource.baseArrayLayer = 0; - region.imageSubresource.layerCount = 1; - region.imageExtent.width = image.width; - region.imageExtent.height = image.height; - region.imageExtent.depth = 1; + region.imageSubresource.layerCount = 1; + region.imageExtent.width = image.width; + region.imageExtent.height = image.height; + region.imageExtent.depth = 1; vkCmdCopyBufferToImage(cmd, buffer->get_buffer(), tex, shader->mipmap ? VK_IMAGE_LAYOUT_GENERAL : VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, @@ -1256,11 +1237,11 @@ static unique_ptr vulkan_filter_chain_load_lut( for (i = 1; i < image_info.mipLevels; i++) { - VkImageBlit blit_region = {}; - unsigned src_width = MAX(image.width >> (i - 1), 1u); - unsigned src_height = MAX(image.height >> (i - 1), 1u); - unsigned target_width = MAX(image.width >> i, 1u); - unsigned target_height = MAX(image.height >> i, 1u); + VkImageBlit blit_region = {}; + unsigned src_width = MAX(image.width >> (i - 1), 1u); + unsigned src_height = MAX(image.height >> (i - 1), 1u); + unsigned target_width = MAX(image.width >> i, 1u); + unsigned target_height = MAX(image.height >> i, 1u); blit_region.srcSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; blit_region.srcSubresource.mipLevel = i - 1; @@ -1304,7 +1285,7 @@ static unique_ptr vulkan_filter_chain_load_lut( tex, view, memory, move(buffer), image.width, image.height, shader->filter != RARCH_FILTER_NEAREST, image_info.mipLevels > 1, - wrap_to_address(shader->wrap))); + vk_wrap_to_address(shader->wrap))); error: if (image.pixels) @@ -1318,9 +1299,6 @@ error: return {}; } - - - static bool vulkan_filter_chain_load_luts( const struct vulkan_filter_chain_create_info *info, vulkan_filter_chain *chain, @@ -1374,8 +1352,6 @@ error: return false; } - - StaticTexture::StaticTexture(string id, VkDevice device, VkImage image, @@ -1393,15 +1369,19 @@ StaticTexture::StaticTexture(string id, buffer(move(buffer)), id(move(id)) { - texture.filter = linear ? VULKAN_FILTER_CHAIN_LINEAR : VULKAN_FILTER_CHAIN_NEAREST; - texture.mip_filter = - mipmap && linear ? VULKAN_FILTER_CHAIN_LINEAR : VULKAN_FILTER_CHAIN_NEAREST; - texture.address = address; - texture.texture.image = image; - texture.texture.view = view; + texture.filter = VULKAN_FILTER_CHAIN_NEAREST; + texture.mip_filter = VULKAN_FILTER_CHAIN_NEAREST; + texture.address = address; + texture.texture.image = image; + texture.texture.view = view; texture.texture.layout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; - texture.texture.width = width; + texture.texture.width = width; texture.texture.height = height; + + if (linear) + texture.filter = VULKAN_FILTER_CHAIN_LINEAR; + if (mipmap && linear) + texture.mip_filter = VULKAN_FILTER_CHAIN_LINEAR; } StaticTexture::~StaticTexture() @@ -1420,17 +1400,17 @@ Buffer::Buffer(VkDevice device, device(device), size(size) { VkMemoryRequirements mem_reqs; - VkBufferCreateInfo info = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO }; - info.size = size; - info.usage = usage; - info.sharingMode = VK_SHARING_MODE_EXCLUSIVE; + VkMemoryAllocateInfo alloc = { VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO }; + VkBufferCreateInfo info = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO }; + + info.size = size; + info.usage = usage; + info.sharingMode = VK_SHARING_MODE_EXCLUSIVE; vkCreateBuffer(device, &info, nullptr, &buffer); vkGetBufferMemoryRequirements(device, buffer, &mem_reqs); - VkMemoryAllocateInfo alloc = { VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO }; alloc.allocationSize = mem_reqs.size; - alloc.memoryTypeIndex = vulkan_find_memory_type( &mem_props, mem_reqs.memoryTypeBits, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT @@ -1444,9 +1424,8 @@ void *Buffer::map() { if (!mapped) { - if (vkMapMemory(device, memory, 0, size, 0, &mapped) == VK_SUCCESS) - return mapped; - return nullptr; + if (vkMapMemory(device, memory, 0, size, 0, &mapped) != VK_SUCCESS) + return nullptr; } return mapped; } @@ -1482,17 +1461,20 @@ void Pass::set_shader(VkShaderStageFlags stage, const uint32_t *spirv, size_t spirv_words) { - if (stage == VK_SHADER_STAGE_VERTEX_BIT) + switch (stage) { - vertex_shader.clear(); - vertex_shader.insert(end(vertex_shader), - spirv, spirv + spirv_words); - } - else if (stage == VK_SHADER_STAGE_FRAGMENT_BIT) - { - fragment_shader.clear(); - fragment_shader.insert(end(fragment_shader), - spirv, spirv + spirv_words); + case VK_SHADER_STAGE_VERTEX_BIT: + vertex_shader.clear(); + vertex_shader.insert(end(vertex_shader), + spirv, spirv + spirv_words); + break; + case VK_SHADER_STAGE_FRAGMENT_BIT: + fragment_shader.clear(); + fragment_shader.insert(end(fragment_shader), + spirv, spirv + spirv_words); + break; + default: + break; } } @@ -1555,14 +1537,15 @@ Size2D Pass::set_pass_info( { clear_vk(); - current_viewport = swapchain.viewport; - pass_info = info; + current_viewport = swapchain.viewport; + pass_info = info; - num_sync_indices = swapchain.num_indices; - sync_index = 0; + num_sync_indices = swapchain.num_indices; + sync_index = 0; current_framebuffer_size = get_output_size(max_original, max_source); - swapchain_render_pass = swapchain.render_pass; + swapchain_render_pass = swapchain.render_pass; + return current_framebuffer_size; } @@ -1587,9 +1570,19 @@ bool Pass::init_pipeline_layout() unsigned i; vector bindings; vector desc_counts; + VkPushConstantRange push_range = {}; + VkDescriptorSetLayoutCreateInfo set_layout_info = { + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO }; + VkPipelineLayoutCreateInfo layout_info = { + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO }; + VkDescriptorPoolCreateInfo pool_info = { + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO }; + VkDescriptorSetAllocateInfo alloc_info = { + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO }; /* Main UBO. */ - VkShaderStageFlags ubo_mask = 0; + VkShaderStageFlags ubo_mask = 0; + if (reflection.ubo_stage_mask & SLANG_STAGE_VERTEX_MASK) ubo_mask |= VK_SHADER_STAGE_VERTEX_BIT; if (reflection.ubo_stage_mask & SLANG_STAGE_FRAGMENT_MASK) @@ -1608,10 +1601,11 @@ bool Pass::init_pipeline_layout() { for (auto &texture : semantic) { + VkShaderStageFlags stages = 0; + if (!texture.texture) continue; - VkShaderStageFlags stages = 0; if (texture.stage_mask & SLANG_STAGE_VERTEX_MASK) stages |= VK_SHADER_STAGE_VERTEX_BIT; if (texture.stage_mask & SLANG_STAGE_FRAGMENT_MASK) @@ -1624,22 +1618,17 @@ bool Pass::init_pipeline_layout() } } - VkDescriptorSetLayoutCreateInfo set_layout_info = { - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO }; - set_layout_info.bindingCount = bindings.size(); - set_layout_info.pBindings = bindings.data(); + set_layout_info.bindingCount = bindings.size(); + set_layout_info.pBindings = bindings.data(); if (vkCreateDescriptorSetLayout(device, &set_layout_info, NULL, &set_layout) != VK_SUCCESS) return false; - VkPipelineLayoutCreateInfo layout_info = { - VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO }; layout_info.setLayoutCount = 1; layout_info.pSetLayouts = &set_layout; /* Push constants */ - VkPushConstantRange push_range = {}; if (reflection.push_constant_stage_mask && reflection.push_constant_size) { if (reflection.push_constant_stage_mask & SLANG_STAGE_VERTEX_MASK) @@ -1650,27 +1639,23 @@ bool Pass::init_pipeline_layout() RARCH_LOG("[Vulkan]: Push Constant Block: %u bytes.\n", (unsigned int)reflection.push_constant_size); layout_info.pushConstantRangeCount = 1; - layout_info.pPushConstantRanges = &push_range; + layout_info.pPushConstantRanges = &push_range; push.buffer.resize((reflection.push_constant_size + sizeof(uint32_t) - 1) / sizeof(uint32_t)); } - push.stages = push_range.stageFlags; + push.stages = push_range.stageFlags; push_range.size = reflection.push_constant_size; if (vkCreatePipelineLayout(device, &layout_info, NULL, &pipeline_layout) != VK_SUCCESS) return false; - VkDescriptorPoolCreateInfo pool_info = { - VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO }; pool_info.maxSets = num_sync_indices; pool_info.poolSizeCount = desc_counts.size(); pool_info.pPoolSizes = desc_counts.data(); if (vkCreateDescriptorPool(device, &pool_info, nullptr, &pool) != VK_SUCCESS) return false; - VkDescriptorSetAllocateInfo alloc_info = { - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO }; alloc_info.descriptorPool = pool; alloc_info.descriptorSetCount = 1; alloc_info.pSetLayouts = &set_layout; @@ -1685,18 +1670,43 @@ bool Pass::init_pipeline_layout() bool Pass::init_pipeline() { + VkPipelineInputAssemblyStateCreateInfo input_assembly = { + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO }; + VkVertexInputAttributeDescription attributes[2] = {{0}}; + VkVertexInputBindingDescription binding = {0}; + VkPipelineVertexInputStateCreateInfo vertex_input = { + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO }; + VkPipelineRasterizationStateCreateInfo raster = { + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO }; + VkPipelineColorBlendAttachmentState blend_attachment = {0}; + VkPipelineColorBlendStateCreateInfo blend = { + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO }; + VkPipelineViewportStateCreateInfo viewport = { + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO }; + VkPipelineDepthStencilStateCreateInfo depth_stencil = { + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO }; + VkPipelineMultisampleStateCreateInfo multisample = { + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO }; + VkPipelineDynamicStateCreateInfo dynamic = { + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO }; + static const VkDynamicState dynamics[] = { + VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR }; + VkPipelineShaderStageCreateInfo shader_stages[2] = { + { VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO }, + { VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO }, + }; + VkShaderModuleCreateInfo module_info = { + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO }; + VkGraphicsPipelineCreateInfo pipe = { + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO }; + if (!init_pipeline_layout()) return false; /* Input assembly */ - VkPipelineInputAssemblyStateCreateInfo input_assembly = { - VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO }; input_assembly.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP; /* VAO state */ - VkVertexInputAttributeDescription attributes[2] = {{0}}; - VkVertexInputBindingDescription binding = {0}; - attributes[0].location = 0; attributes[0].binding = 0; attributes[0].format = VK_FORMAT_R32G32_SFLOAT; @@ -1710,70 +1720,47 @@ bool Pass::init_pipeline() binding.stride = 4 * sizeof(float); binding.inputRate = VK_VERTEX_INPUT_RATE_VERTEX; - VkPipelineVertexInputStateCreateInfo vertex_input = { - VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO }; vertex_input.vertexBindingDescriptionCount = 1; vertex_input.pVertexBindingDescriptions = &binding; vertex_input.vertexAttributeDescriptionCount = 2; vertex_input.pVertexAttributeDescriptions = attributes; /* Raster state */ - VkPipelineRasterizationStateCreateInfo raster = { - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO }; - raster.polygonMode = VK_POLYGON_MODE_FILL; - raster.cullMode = VK_CULL_MODE_NONE; - raster.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; - raster.depthClampEnable = false; - raster.rasterizerDiscardEnable = false; - raster.depthBiasEnable = false; - raster.lineWidth = 1.0f; + raster.polygonMode = VK_POLYGON_MODE_FILL; + raster.cullMode = VK_CULL_MODE_NONE; + raster.frontFace = + VK_FRONT_FACE_COUNTER_CLOCKWISE; + raster.depthClampEnable = false; + raster.rasterizerDiscardEnable = false; + raster.depthBiasEnable = false; + raster.lineWidth = 1.0f; /* Blend state */ - VkPipelineColorBlendAttachmentState blend_attachment = {0}; - VkPipelineColorBlendStateCreateInfo blend = { - VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO }; - blend_attachment.blendEnable = false; - blend_attachment.colorWriteMask = 0xf; - blend.attachmentCount = 1; - blend.pAttachments = &blend_attachment; + blend_attachment.blendEnable = false; + blend_attachment.colorWriteMask = 0xf; + blend.attachmentCount = 1; + blend.pAttachments = &blend_attachment; /* Viewport state */ - VkPipelineViewportStateCreateInfo viewport = { - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO }; - viewport.viewportCount = 1; - viewport.scissorCount = 1; + viewport.viewportCount = 1; + viewport.scissorCount = 1; /* Depth-stencil state */ - VkPipelineDepthStencilStateCreateInfo depth_stencil = { - VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO }; - depth_stencil.depthTestEnable = false; - depth_stencil.depthWriteEnable = false; - depth_stencil.depthBoundsTestEnable = false; - depth_stencil.stencilTestEnable = false; - depth_stencil.minDepthBounds = 0.0f; - depth_stencil.maxDepthBounds = 1.0f; + depth_stencil.depthTestEnable = false; + depth_stencil.depthWriteEnable = false; + depth_stencil.depthBoundsTestEnable = false; + depth_stencil.stencilTestEnable = false; + depth_stencil.minDepthBounds = 0.0f; + depth_stencil.maxDepthBounds = 1.0f; /* Multisample state */ - VkPipelineMultisampleStateCreateInfo multisample = { - VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO }; - multisample.rasterizationSamples = VK_SAMPLE_COUNT_1_BIT; + multisample.rasterizationSamples = VK_SAMPLE_COUNT_1_BIT; /* Dynamic state */ - VkPipelineDynamicStateCreateInfo dynamic = { - VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO }; - static const VkDynamicState dynamics[] = { - VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR }; dynamic.pDynamicStates = dynamics; dynamic.dynamicStateCount = sizeof(dynamics) / sizeof(dynamics[0]); /* Shaders */ - VkPipelineShaderStageCreateInfo shader_stages[2] = { - { VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO }, - { VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO }, - }; - - VkShaderModuleCreateInfo module_info = { - VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO }; module_info.codeSize = vertex_shader.size() * sizeof(uint32_t); module_info.pCode = vertex_shader.data(); shader_stages[0].stage = VK_SHADER_STAGE_VERTEX_BIT; @@ -1786,8 +1773,6 @@ bool Pass::init_pipeline() shader_stages[1].pName = "main"; vkCreateShaderModule(device, &module_info, NULL, &shader_stages[1].module); - VkGraphicsPipelineCreateInfo pipe = { - VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO }; pipe.stageCount = 2; pipe.pStages = shader_stages; pipe.pVertexInputState = &vertex_input; @@ -1820,6 +1805,7 @@ CommonResources::CommonResources(VkDevice device, : device(device) { unsigned i; + VkSamplerCreateInfo info = { VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO }; /* The final pass uses an MVP designed for [0, 1] range VBO. * For in-between passes, we just go with identity matrices, * so keep it simple. @@ -1838,14 +1824,14 @@ CommonResources::CommonResources(VkDevice device, 1.0f, +1.0f, 1.0f, 1.0f, }; - vbo = unique_ptr(new Buffer(device, - memory_properties, sizeof(vbo_data), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT)); + vbo = + unique_ptr(new Buffer(device, + memory_properties, sizeof(vbo_data), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT)); - void *ptr = vbo->map(); + void *ptr = vbo->map(); memcpy(ptr, vbo_data, sizeof(vbo_data)); vbo->unmap(); - VkSamplerCreateInfo info = { VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO }; info.mipLodBias = 0.0f; info.maxAnisotropy = 1.0f; info.compareEnable = false; @@ -1974,9 +1960,9 @@ bool Pass::init_feedback() bool Pass::build() { - unordered_map semantic_map; unsigned i; unsigned j = 0; + unordered_map semantic_map; framebuffer.reset(); framebuffer_feedback.reset(); @@ -2026,16 +2012,17 @@ void Pass::set_uniform_buffer(VkDescriptorSet set, unsigned binding, VkDeviceSize range) { VkDescriptorBufferInfo buffer_info; - buffer_info.buffer = buffer; - buffer_info.offset = offset; - buffer_info.range = range; - VkWriteDescriptorSet write = { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET }; + + buffer_info.buffer = buffer; + buffer_info.offset = offset; + buffer_info.range = range; + write.dstSet = set; write.dstBinding = binding; write.descriptorCount = 1; write.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; - write.pBufferInfo = &buffer_info; + write.pBufferInfo = &buffer_info; vkUpdateDescriptorSets(device, 1, &write, 0, NULL); } @@ -2044,11 +2031,12 @@ void Pass::set_texture(VkDescriptorSet set, unsigned binding, const Texture &texture) { VkDescriptorImageInfo image_info; + VkWriteDescriptorSet write = { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET }; + image_info.sampler = common->samplers[texture.filter][texture.mip_filter][texture.address]; image_info.imageView = texture.texture.view; image_info.imageLayout = texture.texture.layout; - VkWriteDescriptorSet write = { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET }; write.dstSet = set; write.dstBinding = binding; write.descriptorCount = 1; @@ -2294,6 +2282,9 @@ void Pass::build_commands( * the passes that end up on-screen. */ if (!final_pass) { + VkRenderPassBeginInfo rp_info = { + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO }; + /* Render. */ vulkan_image_layout_transition_levels(cmd, framebuffer->get_image(), 1, @@ -2304,8 +2295,6 @@ void Pass::build_commands( VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT); - VkRenderPassBeginInfo rp_info = { - VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO }; rp_info.renderPass = framebuffer->get_render_pass(); rp_info.framebuffer = framebuffer->get_framebuffer(); rp_info.renderArea.extent.width = current_framebuffer_size.width; @@ -2317,7 +2306,8 @@ void Pass::build_commands( } vkCmdBindPipeline(cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline); - vkCmdBindDescriptorSets(cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline_layout, + vkCmdBindDescriptorSets(cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, + pipeline_layout, 0, 1, &sets[sync_index], 0, nullptr); if (push.stages != 0) @@ -2327,10 +2317,12 @@ void Pass::build_commands( push.buffer.data()); } - VkDeviceSize offset = final_pass ? 16 * sizeof(float) : 0; - vkCmdBindVertexBuffers(cmd, 0, 1, - &common->vbo->get_buffer(), - &offset); + { + VkDeviceSize offset = final_pass ? 16 * sizeof(float) : 0; + vkCmdBindVertexBuffers(cmd, 0, 1, + &common->vbo->get_buffer(), + &offset); + } if (final_pass) { @@ -2404,7 +2396,7 @@ Framebuffer::Framebuffer( { RARCH_LOG("[Vulkan filter chain]: Creating framebuffer %u x %u (max %u level(s)).\n", max_size.width, max_size.height, max_levels); - init_render_pass(); + vulkan_initialize_render_pass(device, format, &render_pass); init(nullptr); } @@ -2429,9 +2421,12 @@ void Framebuffer::clear(VkCommandBuffer cmd) vkCmdClearColorImage(cmd, image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, &color, 1, &range); - vulkan_image_layout_transition_levels(cmd, image,VK_REMAINING_MIP_LEVELS, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, - VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_SHADER_READ_BIT, + vulkan_image_layout_transition_levels(cmd, image, + VK_REMAINING_MIP_LEVELS, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, + VK_ACCESS_TRANSFER_WRITE_BIT, + VK_ACCESS_SHADER_READ_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT); } @@ -2488,6 +2483,9 @@ void Framebuffer::generate_mips(VkCommandBuffer cmd) for (i = 1; i < levels; i++) { + unsigned src_width, src_height, target_width, target_height; + VkImageBlit blit_region = {}; + /* For subsequent passes, we have to transition * from DST_OPTIMAL to SRC_OPTIMAL, * but only do so one mip-level at a time. */ @@ -2509,11 +2507,10 @@ void Framebuffer::generate_mips(VkCommandBuffer cmd) 1, barriers); } - VkImageBlit blit_region = {}; - unsigned src_width = MAX(size.width >> (i - 1), 1u); - unsigned src_height = MAX(size.height >> (i - 1), 1u); - unsigned target_width = MAX(size.width >> i, 1u); - unsigned target_height = MAX(size.height >> i, 1u); + src_width = MAX(size.width >> (i - 1), 1u); + src_height = MAX(size.height >> (i - 1), 1u); + target_width = MAX(size.width >> i, 1u); + target_height = MAX(size.height >> i, 1u); blit_region.srcSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; blit_region.srcSubresource.mipLevel = i - 1; @@ -2607,7 +2604,11 @@ void Framebuffer::copy(VkCommandBuffer cmd, void Framebuffer::init(DeferredDisposer *disposer) { VkMemoryRequirements mem_reqs; - VkImageCreateInfo info = { VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO }; + VkImageCreateInfo info = { VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO }; + VkMemoryAllocateInfo alloc = { VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO }; + VkImageViewCreateInfo view_info = { + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO }; + info.imageType = VK_IMAGE_TYPE_2D; info.format = format; info.extent.width = size.width; @@ -2618,19 +2619,18 @@ void Framebuffer::init(DeferredDisposer *disposer) info.samples = VK_SAMPLE_COUNT_1_BIT; info.tiling = VK_IMAGE_TILING_OPTIMAL; info.usage = VK_IMAGE_USAGE_SAMPLED_BIT | - VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | - VK_IMAGE_USAGE_TRANSFER_DST_BIT | - VK_IMAGE_USAGE_TRANSFER_SRC_BIT; + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | + VK_IMAGE_USAGE_TRANSFER_DST_BIT | + VK_IMAGE_USAGE_TRANSFER_SRC_BIT; info.sharingMode = VK_SHARING_MODE_EXCLUSIVE; info.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; - levels = info.mipLevels; + levels = info.mipLevels; vkCreateImage(device, &info, nullptr, &image); vkGetImageMemoryRequirements(device, image, &mem_reqs); - VkMemoryAllocateInfo alloc = { VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO }; alloc.allocationSize = mem_reqs.size; alloc.memoryTypeIndex = find_memory_type_fallback( memory_properties, mem_reqs.memoryTypeBits, @@ -2657,8 +2657,6 @@ void Framebuffer::init(DeferredDisposer *disposer) vkBindImageMemory(device, image, memory.memory, 0); - VkImageViewCreateInfo view_info = { - VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO }; view_info.viewType = VK_IMAGE_VIEW_TYPE_2D; view_info.format = format; view_info.image = image; @@ -2676,54 +2674,19 @@ void Framebuffer::init(DeferredDisposer *disposer) view_info.subresourceRange.levelCount = 1; vkCreateImageView(device, &view_info, nullptr, &fb_view); - init_framebuffer(); -} + /* Initialize framebuffer */ + { + VkFramebufferCreateInfo info = { + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO }; + info.renderPass = render_pass; + info.attachmentCount = 1; + info.pAttachments = &fb_view; + info.width = size.width; + info.height = size.height; + info.layers = 1; -void Framebuffer::init_render_pass() -{ - VkRenderPassCreateInfo rp_info = { - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO }; - VkAttachmentReference color_ref = { 0, - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL }; - - /* We will always write to the entire framebuffer, - * so we don't really need to clear. */ - VkAttachmentDescription attachment = {0}; - attachment.format = format; - attachment.samples = VK_SAMPLE_COUNT_1_BIT; - attachment.loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; - attachment.storeOp = VK_ATTACHMENT_STORE_OP_STORE; - attachment.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; - attachment.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; - - attachment.initialLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; - attachment.finalLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; - - VkSubpassDescription subpass = {0}; - subpass.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS; - subpass.colorAttachmentCount = 1; - subpass.pColorAttachments = &color_ref; - - rp_info.attachmentCount = 1; - rp_info.pAttachments = &attachment; - rp_info.subpassCount = 1; - rp_info.pSubpasses = &subpass; - - vkCreateRenderPass(device, &rp_info, nullptr, &render_pass); -} - -void Framebuffer::init_framebuffer() -{ - VkFramebufferCreateInfo info = { - VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO }; - info.renderPass = render_pass; - info.attachmentCount = 1; - info.pAttachments = &fb_view; - info.width = size.width; - info.height = size.height; - info.layers = 1; - - vkCreateFramebuffer(device, &info, nullptr, &framebuffer); + vkCreateFramebuffer(device, &info, nullptr, &framebuffer); + } } void Framebuffer::set_size(DeferredDisposer &disposer, const Size2D &size, VkFormat format) @@ -2792,8 +2755,9 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_default( vulkan_filter_chain_filter filter) { struct vulkan_filter_chain_pass_info pass_info; - auto tmpinfo = *info; - tmpinfo.num_passes = 1; + auto tmpinfo = *info; + + tmpinfo.num_passes = 1; unique_ptr chain{ new vulkan_filter_chain(tmpinfo) }; if (!chain) @@ -2971,7 +2935,7 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_from_preset( param.initial = meta_param.initial; param.minimum = meta_param.minimum; param.maximum = meta_param.maximum; - param.step = meta_param.step; + param.step = meta_param.step; chain->add_parameter(i, shader->num_parameters, meta_param.id); shader->num_parameters++; } @@ -3004,7 +2968,7 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_from_preset( pass->filter == RARCH_FILTER_LINEAR ? VULKAN_FILTER_CHAIN_LINEAR : VULKAN_FILTER_CHAIN_NEAREST; } - pass_info.address = wrap_to_address(pass->wrap); + pass_info.address = vk_wrap_to_address(pass->wrap); pass_info.max_levels = 1; /* TODO: Expose max_levels in slangp. @@ -3025,18 +2989,16 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_from_preset( if (!pass->fbo.valid) { - pass_info.scale_type_x = i + 1 == shader->passes - ? VULKAN_FILTER_CHAIN_SCALE_VIEWPORT - : VULKAN_FILTER_CHAIN_SCALE_SOURCE; - pass_info.scale_type_y = i + 1 == shader->passes - ? VULKAN_FILTER_CHAIN_SCALE_VIEWPORT - : VULKAN_FILTER_CHAIN_SCALE_SOURCE; - pass_info.scale_x = 1.0f; - pass_info.scale_y = 1.0f; + pass_info.scale_type_x = VULKAN_FILTER_CHAIN_SCALE_SOURCE; + pass_info.scale_type_y = VULKAN_FILTER_CHAIN_SCALE_SOURCE; + pass_info.scale_x = 1.0f; + pass_info.scale_y = 1.0f; if (i + 1 == shader->passes) { - pass_info.rt_format = tmpinfo.swapchain.format; + pass_info.scale_type_x = VULKAN_FILTER_CHAIN_SCALE_VIEWPORT; + pass_info.scale_type_y = VULKAN_FILTER_CHAIN_SCALE_VIEWPORT; + pass_info.rt_format = tmpinfo.swapchain.format; if (explicit_format) RARCH_WARN("[slang]: Using explicit format for last pass in chain," @@ -3044,7 +3006,8 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_from_preset( } else { - pass_info.rt_format = glslang_format_to_vk(output.meta.rt_format); + pass_info.rt_format = glslang_format_to_vk( + output.meta.rt_format); RARCH_LOG("[slang]: Using render target format %s for pass output #%u.\n", glslang_format_to_string(output.meta.rt_format), i); } @@ -3058,24 +3021,25 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_from_preset( else if (pass->fbo.fp_fbo) output.meta.rt_format = SLANG_FORMAT_R16G16B16A16_SFLOAT; - pass_info.rt_format = glslang_format_to_vk(output.meta.rt_format); + pass_info.rt_format = glslang_format_to_vk(output.meta.rt_format); + RARCH_LOG("[slang]: Using render target format %s for pass output #%u.\n", glslang_format_to_string(output.meta.rt_format), i); switch (pass->fbo.type_x) { case RARCH_SCALE_INPUT: - pass_info.scale_x = pass->fbo.scale_x; + pass_info.scale_x = pass->fbo.scale_x; pass_info.scale_type_x = VULKAN_FILTER_CHAIN_SCALE_SOURCE; break; case RARCH_SCALE_ABSOLUTE: - pass_info.scale_x = float(pass->fbo.abs_x); + pass_info.scale_x = float(pass->fbo.abs_x); pass_info.scale_type_x = VULKAN_FILTER_CHAIN_SCALE_ABSOLUTE; break; case RARCH_SCALE_VIEWPORT: - pass_info.scale_x = pass->fbo.scale_x; + pass_info.scale_x = pass->fbo.scale_x; pass_info.scale_type_x = VULKAN_FILTER_CHAIN_SCALE_VIEWPORT; break; } @@ -3083,17 +3047,17 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_from_preset( switch (pass->fbo.type_y) { case RARCH_SCALE_INPUT: - pass_info.scale_y = pass->fbo.scale_y; + pass_info.scale_y = pass->fbo.scale_y; pass_info.scale_type_y = VULKAN_FILTER_CHAIN_SCALE_SOURCE; break; case RARCH_SCALE_ABSOLUTE: - pass_info.scale_y = float(pass->fbo.abs_y); + pass_info.scale_y = float(pass->fbo.abs_y); pass_info.scale_type_y = VULKAN_FILTER_CHAIN_SCALE_ABSOLUTE; break; case RARCH_SCALE_VIEWPORT: - pass_info.scale_y = pass->fbo.scale_y; + pass_info.scale_y = pass->fbo.scale_y; pass_info.scale_type_y = VULKAN_FILTER_CHAIN_SCALE_VIEWPORT; break; } diff --git a/gfx/drivers_shader/shader_vulkan.h b/gfx/drivers_shader/shader_vulkan.h index 60f6c89ebe..bcd1a029d7 100644 --- a/gfx/drivers_shader/shader_vulkan.h +++ b/gfx/drivers_shader/shader_vulkan.h @@ -111,6 +111,25 @@ struct vulkan_filter_chain_create_info struct vulkan_filter_chain_swapchain_info swapchain; }; +static INLINE enum vulkan_filter_chain_address vk_wrap_to_address(enum gfx_wrap_type type) +{ + switch (type) + { + case RARCH_WRAP_BORDER: + return VULKAN_FILTER_CHAIN_ADDRESS_CLAMP_TO_BORDER; + case RARCH_WRAP_REPEAT: + return VULKAN_FILTER_CHAIN_ADDRESS_REPEAT; + case RARCH_WRAP_MIRRORED_REPEAT: + return VULKAN_FILTER_CHAIN_ADDRESS_MIRRORED_REPEAT; + case RARCH_WRAP_EDGE: + default: + break; + } + + return VULKAN_FILTER_CHAIN_ADDRESS_CLAMP_TO_EDGE; +} + + vulkan_filter_chain_t *vulkan_filter_chain_new( const struct vulkan_filter_chain_create_info *info); void vulkan_filter_chain_free(vulkan_filter_chain_t *chain); From e9c73bd9a696cbb5a5da0749110376d4d0033bb0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 22 Jan 2020 10:41:38 +0100 Subject: [PATCH 121/148] (Vulkan) Move more C code to vulkan_common.c --- gfx/common/vulkan_common.c | 24 ++++ gfx/common/vulkan_common.h | 8 ++ gfx/drivers_shader/shader_vulkan.cpp | 187 ++++++++++++++------------- 3 files changed, 131 insertions(+), 88 deletions(-) diff --git a/gfx/common/vulkan_common.c b/gfx/common/vulkan_common.c index 3bf3fb9310..469c0af03a 100644 --- a/gfx/common/vulkan_common.c +++ b/gfx/common/vulkan_common.c @@ -3209,3 +3209,27 @@ void vulkan_initialize_render_pass(VkDevice device, VkFormat format, vkCreateRenderPass(device, &rp_info, NULL, render_pass); } + +void vulkan_set_uniform_buffer( + VkDevice device, + VkDescriptorSet set, + unsigned binding, + VkBuffer buffer, + VkDeviceSize offset, + VkDeviceSize range) +{ + VkDescriptorBufferInfo buffer_info; + VkWriteDescriptorSet write = { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET }; + + buffer_info.buffer = buffer; + buffer_info.offset = offset; + buffer_info.range = range; + + write.dstSet = set; + write.dstBinding = binding; + write.descriptorCount = 1; + write.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; + write.pBufferInfo = &buffer_info; + + vkUpdateDescriptorSets(device, 1, &write, 0, NULL); +} diff --git a/gfx/common/vulkan_common.h b/gfx/common/vulkan_common.h index 1b5c1f4c71..f234bd8141 100644 --- a/gfx/common/vulkan_common.h +++ b/gfx/common/vulkan_common.h @@ -592,6 +592,14 @@ bool vulkan_create_swapchain(gfx_ctx_vulkan_data_t *vk, unsigned width, unsigned height, unsigned swap_interval); +void vulkan_set_uniform_buffer( + VkDevice device, + VkDescriptorSet set, + unsigned binding, + VkBuffer buffer, + VkDeviceSize offset, + VkDeviceSize range); + void vulkan_initialize_render_pass(VkDevice device, VkFormat format, VkRenderPass *render_pass); diff --git a/gfx/drivers_shader/shader_vulkan.cpp b/gfx/drivers_shader/shader_vulkan.cpp index 3b2db4f994..cf93667e38 100644 --- a/gfx/drivers_shader/shader_vulkan.cpp +++ b/gfx/drivers_shader/shader_vulkan.cpp @@ -418,10 +418,10 @@ class Pass Size2D get_output_size(const Size2D &original_size, const Size2D &max_source) const; - VkPipeline pipeline = VK_NULL_HANDLE; + VkPipeline pipeline = VK_NULL_HANDLE; VkPipelineLayout pipeline_layout = VK_NULL_HANDLE; VkDescriptorSetLayout set_layout = VK_NULL_HANDLE; - VkDescriptorPool pool = VK_NULL_HANDLE; + VkDescriptorPool pool = VK_NULL_HANDLE; vector sets; CommonResources *common = nullptr; @@ -449,11 +449,6 @@ class Pass slang_texture_semantic semantic, unsigned index, const Texture &texture); - void set_uniform_buffer(VkDescriptorSet set, unsigned binding, - VkBuffer buffer, - VkDeviceSize offset, - VkDeviceSize range); - slang_reflection reflection; void build_semantics(VkDescriptorSet set, uint8_t *buffer, const float *mvp, const Texture &original, const Texture &source); @@ -473,12 +468,12 @@ class Pass void build_semantic_texture_array(VkDescriptorSet set, uint8_t *buffer, slang_texture_semantic semantic, unsigned index, const Texture &texture); - uint64_t frame_count = 0; - int32_t frame_direction = 1; + uint64_t frame_count = 0; + int32_t frame_direction = 1; unsigned frame_count_period = 0; - unsigned pass_number = 0; + unsigned pass_number = 0; - size_t ubo_offset = 0; + size_t ubo_offset = 0; string pass_name; struct Parameter @@ -817,6 +812,8 @@ void vulkan_filter_chain::build_viewport_pass( VkCommandBuffer cmd, const VkViewport &vp, const float *mvp) { unsigned i; + Texture source; + /* First frame, make sure our history and * feedback textures are in a clean state. */ if (require_clear) @@ -825,7 +822,6 @@ void vulkan_filter_chain::build_viewport_pass( require_clear = false; } - Texture source; DeferredDisposer disposer(deferred_calls[current_sync_index]); const Texture original = { input_texture, @@ -960,19 +956,23 @@ bool vulkan_filter_chain::init_alias() j = &passes[i] - passes.data(); - if (!vk_shader_set_unique_map(common.texture_semantic_map, name, + if (!vk_shader_set_unique_map( + common.texture_semantic_map, name, slang_texture_semantic_map{ SLANG_TEXTURE_SEMANTIC_PASS_OUTPUT, j })) return false; - if (!vk_shader_set_unique_map(common.texture_semantic_uniform_map, name + "Size", + if (!vk_shader_set_unique_map( + common.texture_semantic_uniform_map, name + "Size", slang_texture_semantic_map{ SLANG_TEXTURE_SEMANTIC_PASS_OUTPUT, j })) return false; - if (!vk_shader_set_unique_map(common.texture_semantic_map, name + "Feedback", + if (!vk_shader_set_unique_map( + common.texture_semantic_map, name + "Feedback", slang_texture_semantic_map{ SLANG_TEXTURE_SEMANTIC_PASS_FEEDBACK, j })) return false; - if (!vk_shader_set_unique_map(common.texture_semantic_uniform_map, name + "FeedbackSize", + if (!vk_shader_set_unique_map( + common.texture_semantic_uniform_map, name + "FeedbackSize", slang_texture_semantic_map{ SLANG_TEXTURE_SEMANTIC_PASS_FEEDBACK, j })) return false; } @@ -980,12 +980,14 @@ bool vulkan_filter_chain::init_alias() for (i = 0; i < common.luts.size(); i++) { j = &common.luts[i] - common.luts.data(); - if (!vk_shader_set_unique_map(common.texture_semantic_map, + if (!vk_shader_set_unique_map( + common.texture_semantic_map, common.luts[i]->get_id(), slang_texture_semantic_map{ SLANG_TEXTURE_SEMANTIC_USER, j })) return false; - if (!vk_shader_set_unique_map(common.texture_semantic_uniform_map, + if (!vk_shader_set_unique_map( + common.texture_semantic_uniform_map, common.luts[i]->get_id() + "Size", slang_texture_semantic_map{ SLANG_TEXTURE_SEMANTIC_USER, j })) return false; @@ -1034,13 +1036,13 @@ void vulkan_filter_chain::add_parameter(unsigned pass, bool vulkan_filter_chain::init_ubo() { unsigned i; + VkPhysicalDeviceProperties props; common.ubo.reset(); - common.ubo_offset = 0; + common.ubo_offset = 0; - VkPhysicalDeviceProperties props; vkGetPhysicalDeviceProperties(gpu, &props); - common.ubo_alignment = props.limits.minUniformBufferOffsetAlignment; + common.ubo_alignment = props.limits.minUniformBufferOffsetAlignment; /* Who knows. :) */ if (common.ubo_alignment == 0) @@ -1049,16 +1051,17 @@ bool vulkan_filter_chain::init_ubo() for (i = 0; i < passes.size(); i++) passes[i]->allocate_buffers(); - common.ubo_offset = (common.ubo_offset + common.ubo_alignment - 1) & + common.ubo_offset = + (common.ubo_offset + common.ubo_alignment - 1) & ~(common.ubo_alignment - 1); common.ubo_sync_index_stride = common.ubo_offset; if (common.ubo_offset != 0) - common.ubo = unique_ptr(new Buffer(device, + common.ubo = unique_ptr(new Buffer(device, memory_properties, common.ubo_offset * deferred_calls.size(), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT)); - common.ubo_mapped = static_cast(common.ubo->map()); + common.ubo_mapped = static_cast(common.ubo->map()); return true; } @@ -1114,7 +1117,8 @@ void vulkan_filter_chain::set_input_texture( input_texture = texture; } -void vulkan_filter_chain::add_static_texture(unique_ptr texture) +void vulkan_filter_chain::add_static_texture( + unique_ptr texture) { common.luts.push_back(move(texture)); } @@ -1126,7 +1130,8 @@ void vulkan_filter_chain::set_frame_count(uint64_t count) passes[i]->set_frame_count(count); } -void vulkan_filter_chain::set_frame_count_period(unsigned pass, unsigned period) +void vulkan_filter_chain::set_frame_count_period( + unsigned pass, unsigned period) { passes[pass]->set_frame_count_period(period); } @@ -1175,7 +1180,8 @@ static unique_ptr vulkan_filter_chain_load_lut( image_info.extent.width = image.width; image_info.extent.height = image.height; image_info.extent.depth = 1; - image_info.mipLevels = shader->mipmap ? num_miplevels(image.width, image.height) : 1; + image_info.mipLevels = shader->mipmap + ? num_miplevels(image.width, image.height) : 1; image_info.arrayLayers = 1; image_info.samples = VK_SAMPLE_COUNT_1_BIT; image_info.tiling = VK_IMAGE_TILING_OPTIMAL; @@ -1217,11 +1223,15 @@ static unique_ptr vulkan_filter_chain_load_lut( memcpy(ptr, image.pixels, image.width * image.height * sizeof(uint32_t)); buffer->unmap(); - vulkan_image_layout_transition_levels(cmd, tex,VK_REMAINING_MIP_LEVELS, + vulkan_image_layout_transition_levels(cmd, tex, + VK_REMAINING_MIP_LEVELS, VK_IMAGE_LAYOUT_UNDEFINED, - shader->mipmap ? VK_IMAGE_LAYOUT_GENERAL : VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - 0, VK_ACCESS_TRANSFER_WRITE_BIT, - VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT); + shader->mipmap ? VK_IMAGE_LAYOUT_GENERAL + : VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + 0, + VK_ACCESS_TRANSFER_WRITE_BIT, + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, + VK_PIPELINE_STAGE_TRANSFER_BIT); region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; region.imageSubresource.mipLevel = 0; @@ -1231,8 +1241,12 @@ static unique_ptr vulkan_filter_chain_load_lut( region.imageExtent.height = image.height; region.imageExtent.depth = 1; - vkCmdCopyBufferToImage(cmd, buffer->get_buffer(), tex, - shader->mipmap ? VK_IMAGE_LAYOUT_GENERAL : VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + vkCmdCopyBufferToImage(cmd, + buffer->get_buffer(), + tex, + shader->mipmap + ? VK_IMAGE_LAYOUT_GENERAL + : VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, ®ion); for (i = 1; i < image_info.mipLevels; i++) @@ -1258,7 +1272,10 @@ static unique_ptr vulkan_filter_chain_load_lut( /* Only injects execution and memory barriers, * not actual transition. */ - vulkan_image_layout_transition_levels(cmd, tex, VK_REMAINING_MIP_LEVELS, + vulkan_image_layout_transition_levels( + cmd, + tex, + VK_REMAINING_MIP_LEVELS, VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_GENERAL, VK_ACCESS_TRANSFER_WRITE_BIT, @@ -1272,11 +1289,18 @@ static unique_ptr vulkan_filter_chain_load_lut( 1, &blit_region, VK_FILTER_LINEAR); } - vulkan_image_layout_transition_levels(cmd, tex,VK_REMAINING_MIP_LEVELS, - shader->mipmap ? VK_IMAGE_LAYOUT_GENERAL : VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + vulkan_image_layout_transition_levels( + cmd, + tex, + VK_REMAINING_MIP_LEVELS, + shader->mipmap + ? VK_IMAGE_LAYOUT_GENERAL + : VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, - VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_SHADER_READ_BIT, - VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT); + VK_ACCESS_TRANSFER_WRITE_BIT, + VK_ACCESS_SHADER_READ_BIT, + VK_PIPELINE_STAGE_TRANSFER_BIT, + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT); image_texture_free(&image); image.pixels = nullptr; @@ -1310,7 +1334,8 @@ static bool vulkan_filter_chain_load_luts( VkSubmitInfo submit_info = { VK_STRUCTURE_TYPE_SUBMIT_INFO }; VkCommandBuffer cmd = VK_NULL_HANDLE; - VkCommandBufferAllocateInfo cmd_info = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO }; + VkCommandBufferAllocateInfo cmd_info = { + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO }; bool recording = false; cmd_info.commandPool = info->command_pool; @@ -1707,18 +1732,18 @@ bool Pass::init_pipeline() input_assembly.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP; /* VAO state */ - attributes[0].location = 0; - attributes[0].binding = 0; - attributes[0].format = VK_FORMAT_R32G32_SFLOAT; - attributes[0].offset = 0; - attributes[1].location = 1; - attributes[1].binding = 0; - attributes[1].format = VK_FORMAT_R32G32_SFLOAT; - attributes[1].offset = 2 * sizeof(float); + attributes[0].location = 0; + attributes[0].binding = 0; + attributes[0].format = VK_FORMAT_R32G32_SFLOAT; + attributes[0].offset = 0; + attributes[1].location = 1; + attributes[1].binding = 0; + attributes[1].format = VK_FORMAT_R32G32_SFLOAT; + attributes[1].offset = 2 * sizeof(float); - binding.binding = 0; - binding.stride = 4 * sizeof(float); - binding.inputRate = VK_VERTEX_INPUT_RATE_VERTEX; + binding.binding = 0; + binding.stride = 4 * sizeof(float); + binding.inputRate = VK_VERTEX_INPUT_RATE_VERTEX; vertex_input.vertexBindingDescriptionCount = 1; vertex_input.pVertexBindingDescriptions = &binding; @@ -1805,12 +1830,13 @@ CommonResources::CommonResources(VkDevice device, : device(device) { unsigned i; - VkSamplerCreateInfo info = { VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO }; + VkSamplerCreateInfo info = { + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO }; /* The final pass uses an MVP designed for [0, 1] range VBO. * For in-between passes, we just go with identity matrices, * so keep it simple. */ - const float vbo_data[] = { + const float vbo_data[] = { /* Offscreen */ -1.0f, -1.0f, 0.0f, 0.0f, -1.0f, +1.0f, 0.0f, 1.0f, @@ -2006,27 +2032,6 @@ bool Pass::build() return true; } -void Pass::set_uniform_buffer(VkDescriptorSet set, unsigned binding, - VkBuffer buffer, - VkDeviceSize offset, - VkDeviceSize range) -{ - VkDescriptorBufferInfo buffer_info; - VkWriteDescriptorSet write = { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET }; - - buffer_info.buffer = buffer; - buffer_info.offset = offset; - buffer_info.range = range; - - write.dstSet = set; - write.dstBinding = binding; - write.descriptorCount = 1; - write.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; - write.pBufferInfo = &buffer_info; - - vkUpdateDescriptorSets(device, 1, &write, 0, NULL); -} - void Pass::set_texture(VkDescriptorSet set, unsigned binding, const Texture &texture) { @@ -2247,6 +2252,8 @@ void Pass::build_commands( const VkViewport &vp, const float *mvp) { + uint8_t *u = nullptr; + current_viewport = vp; Size2D size = get_output_size( { original.texture.width, original.texture.height }, @@ -2260,21 +2267,16 @@ void Pass::build_commands( current_framebuffer_size = size; if (reflection.ubo_stage_mask && common->ubo_mapped) - { - uint8_t *u = common->ubo_mapped + ubo_offset + + u = common->ubo_mapped + ubo_offset + sync_index * common->ubo_sync_index_stride; - build_semantics(sets[sync_index], u, mvp, original, source); - } - else - build_semantics(sets[sync_index], nullptr, mvp, original, source); + + build_semantics(sets[sync_index], u, mvp, original, source); if (reflection.ubo_stage_mask) - { - set_uniform_buffer(sets[sync_index], reflection.ubo_binding, + vulkan_set_uniform_buffer(device, sets[sync_index], reflection.ubo_binding, common->ubo->get_buffer(), ubo_offset + sync_index * common->ubo_sync_index_stride, reflection.ubo_size); - } /* The final pass is always executed inside * another render pass since the frontend will @@ -2405,9 +2407,13 @@ void Framebuffer::clear(VkCommandBuffer cmd) VkClearColorValue color; VkImageSubresourceRange range; - vulkan_image_layout_transition_levels(cmd, image,VK_REMAINING_MIP_LEVELS, - VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - 0, VK_ACCESS_TRANSFER_WRITE_BIT, + vulkan_image_layout_transition_levels(cmd, + image, + VK_REMAINING_MIP_LEVELS, + VK_IMAGE_LAYOUT_UNDEFINED, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + 0, + VK_ACCESS_TRANSFER_WRITE_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT); @@ -2418,10 +2424,15 @@ void Framebuffer::clear(VkCommandBuffer cmd) range.levelCount = 1; range.layerCount = 1; - vkCmdClearColorImage(cmd, image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - &color, 1, &range); + vkCmdClearColorImage(cmd, + image, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + &color, + 1, + &range); - vulkan_image_layout_transition_levels(cmd, image, + vulkan_image_layout_transition_levels(cmd, + image, VK_REMAINING_MIP_LEVELS, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, From f85363226038cfb887eafd0995cbaee45f2add28 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 22 Jan 2020 10:52:20 +0100 Subject: [PATCH 122/148] Move framebuffer generate_mips function to vulkan_common.c --- gfx/common/vulkan_common.c | 152 ++++++++++++++++++++++++++ gfx/common/vulkan_common.h | 9 ++ gfx/drivers_shader/shader_gl_core.cpp | 5 - gfx/drivers_shader/shader_vulkan.cpp | 151 +------------------------ gfx/video_defines.h | 5 + 5 files changed, 172 insertions(+), 150 deletions(-) diff --git a/gfx/common/vulkan_common.c b/gfx/common/vulkan_common.c index 469c0af03a..0196042ec7 100644 --- a/gfx/common/vulkan_common.c +++ b/gfx/common/vulkan_common.c @@ -3233,3 +3233,155 @@ void vulkan_set_uniform_buffer( vkUpdateDescriptorSets(device, 1, &write, 0, NULL); } + +void vulkan_framebuffer_generate_mips( + VkFramebuffer framebuffer, + VkImage image, + struct Size2D size, + VkCommandBuffer cmd, + unsigned levels + ) +{ + unsigned i; + /* This is run every frame, so make sure + * we aren't opting into the "lazy" way of doing this. :) */ + VkImageMemoryBarrier barriers[2] = { + { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER }, + { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER }, + }; + + /* First, transfer the input mip level to TRANSFER_SRC_OPTIMAL. + * This should allow the surface to stay compressed. + * All subsequent mip-layers are now transferred into DST_OPTIMAL from + * UNDEFINED at this point. + */ + + /* Input */ + barriers[0].srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; + barriers[0].dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT; + barriers[0].oldLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + barriers[0].newLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; + barriers[0].srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + barriers[0].dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + barriers[0].image = image; + barriers[0].subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + barriers[0].subresourceRange.baseMipLevel = 0; + barriers[0].subresourceRange.levelCount = 1; + barriers[0].subresourceRange.layerCount = VK_REMAINING_ARRAY_LAYERS; + + /* The rest of the mip chain */ + barriers[1].srcAccessMask = 0; + barriers[1].dstAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT; + barriers[1].oldLayout = VK_IMAGE_LAYOUT_UNDEFINED; + barriers[1].newLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; + barriers[1].srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + barriers[1].dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + barriers[1].image = image; + barriers[1].subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + barriers[1].subresourceRange.baseMipLevel = 1; + barriers[1].subresourceRange.levelCount = VK_REMAINING_MIP_LEVELS; + barriers[1].subresourceRange.layerCount = VK_REMAINING_ARRAY_LAYERS; + + vkCmdPipelineBarrier(cmd, + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, + VK_PIPELINE_STAGE_TRANSFER_BIT, + false, + 0, + NULL, + 0, + NULL, + 2, + barriers); + + for (i = 1; i < levels; i++) + { + unsigned src_width, src_height, target_width, target_height; + VkImageBlit blit_region = {}; + + /* For subsequent passes, we have to transition + * from DST_OPTIMAL to SRC_OPTIMAL, + * but only do so one mip-level at a time. */ + if (i > 1) + { + barriers[0].srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT; + barriers[0].dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT; + barriers[0].subresourceRange.baseMipLevel = i - 1; + barriers[0].subresourceRange.levelCount = 1; + barriers[0].oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; + barriers[0].newLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; + + vkCmdPipelineBarrier(cmd, + VK_PIPELINE_STAGE_TRANSFER_BIT, + VK_PIPELINE_STAGE_TRANSFER_BIT, + false, + 0, + NULL, + 0, + NULL, + 1, + barriers); + } + + src_width = MAX(size.width >> (i - 1), 1u); + src_height = MAX(size.height >> (i - 1), 1u); + target_width = MAX(size.width >> i, 1u); + target_height = MAX(size.height >> i, 1u); + + blit_region.srcSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + blit_region.srcSubresource.mipLevel = i - 1; + blit_region.srcSubresource.baseArrayLayer = 0; + blit_region.srcSubresource.layerCount = 1; + blit_region.dstSubresource = blit_region.srcSubresource; + blit_region.dstSubresource.mipLevel = i; + blit_region.srcOffsets[1].x = src_width; + blit_region.srcOffsets[1].y = src_height; + blit_region.srcOffsets[1].z = 1; + blit_region.dstOffsets[1].x = target_width; + blit_region.dstOffsets[1].y = target_height; + blit_region.dstOffsets[1].z = 1; + + vkCmdBlitImage(cmd, + image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, + image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + 1, &blit_region, VK_FILTER_LINEAR); + } + + /* We are now done, and we have all mip-levels except + * the last in TRANSFER_SRC_OPTIMAL, + * and the last one still on TRANSFER_DST_OPTIMAL, + * so do a final barrier which + * moves everything to SHADER_READ_ONLY_OPTIMAL in + * one go along with the execution barrier to next pass. + * Read-to-read memory barrier, so only need execution + * barrier for first transition. + */ + barriers[0].srcAccessMask = VK_ACCESS_TRANSFER_READ_BIT; + barriers[0].dstAccessMask = VK_ACCESS_SHADER_READ_BIT; + barriers[0].subresourceRange.baseMipLevel = 0; + barriers[0].subresourceRange.levelCount = levels - 1; + barriers[0].oldLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; + barriers[0].newLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; + + /* This is read-after-write barrier. */ + barriers[1].srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT; + barriers[1].dstAccessMask = VK_ACCESS_SHADER_READ_BIT; + barriers[1].subresourceRange.baseMipLevel = levels - 1; + barriers[1].subresourceRange.levelCount = 1; + barriers[1].oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; + barriers[1].newLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; + + vkCmdPipelineBarrier(cmd, + VK_PIPELINE_STAGE_TRANSFER_BIT, + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, + false, + 0, + NULL, + 0, + NULL, + 2, barriers); + + /* Next pass will wait for ALL_GRAPHICS_BIT, and since + * we have dstStage as FRAGMENT_SHADER, + * the dependency chain will ensure we don't start + * next pass until the mipchain is complete. */ +} diff --git a/gfx/common/vulkan_common.h b/gfx/common/vulkan_common.h index f234bd8141..0f55c46e91 100644 --- a/gfx/common/vulkan_common.h +++ b/gfx/common/vulkan_common.h @@ -42,6 +42,7 @@ #include #include +#include "../video_defines.h" #include "../../driver.h" #include "../../retroarch.h" #include "../../verbosity.h" @@ -600,6 +601,14 @@ void vulkan_set_uniform_buffer( VkDeviceSize offset, VkDeviceSize range); +void vulkan_framebuffer_generate_mips( + VkFramebuffer framebuffer, + VkImage image, + struct Size2D size, + VkCommandBuffer cmd, + unsigned levels + ); + void vulkan_initialize_render_pass(VkDevice device, VkFormat format, VkRenderPass *render_pass); diff --git a/gfx/drivers_shader/shader_gl_core.cpp b/gfx/drivers_shader/shader_gl_core.cpp index abf89a5617..322fd22200 100644 --- a/gfx/drivers_shader/shader_gl_core.cpp +++ b/gfx/drivers_shader/shader_gl_core.cpp @@ -404,11 +404,6 @@ static void build_vec4(float *data, unsigned width, unsigned height) data[3] = 1.0f / float(height); } -struct Size2D -{ - unsigned width, height; -}; - struct Texture { gl_core_filter_chain_texture texture; diff --git a/gfx/drivers_shader/shader_vulkan.cpp b/gfx/drivers_shader/shader_vulkan.cpp index cf93667e38..0507cacc7e 100644 --- a/gfx/drivers_shader/shader_vulkan.cpp +++ b/gfx/drivers_shader/shader_vulkan.cpp @@ -116,11 +116,6 @@ static void build_vec4(float *data, unsigned width, unsigned height) data[3] = 1.0f / float(height); } -struct Size2D -{ - unsigned width, height; -}; - struct Texture { vulkan_filter_chain_texture texture; @@ -240,7 +235,6 @@ class Framebuffer void copy(VkCommandBuffer cmd, VkImage image, VkImageLayout layout); unsigned get_levels() const { return levels; } - void generate_mips(VkCommandBuffer cmd); private: Size2D size; @@ -2368,7 +2362,12 @@ void Pass::build_commands( vkCmdEndRenderPass(cmd); if (framebuffer->get_levels() > 1) - framebuffer->generate_mips(cmd); + vulkan_framebuffer_generate_mips( + framebuffer->get_framebuffer(), + framebuffer->get_image(), + framebuffer->get_size(), + cmd, + framebuffer->get_levels()); else { /* Barrier to sync with next pass. */ @@ -2442,144 +2441,6 @@ void Framebuffer::clear(VkCommandBuffer cmd) VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT); } -void Framebuffer::generate_mips(VkCommandBuffer cmd) -{ - unsigned i; - /* This is run every frame, so make sure - * we aren't opting into the "lazy" way of doing this. :) */ - VkImageMemoryBarrier barriers[2] = { - { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER }, - { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER }, - }; - - /* First, transfer the input mip level to TRANSFER_SRC_OPTIMAL. - * This should allow the surface to stay compressed. - * All subsequent mip-layers are now transferred into DST_OPTIMAL from - * UNDEFINED at this point. - */ - - /* Input */ - barriers[0].srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; - barriers[0].dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT; - barriers[0].oldLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; - barriers[0].newLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; - barriers[0].srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; - barriers[0].dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; - barriers[0].image = image; - barriers[0].subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - barriers[0].subresourceRange.baseMipLevel = 0; - barriers[0].subresourceRange.levelCount = 1; - barriers[0].subresourceRange.layerCount = VK_REMAINING_ARRAY_LAYERS; - - /* The rest of the mip chain */ - barriers[1].srcAccessMask = 0; - barriers[1].dstAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT; - barriers[1].oldLayout = VK_IMAGE_LAYOUT_UNDEFINED; - barriers[1].newLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; - barriers[1].srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; - barriers[1].dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; - barriers[1].image = image; - barriers[1].subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - barriers[1].subresourceRange.baseMipLevel = 1; - barriers[1].subresourceRange.levelCount = VK_REMAINING_MIP_LEVELS; - barriers[1].subresourceRange.layerCount = VK_REMAINING_ARRAY_LAYERS; - - vkCmdPipelineBarrier(cmd, - VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, - VK_PIPELINE_STAGE_TRANSFER_BIT, - false, - 0, nullptr, - 0, nullptr, - 2, barriers); - - for (i = 1; i < levels; i++) - { - unsigned src_width, src_height, target_width, target_height; - VkImageBlit blit_region = {}; - - /* For subsequent passes, we have to transition - * from DST_OPTIMAL to SRC_OPTIMAL, - * but only do so one mip-level at a time. */ - if (i > 1) - { - barriers[0].srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT; - barriers[0].dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT; - barriers[0].subresourceRange.baseMipLevel = i - 1; - barriers[0].subresourceRange.levelCount = 1; - barriers[0].oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; - barriers[0].newLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; - - vkCmdPipelineBarrier(cmd, - VK_PIPELINE_STAGE_TRANSFER_BIT, - VK_PIPELINE_STAGE_TRANSFER_BIT, - false, - 0, nullptr, - 0, nullptr, - 1, barriers); - } - - src_width = MAX(size.width >> (i - 1), 1u); - src_height = MAX(size.height >> (i - 1), 1u); - target_width = MAX(size.width >> i, 1u); - target_height = MAX(size.height >> i, 1u); - - blit_region.srcSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - blit_region.srcSubresource.mipLevel = i - 1; - blit_region.srcSubresource.baseArrayLayer = 0; - blit_region.srcSubresource.layerCount = 1; - blit_region.dstSubresource = blit_region.srcSubresource; - blit_region.dstSubresource.mipLevel = i; - blit_region.srcOffsets[1].x = src_width; - blit_region.srcOffsets[1].y = src_height; - blit_region.srcOffsets[1].z = 1; - blit_region.dstOffsets[1].x = target_width; - blit_region.dstOffsets[1].y = target_height; - blit_region.dstOffsets[1].z = 1; - - vkCmdBlitImage(cmd, - image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, - image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - 1, &blit_region, VK_FILTER_LINEAR); - } - - /* We are now done, and we have all mip-levels except - * the last in TRANSFER_SRC_OPTIMAL, - * and the last one still on TRANSFER_DST_OPTIMAL, - * so do a final barrier which - * moves everything to SHADER_READ_ONLY_OPTIMAL in - * one go along with the execution barrier to next pass. - * Read-to-read memory barrier, so only need execution - * barrier for first transition. - */ - barriers[0].srcAccessMask = VK_ACCESS_TRANSFER_READ_BIT; - barriers[0].dstAccessMask = VK_ACCESS_SHADER_READ_BIT; - barriers[0].subresourceRange.baseMipLevel = 0; - barriers[0].subresourceRange.levelCount = levels - 1; - barriers[0].oldLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; - barriers[0].newLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; - - /* This is read-after-write barrier. */ - barriers[1].srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT; - barriers[1].dstAccessMask = VK_ACCESS_SHADER_READ_BIT; - barriers[1].subresourceRange.baseMipLevel = levels - 1; - barriers[1].subresourceRange.levelCount = 1; - barriers[1].oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; - barriers[1].newLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; - - vkCmdPipelineBarrier(cmd, - VK_PIPELINE_STAGE_TRANSFER_BIT, - VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, - false, - 0, nullptr, - 0, nullptr, - 2, barriers); - - /* Next pass will wait for ALL_GRAPHICS_BIT, and since - * we have dstStage as FRAGMENT_SHADER, - * the dependency chain will ensure we don't start - * next pass until the mipchain is complete. */ -} - void Framebuffer::copy(VkCommandBuffer cmd, VkImage src_image, VkImageLayout src_layout) { diff --git a/gfx/video_defines.h b/gfx/video_defines.h index 900b9c786b..d05f38b257 100644 --- a/gfx/video_defines.h +++ b/gfx/video_defines.h @@ -155,6 +155,11 @@ typedef struct gfx_ctx_flags uint32_t flags; } gfx_ctx_flags_t; +struct Size2D +{ + unsigned width, height; +}; + RETRO_END_DECLS #endif From b8cd37aef7117532ffb747bed94eef6243fa3037 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 22 Jan 2020 11:29:40 +0100 Subject: [PATCH 123/148] (shader_vulkan.cpp) Get rid of ConfigDeleter --- gfx/drivers_shader/shader_vulkan.cpp | 43 ++++++++++++++-------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/gfx/drivers_shader/shader_vulkan.cpp b/gfx/drivers_shader/shader_vulkan.cpp index 0507cacc7e..0e92b33756 100644 --- a/gfx/drivers_shader/shader_vulkan.cpp +++ b/gfx/drivers_shader/shader_vulkan.cpp @@ -2660,15 +2660,6 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_default( return chain.release(); } -struct ConfigDeleter -{ - void operator()(config_file_t *conf) - { - if (conf) - config_file_free(conf); - } -}; - static VkFormat glslang_format_to_vk(glslang_format fmt) { #undef FMT @@ -2719,16 +2710,19 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_from_preset( const char *path, vulkan_filter_chain_filter filter) { unsigned i; + config_file_t *conf = NULL; unique_ptr shader{ new video_shader() }; if (!shader) return nullptr; - unique_ptr conf{ video_shader_read_preset(path) }; - if (!conf) + if (!(conf = video_shader_read_preset(path))) return nullptr; - if (!video_shader_read_conf_preset(conf.get(), shader.get())) + if (!video_shader_read_conf_preset(conf, shader.get())) + { + config_file_free(conf); return nullptr; + } bool last_pass_is_fbo = shader->pass[shader->passes - 1].fbo.valid; auto tmpinfo = *info; @@ -2736,10 +2730,10 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_from_preset( unique_ptr chain{ new vulkan_filter_chain(tmpinfo) }; if (!chain) - return nullptr; + goto error; if (shader->luts && !vulkan_filter_chain_load_luts(info, chain.get(), shader.get())) - return nullptr; + goto error; shader->num_parameters = 0; @@ -2765,7 +2759,7 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_from_preset( { RARCH_ERR("Failed to compile shader: \"%s\".\n", pass->source.path); - return nullptr; + goto error; } for (auto &meta_param : output.meta.parameters) @@ -2773,7 +2767,7 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_from_preset( if (shader->num_parameters >= GFX_MAX_PARAMETERS) { RARCH_ERR("[Vulkan]: Exceeded maximum number of parameters.\n"); - return nullptr; + goto error; } auto itr = find_if(shader->parameters, shader->parameters + shader->num_parameters, @@ -2794,7 +2788,7 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_from_preset( { RARCH_ERR("[Vulkan]: Duplicate parameters found for \"%s\", but arguments do not match.\n", itr->id); - return nullptr; + goto error; } chain->add_parameter(i, itr - shader->parameters, meta_param.id); } @@ -2853,11 +2847,11 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_from_preset( pass_info.mip_filter = pass->filter != RARCH_FILTER_NEAREST && pass_info.max_levels > 1 ? VULKAN_FILTER_CHAIN_LINEAR : VULKAN_FILTER_CHAIN_NEAREST; - bool explicit_format = output.meta.rt_format != SLANG_FORMAT_UNKNOWN; + bool explicit_format = output.meta.rt_format != SLANG_FORMAT_UNKNOWN; /* Set a reasonable default. */ if (output.meta.rt_format == SLANG_FORMAT_UNKNOWN) - output.meta.rt_format = SLANG_FORMAT_R8G8B8A8_UNORM; + output.meta.rt_format = SLANG_FORMAT_R8G8B8A8_UNORM; if (!pass->fbo.valid) { @@ -2968,15 +2962,20 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_from_preset( sizeof(opaque_frag) / sizeof(uint32_t)); } - if (!video_shader_resolve_current_parameters(conf.get(), shader.get())) - return nullptr; + if (!video_shader_resolve_current_parameters(conf, shader.get())) + goto error; chain->set_shader_preset(move(shader)); if (!chain->init()) - return nullptr; + goto error; + config_file_free(conf); return chain.release(); + +error: + config_file_free(conf); + return nullptr; } struct video_shader *vulkan_filter_chain_get_preset( From c8227c95ddb6321965434e7b0c56bda8cdd74080 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 22 Jan 2020 11:35:00 +0100 Subject: [PATCH 124/148] (shader_gl_core) get rid of ConfigDeleter --- gfx/drivers_shader/shader_gl_core.cpp | 38 +++++++++++++-------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/gfx/drivers_shader/shader_gl_core.cpp b/gfx/drivers_shader/shader_gl_core.cpp index 322fd22200..f9c96127d4 100644 --- a/gfx/drivers_shader/shader_gl_core.cpp +++ b/gfx/drivers_shader/shader_gl_core.cpp @@ -355,15 +355,6 @@ static const uint32_t opaque_frag[] = #include "../drivers/vulkan_shaders/opaque.frag.inc" ; -struct ConfigDeleter -{ - void operator()(config_file_t *conf) - { - if (conf) - config_file_free(conf); - } -}; - static unsigned num_miplevels(unsigned width, unsigned height) { unsigned size = MAX(width, height); @@ -2397,25 +2388,28 @@ gl_core_filter_chain_t *gl_core_filter_chain_create_from_preset( const char *path, gl_core_filter_chain_filter filter) { unsigned i; + config_file_t *conf = NULL; unique_ptr shader{ new video_shader() }; if (!shader) return nullptr; - unique_ptr conf{ video_shader_read_preset(path) }; - if (!conf) + if (!(conf = video_shader_read_preset(path))) return nullptr; - if (!video_shader_read_conf_preset(conf.get(), shader.get())) + if (!video_shader_read_conf_preset(conf, shader.get())) + { + config_file_free(conf); return nullptr; + } bool last_pass_is_fbo = shader->pass[shader->passes - 1].fbo.valid; unique_ptr chain{ new gl_core_filter_chain(shader->passes + (last_pass_is_fbo ? 1 : 0)) }; if (!chain) - return nullptr; + goto error; if (shader->luts && !gl_core_filter_chain_load_luts(chain.get(), shader.get())) - return nullptr; + goto error; shader->num_parameters = 0; @@ -2441,7 +2435,7 @@ gl_core_filter_chain_t *gl_core_filter_chain_create_from_preset( { RARCH_ERR("Failed to compile shader: \"%s\".\n", pass->source.path); - return nullptr; + goto error; } for (auto &meta_param : output.meta.parameters) @@ -2449,7 +2443,7 @@ gl_core_filter_chain_t *gl_core_filter_chain_create_from_preset( if (shader->num_parameters >= GFX_MAX_PARAMETERS) { RARCH_ERR("[GLCore]: Exceeded maximum number of parameters.\n"); - return nullptr; + goto error; } auto itr = find_if(shader->parameters, shader->parameters + shader->num_parameters, @@ -2470,7 +2464,7 @@ gl_core_filter_chain_t *gl_core_filter_chain_create_from_preset( { RARCH_ERR("[GLCore]: Duplicate parameters found for \"%s\", but arguments do not match.\n", itr->id); - return nullptr; + goto error; } chain->add_parameter(i, itr - shader->parameters, meta_param.id); } @@ -2644,15 +2638,19 @@ gl_core_filter_chain_t *gl_core_filter_chain_create_from_preset( sizeof(gl_core::opaque_frag) / sizeof(uint32_t)); } - if (!video_shader_resolve_current_parameters(conf.get(), shader.get())) - return nullptr; + if (!video_shader_resolve_current_parameters(conf, shader.get())) + goto error; chain->set_shader_preset(move(shader)); if (!chain->init()) - return nullptr; + goto error; + config_file_free(conf); return chain.release(); + +error: + return nullptr; } struct video_shader *gl_core_filter_chain_get_preset( From bcf8ff3d0a5d4049a8a24ca0a099a5496cfa5c41 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 22 Jan 2020 11:57:06 +0100 Subject: [PATCH 125/148] (shader_gl_core) Get rid of ConfigDeleter - move C code to gl_core.c --- gfx/common/gl_core_common.h | 6 + gfx/drivers/gl_core.c | 86 +++++++++ gfx/drivers_shader/shader_gl_core.cpp | 254 ++++++++------------------ 3 files changed, 172 insertions(+), 174 deletions(-) diff --git a/gfx/common/gl_core_common.h b/gfx/common/gl_core_common.h index a20236de76..98d6938eab 100644 --- a/gfx/common/gl_core_common.h +++ b/gfx/common/gl_core_common.h @@ -139,6 +139,12 @@ typedef struct gl_core void gl_core_bind_scratch_vbo(gl_core_t *gl, const void *data, size_t size); +GLuint gl_core_compile_shader(GLenum stage, const char *source); + +void gl_core_framebuffer_clear(GLuint id); + +uint32_t gl_core_get_cross_compiler_target_version(void); + RETRO_END_DECLS #endif diff --git a/gfx/drivers/gl_core.c b/gfx/drivers/gl_core.c index 3ad3782c8d..299f82333f 100644 --- a/gfx/drivers/gl_core.c +++ b/gfx/drivers/gl_core.c @@ -171,6 +171,92 @@ static void gl_core_fence_iterate(gl_core_t *gl, unsigned hard_sync_frames) } } +uint32_t gl_core_get_cross_compiler_target_version(void) +{ + const char *version = (const char*)glGetString(GL_VERSION); + unsigned major = 0; + unsigned minor = 0; + +#ifdef HAVE_OPENGLES3 + if (!version || sscanf(version, "OpenGL ES %u.%u", &major, &minor) != 2) + return 300; + + if (major == 2 && minor == 0) + return 100; +#else + if (!version || sscanf(version, "%u.%u", &major, &minor) != 2) + return 150; + + if (major == 3) + { + switch (minor) + { + case 2: + return 150; + case 1: + return 140; + case 0: + return 130; + } + } + else if (major == 2) + { + switch (minor) + { + case 1: + return 120; + case 0: + return 110; + } + } +#endif + + return 100 * major + 10 * minor; +} + +GLuint gl_core_compile_shader(GLenum stage, const char *source) +{ + GLint status; + GLuint shader = glCreateShader(stage); + const char *ptr = source; + + glShaderSource(shader, 1, &ptr, NULL); + glCompileShader(shader); + + glGetShaderiv(shader, GL_COMPILE_STATUS, &status); + + if (!status) + { + GLint length; + glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &length); + if (length > 0) + { + char *info_log = (char*)malloc(length); + + if (info_log) + { + glGetShaderInfoLog(shader, length, &length, info_log); + RARCH_ERR("[GLCore]: Failed to compile shader: %s\n", info_log); + free(info_log); + glDeleteShader(shader); + return 0; + } + } + } + + return shader; +} + + +void gl_core_framebuffer_clear(GLuint id) +{ + glBindFramebuffer(GL_FRAMEBUFFER, id); + glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + glClearColor(0.0f, 0.0f, 0.0f, 0.0f); + glClear(GL_COLOR_BUFFER_BIT); + glBindFramebuffer(GL_FRAMEBUFFER, 0); +} + void gl_core_bind_scratch_vbo(gl_core_t *gl, const void *data, size_t size) { if (!gl->scratch_vbos[gl->scratch_vbo_index]) diff --git a/gfx/drivers_shader/shader_gl_core.cpp b/gfx/drivers_shader/shader_gl_core.cpp index f9c96127d4..92babb17be 100644 --- a/gfx/drivers_shader/shader_gl_core.cpp +++ b/gfx/drivers_shader/shader_gl_core.cpp @@ -32,6 +32,8 @@ #include "slang_reflection.hpp" #include "spirv_glsl.hpp" +#include "../common/gl_core_common.h" + #include "../../retroarch.h" #include "../../verbosity.h" #include "../../msg_hash.h" @@ -54,82 +56,6 @@ static bool gl_core_shader_set_unique_map(unordered_map &m, return true; } -static GLuint gl_core_compile_shader(GLenum stage, const char *source) -{ - GLint status; - GLuint shader = glCreateShader(stage); - const char *ptr = source; - - glShaderSource(shader, 1, &ptr, nullptr); - glCompileShader(shader); - - glGetShaderiv(shader, GL_COMPILE_STATUS, &status); - - if (!status) - { - GLint length; - glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &length); - if (length > 0) - { - char *info_log = (char*)malloc(length); - - if (info_log) - { - glGetShaderInfoLog(shader, length, &length, info_log); - RARCH_ERR("[GLCore]: Failed to compile shader: %s\n", info_log); - free(info_log); - glDeleteShader(shader); - return 0; - } - } - } - - return shader; -} - -static uint32_t gl_core_get_cross_compiler_target_version() -{ - const char *version = (const char*)glGetString(GL_VERSION); - unsigned major = 0; - unsigned minor = 0; - -#ifdef HAVE_OPENGLES3 - if (!version || sscanf(version, "OpenGL ES %u.%u", &major, &minor) != 2) - return 300; - - if (major == 2 && minor == 0) - return 100; -#else - if (!version || sscanf(version, "%u.%u", &major, &minor) != 2) - return 150; - - if (major == 3) - { - switch (minor) - { - case 2: - return 150; - case 1: - return 140; - case 0: - return 130; - } - } - else if (major == 2) - { - switch (minor) - { - case 1: - return 120; - case 0: - return 110; - } - } -#endif - - return 100 * major + 10 * minor; -} - GLuint gl_core_cross_compile_program( const uint32_t *vertex, size_t vertex_size, const uint32_t *fragment, size_t fragment_size, @@ -345,7 +271,7 @@ GLuint gl_core_cross_compile_program( return program; } -namespace gl_core +namespace gl_core_shader { static const uint32_t opaque_vert[] = #include "../drivers/vulkan_shaders/opaque.vert.inc" @@ -531,20 +457,9 @@ public: StaticTexture(StaticTexture&&) = delete; void operator=(StaticTexture&&) = delete; - void set_id(string name) - { - id = move(name); - } - - const string &get_id() const - { - return id; - } - - const Texture &get_texture() const - { - return texture; - } + void set_id(string name) { id = move(name); } + const string &get_id() const { return id; } + const Texture &get_texture() const { return texture; } private: string id; @@ -552,8 +467,9 @@ private: Texture texture; }; -StaticTexture::StaticTexture(string id_, GLuint image_, unsigned width, unsigned height, bool linear, bool mipmap, - GLenum address) +StaticTexture::StaticTexture(string id_, GLuint image_, + unsigned width, unsigned height, bool linear, bool mipmap, + GLenum address) : id(std::move(id_)), image(image_) { texture.texture.width = width; @@ -615,8 +531,9 @@ CommonResources::CommonResources() glBufferData(GL_ARRAY_BUFFER, sizeof(quad_data), quad_data, GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, 0); - quad_program = gl_core_cross_compile_program(opaque_vert, sizeof(opaque_vert), - opaque_frag, sizeof(opaque_frag), &quad_loc, true); + quad_program = gl_core_cross_compile_program( + opaque_vert, sizeof(opaque_vert), + opaque_frag, sizeof(opaque_frag), &quad_loc, true); } CommonResources::~CommonResources() @@ -643,13 +560,9 @@ public: GLuint get_image() const { return image; } GLuint get_framebuffer() const { return framebuffer; } - void clear(); void copy(const CommonResources &common, GLuint image); void copy_partial(const CommonResources &common, GLuint image, float rx, float ry); - bool is_complete() const - { - return complete; - } + bool is_complete() const { return complete; } unsigned get_levels() const { return levels; } @@ -766,23 +679,8 @@ void Framebuffer::init() glBindTexture(GL_TEXTURE_2D, 0); } -void Framebuffer::clear() -{ - if (!complete) - return; - - glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - glClear(GL_COLOR_BUFFER_BIT); - glBindFramebuffer(GL_FRAMEBUFFER, 0); -} - void Framebuffer::copy(const CommonResources &common, GLuint image) { - if (!complete) - return; - glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); glActiveTexture(GL_TEXTURE2); glBindTexture(GL_TEXTURE_2D, image); @@ -825,8 +723,6 @@ void Framebuffer::copy(const CommonResources &common, GLuint image) void Framebuffer::copy_partial(const CommonResources &common, GLuint image, float rx, float ry) { GLuint vbo; - if (!complete) - return; glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); glActiveTexture(GL_TEXTURE2); @@ -1539,17 +1435,20 @@ void Pass::set_shader(GLenum stage, const uint32_t *spirv, size_t spirv_words) { - if (stage == GL_VERTEX_SHADER) + switch (stage) { - vertex_shader.clear(); - vertex_shader.insert(end(vertex_shader), - spirv, spirv + spirv_words); - } - else if (stage == GL_FRAGMENT_SHADER) - { - fragment_shader.clear(); - fragment_shader.insert(end(fragment_shader), - spirv, spirv + spirv_words); + case GL_VERTEX_SHADER: + vertex_shader.clear(); + vertex_shader.insert(end(vertex_shader), + spirv, spirv + spirv_words); + break; + case GL_FRAGMENT_SHADER: + fragment_shader.clear(); + fragment_shader.insert(end(fragment_shader), + spirv, spirv + spirv_words); + break; + default: + break; } } @@ -1558,7 +1457,8 @@ void Pass::add_parameter(unsigned index, const std::string &id) parameters.push_back({ id, index, unsigned(parameters.size()) }); } -void Pass::set_semantic_texture(slang_texture_semantic semantic, const Texture &texture) +void Pass::set_semantic_texture(slang_texture_semantic semantic, + const Texture &texture) { if (reflection.semantic_textures[semantic][0].texture) { @@ -1834,23 +1734,23 @@ public: void set_frame_direction(int32_t direction); void set_pass_name(unsigned pass, const char *name); - void add_static_texture(unique_ptr texture); + void add_static_texture(unique_ptr texture); void add_parameter(unsigned pass, unsigned parameter_index, const std::string &id); void set_num_passes(unsigned passes); private: - vector> passes; + vector> passes; vector pass_info; vector>> deferred_calls; - std::unique_ptr copy_framebuffer; - gl_core::CommonResources common; + std::unique_ptr copy_framebuffer; + gl_core_shader::CommonResources common; gl_core_filter_chain_texture input_texture = {}; bool init_history(); bool init_feedback(); bool init_alias(); - vector> original_history; + vector> original_history; void update_history(); bool require_clear = false; void clear_history_and_feedback(); @@ -1865,7 +1765,7 @@ void gl_core_filter_chain::update_history_info() for (i = 0; i < original_history.size(); i++) { - gl_core::Texture *source = (gl_core::Texture*) + gl_core_shader::Texture *source = (gl_core_shader::Texture*) &common.original_history[i]; if (!source) @@ -1888,11 +1788,11 @@ void gl_core_filter_chain::update_feedback_info() for (i = 0; i < passes.size() - 1; i++) { - gl_core::Framebuffer *fb = passes[i]->get_feedback_framebuffer(); + gl_core_shader::Framebuffer *fb = passes[i]->get_feedback_framebuffer(); if (!fb) continue; - gl_core::Texture *source = (gl_core::Texture*) + gl_core_shader::Texture *source = (gl_core_shader::Texture*) &common.framebuffer_feedback[i]; if (!source) @@ -1922,19 +1822,19 @@ void gl_core_filter_chain::build_offscreen_passes(const gl_core_viewport &vp) update_history_info(); update_feedback_info(); - const gl_core::Texture original = { + const gl_core_shader::Texture original = { input_texture, passes.front()->get_source_filter(), passes.front()->get_mip_filter(), passes.front()->get_address_mode(), }; - gl_core::Texture source = original; + gl_core_shader::Texture source = original; for (i = 0; i < passes.size() - 1; i++) { passes[i]->build_commands(original, source, vp, nullptr); - const gl_core::Framebuffer &fb = passes[i]->get_framebuffer(); + const gl_core_shader::Framebuffer &fb = passes[i]->get_framebuffer(); source.texture.image = fb.get_image(); source.texture.width = fb.get_size().width; @@ -1949,8 +1849,8 @@ void gl_core_filter_chain::build_offscreen_passes(const gl_core_viewport &vp) void gl_core_filter_chain::update_history() { - unique_ptr tmp; - unique_ptr &back = original_history.back(); + unique_ptr tmp; + unique_ptr &back = original_history.back(); swap(back, tmp); if (input_texture.width != tmp->get_size().width || @@ -1959,7 +1859,8 @@ void gl_core_filter_chain::update_history() && input_texture.format != tmp->get_format())) tmp->set_size({ input_texture.width, input_texture.height }, input_texture.format); - tmp->copy(common, input_texture.image); + if (tmp->is_complete()) + tmp->copy(common, input_texture.image); /* Should ring buffer, but we don't have *that* many passes. */ move_backward(begin(original_history), end(original_history) - 1, end(original_history)); @@ -1988,8 +1889,8 @@ void gl_core_filter_chain::build_viewport_pass( require_clear = false; } - gl_core::Texture source; - const gl_core::Texture original = { + gl_core_shader::Texture source; + const gl_core_shader::Texture original = { input_texture, passes.front()->get_source_filter(), passes.front()->get_mip_filter(), @@ -2007,7 +1908,7 @@ void gl_core_filter_chain::build_viewport_pass( } else { - const gl_core::Framebuffer &fb = passes[passes.size() - 2] + const gl_core_shader::Framebuffer &fb = passes[passes.size() - 2] ->get_framebuffer(); source.texture.image = fb.get_image(); source.texture.width = fb.get_size().width; @@ -2051,7 +1952,7 @@ bool gl_core_filter_chain::init_history() common.original_history.resize(required_images); for (i = 0; i < required_images; i++) - original_history.emplace_back(new gl_core::Framebuffer(0, 1)); + original_history.emplace_back(new gl_core_shader::Framebuffer(0, 1)); RARCH_LOG("[GLCore]: Using history of %u frames.\n", unsigned(required_images)); @@ -2172,7 +2073,7 @@ void gl_core_filter_chain::set_num_passes(unsigned num_passes) for (i = 0; i < num_passes; i++) { - passes.emplace_back(new gl_core::Pass(i + 1 == num_passes)); + passes.emplace_back(new gl_core_shader::Pass(i + 1 == num_passes)); passes.back()->set_common_resources(&common); passes.back()->set_pass_number(i); } @@ -2221,12 +2122,15 @@ void gl_core_filter_chain::clear_history_and_feedback() { unsigned i; for (i = 0; i < original_history.size(); i++) - original_history[i]->clear(); + { + if (original_history[i]->is_complete()) + gl_core_framebuffer_clear(original_history[i]->get_framebuffer()); + } for (i = 0; i < passes.size(); i++) { - gl_core::Framebuffer *fb = passes[i]->get_feedback_framebuffer(); - if (fb) - fb->clear(); + gl_core_shader::Framebuffer *fb = passes[i]->get_feedback_framebuffer(); + if (fb && fb->is_complete()) + gl_core_framebuffer_clear(fb->get_framebuffer()); } } @@ -2241,7 +2145,7 @@ void gl_core_filter_chain::set_input_texture( input_texture.padded_height != input_texture.height) { if (!copy_framebuffer) - copy_framebuffer.reset(new gl_core::Framebuffer(texture.format, 1)); + copy_framebuffer.reset(new gl_core_shader::Framebuffer(texture.format, 1)); if (input_texture.width != copy_framebuffer->get_size().width || input_texture.height != copy_framebuffer->get_size().height || @@ -2249,16 +2153,17 @@ void gl_core_filter_chain::set_input_texture( input_texture.format != copy_framebuffer->get_format())) copy_framebuffer->set_size({ input_texture.width, input_texture.height }, input_texture.format); - copy_framebuffer->copy_partial(common, input_texture.image, - float(input_texture.width) - / input_texture.padded_width, - float(input_texture.height) - / input_texture.padded_height); + if (copy_framebuffer->is_complete()) + copy_framebuffer->copy_partial(common, input_texture.image, + float(input_texture.width) + / input_texture.padded_width, + float(input_texture.height) + / input_texture.padded_height); input_texture.image = copy_framebuffer->get_image(); } } -void gl_core_filter_chain::add_static_texture(unique_ptr texture) +void gl_core_filter_chain::add_static_texture(unique_ptr texture) { common.luts.push_back(move(texture)); } @@ -2287,7 +2192,7 @@ void gl_core_filter_chain::set_pass_name(unsigned pass, const char *name) passes[pass]->set_name(name); } -static unique_ptr gl_core_filter_chain_load_lut( +static unique_ptr gl_core_filter_chain_load_lut( gl_core_filter_chain *chain, const video_shader_lut *shader) { @@ -2302,7 +2207,7 @@ static unique_ptr gl_core_filter_chain_load_lut( if (!image_texture_load(&image, shader->path)) return {}; - unsigned levels = shader->mipmap ? gl_core::num_miplevels(image.width, image.height) : 1; + unsigned levels = shader->mipmap ? gl_core_shader::num_miplevels(image.width, image.height) : 1; glGenTextures(1, &tex); glBindTexture(GL_TEXTURE_2D, tex); @@ -2323,11 +2228,11 @@ static unique_ptr gl_core_filter_chain_load_lut( if (image.pixels) image_texture_free(&image); - return unique_ptr(new gl_core::StaticTexture(shader->id, + return unique_ptr(new gl_core_shader::StaticTexture(shader->id, tex, image.width, image.height, shader->filter != RARCH_FILTER_NEAREST, levels > 1, - gl_core::address_to_gl(gl_core::wrap_to_address(shader->wrap)))); + gl_core_shader::address_to_gl(gl_core_shader::wrap_to_address(shader->wrap)))); } static bool gl_core_filter_chain_load_luts( @@ -2337,7 +2242,7 @@ static bool gl_core_filter_chain_load_luts( unsigned i; for (i = 0; i < shader->luts; i++) { - unique_ptr image = gl_core_filter_chain_load_lut(chain, &shader->lut[i]); + unique_ptr image = gl_core_filter_chain_load_lut(chain, &shader->lut[i]); if (!image) { RARCH_ERR("[GLCore]: Failed to load LUT \"%s\".\n", shader->lut[i].path); @@ -2372,11 +2277,11 @@ gl_core_filter_chain_t *gl_core_filter_chain_create_default( chain->set_pass_info(0, pass_info); chain->set_shader(0, GL_VERTEX_SHADER, - gl_core::opaque_vert, - sizeof(gl_core::opaque_vert) / sizeof(uint32_t)); + gl_core_shader::opaque_vert, + sizeof(gl_core_shader::opaque_vert) / sizeof(uint32_t)); chain->set_shader(0, GL_FRAGMENT_SHADER, - gl_core::opaque_frag, - sizeof(gl_core::opaque_frag) / sizeof(uint32_t)); + gl_core_shader::opaque_frag, + sizeof(gl_core_shader::opaque_frag) / sizeof(uint32_t)); if (!chain->init()) return nullptr; @@ -2510,7 +2415,7 @@ gl_core_filter_chain_t *gl_core_filter_chain_create_from_preset( pass->filter == RARCH_FILTER_LINEAR ? GL_CORE_FILTER_CHAIN_LINEAR : GL_CORE_FILTER_CHAIN_NEAREST; } - pass_info.address = gl_core::wrap_to_address(pass->wrap); + pass_info.address = gl_core_shader::wrap_to_address(pass->wrap); pass_info.max_levels = 1; /* TODO: Expose max_levels in slangp. @@ -2550,7 +2455,7 @@ gl_core_filter_chain_t *gl_core_filter_chain_create_from_preset( } else { - pass_info.rt_format = gl_core::convert_glslang_format(output.meta.rt_format); + pass_info.rt_format = gl_core_shader::convert_glslang_format(output.meta.rt_format); RARCH_LOG("[slang]: Using render target format %s for pass output #%u.\n", glslang_format_to_string(output.meta.rt_format), i); } @@ -2564,7 +2469,7 @@ gl_core_filter_chain_t *gl_core_filter_chain_create_from_preset( else if (pass->fbo.fp_fbo) output.meta.rt_format = SLANG_FORMAT_R16G16B16A16_SFLOAT; - pass_info.rt_format = gl_core::convert_glslang_format(output.meta.rt_format); + pass_info.rt_format = gl_core_shader::convert_glslang_format(output.meta.rt_format); RARCH_LOG("[slang]: Using render target format %s for pass output #%u.\n", glslang_format_to_string(output.meta.rt_format), i); @@ -2629,13 +2534,13 @@ gl_core_filter_chain_t *gl_core_filter_chain_create_from_preset( chain->set_shader(shader->passes, GL_VERTEX_SHADER, - gl_core::opaque_vert, - sizeof(gl_core::opaque_vert) / sizeof(uint32_t)); + gl_core_shader::opaque_vert, + sizeof(gl_core_shader::opaque_vert) / sizeof(uint32_t)); chain->set_shader(shader->passes, GL_FRAGMENT_SHADER, - gl_core::opaque_frag, - sizeof(gl_core::opaque_frag) / sizeof(uint32_t)); + gl_core_shader::opaque_frag, + sizeof(gl_core_shader::opaque_frag) / sizeof(uint32_t)); } if (!video_shader_resolve_current_parameters(conf, shader.get())) @@ -2650,6 +2555,7 @@ gl_core_filter_chain_t *gl_core_filter_chain_create_from_preset( return chain.release(); error: + config_file_free(conf); return nullptr; } From 90874b434e60e3c982da5811c628975036691748 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 22 Jan 2020 12:09:08 +0100 Subject: [PATCH 126/148] (shader_vulkan.cpp) Move more C code to vulkan_common.c --- gfx/common/vulkan_common.c | 78 ++++++++++++++++++++++++++ gfx/common/vulkan_common.h | 7 +++ gfx/drivers_shader/shader_vulkan.cpp | 82 ++-------------------------- 3 files changed, 89 insertions(+), 78 deletions(-) diff --git a/gfx/common/vulkan_common.c b/gfx/common/vulkan_common.c index 0196042ec7..c2f28bf480 100644 --- a/gfx/common/vulkan_common.c +++ b/gfx/common/vulkan_common.c @@ -3385,3 +3385,81 @@ void vulkan_framebuffer_generate_mips( * the dependency chain will ensure we don't start * next pass until the mipchain is complete. */ } + +void vulkan_framebuffer_copy(VkImage image, + struct Size2D size, + VkCommandBuffer cmd, + VkImage src_image, VkImageLayout src_layout) +{ + VkImageCopy region; + + vulkan_image_layout_transition_levels(cmd, image,VK_REMAINING_MIP_LEVELS, + VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + 0, VK_ACCESS_TRANSFER_WRITE_BIT, + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, + VK_PIPELINE_STAGE_TRANSFER_BIT); + + memset(®ion, 0, sizeof(region)); + + region.srcSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + region.srcSubresource.layerCount = 1; + region.dstSubresource = region.srcSubresource; + region.extent.width = size.width; + region.extent.height = size.height; + region.extent.depth = 1; + + vkCmdCopyImage(cmd, + src_image, src_layout, + image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + 1, ®ion); + + vulkan_image_layout_transition_levels(cmd, + image, + VK_REMAINING_MIP_LEVELS, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, + VK_ACCESS_TRANSFER_WRITE_BIT, + VK_ACCESS_SHADER_READ_BIT, + VK_PIPELINE_STAGE_TRANSFER_BIT, + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT); +} + +void vulkan_framebuffer_clear(VkImage image, VkCommandBuffer cmd) +{ + VkClearColorValue color; + VkImageSubresourceRange range; + + vulkan_image_layout_transition_levels(cmd, + image, + VK_REMAINING_MIP_LEVELS, + VK_IMAGE_LAYOUT_UNDEFINED, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + 0, + VK_ACCESS_TRANSFER_WRITE_BIT, + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, + VK_PIPELINE_STAGE_TRANSFER_BIT); + + memset(&color, 0, sizeof(color)); + memset(&range, 0, sizeof(range)); + + range.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + range.levelCount = 1; + range.layerCount = 1; + + vkCmdClearColorImage(cmd, + image, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + &color, + 1, + &range); + + vulkan_image_layout_transition_levels(cmd, + image, + VK_REMAINING_MIP_LEVELS, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, + VK_ACCESS_TRANSFER_WRITE_BIT, + VK_ACCESS_SHADER_READ_BIT, + VK_PIPELINE_STAGE_TRANSFER_BIT, + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT); +} diff --git a/gfx/common/vulkan_common.h b/gfx/common/vulkan_common.h index 0f55c46e91..c6e974c25c 100644 --- a/gfx/common/vulkan_common.h +++ b/gfx/common/vulkan_common.h @@ -609,6 +609,13 @@ void vulkan_framebuffer_generate_mips( unsigned levels ); +void vulkan_framebuffer_copy(VkImage image, + struct Size2D size, + VkCommandBuffer cmd, + VkImage src_image, VkImageLayout src_layout); + +void vulkan_framebuffer_clear(VkImage image, VkCommandBuffer cmd); + void vulkan_initialize_render_pass(VkDevice device, VkFormat format, VkRenderPass *render_pass); diff --git a/gfx/drivers_shader/shader_vulkan.cpp b/gfx/drivers_shader/shader_vulkan.cpp index 0e92b33756..8f092f00c3 100644 --- a/gfx/drivers_shader/shader_vulkan.cpp +++ b/gfx/drivers_shader/shader_vulkan.cpp @@ -231,9 +231,6 @@ class Framebuffer VkFramebuffer get_framebuffer() const { return framebuffer; } VkRenderPass get_render_pass() const { return render_pass; } - void clear(VkCommandBuffer cmd); - void copy(VkCommandBuffer cmd, VkImage image, VkImageLayout layout); - unsigned get_levels() const { return levels; } private: @@ -769,7 +766,8 @@ void vulkan_filter_chain::update_history(DeferredDisposer &disposer, && input_texture.format != tmp->get_format())) tmp->set_size(disposer, { input_texture.width, input_texture.height }, input_texture.format); - tmp->copy(cmd, input_texture.image, src_layout); + vulkan_framebuffer_copy(tmp->get_image(), tmp->get_size(), + cmd, input_texture.image, src_layout); /* Transition input texture back. */ if (input_texture.layout != VK_IMAGE_LAYOUT_GENERAL) @@ -1096,12 +1094,12 @@ void vulkan_filter_chain::clear_history_and_feedback(VkCommandBuffer cmd) { unsigned i; for (i = 0; i < original_history.size(); i++) - original_history[i]->clear(cmd); + vulkan_framebuffer_clear(original_history[i]->get_image(), cmd); for (i = 0; i < passes.size(); i++) { Framebuffer *fb = passes[i]->get_feedback_framebuffer(); if (fb) - fb->clear(cmd); + vulkan_framebuffer_clear(fb->get_image(), cmd); } } @@ -2401,78 +2399,6 @@ Framebuffer::Framebuffer( init(nullptr); } -void Framebuffer::clear(VkCommandBuffer cmd) -{ - VkClearColorValue color; - VkImageSubresourceRange range; - - vulkan_image_layout_transition_levels(cmd, - image, - VK_REMAINING_MIP_LEVELS, - VK_IMAGE_LAYOUT_UNDEFINED, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - 0, - VK_ACCESS_TRANSFER_WRITE_BIT, - VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, - VK_PIPELINE_STAGE_TRANSFER_BIT); - - memset(&color, 0, sizeof(color)); - memset(&range, 0, sizeof(range)); - - range.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - range.levelCount = 1; - range.layerCount = 1; - - vkCmdClearColorImage(cmd, - image, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - &color, - 1, - &range); - - vulkan_image_layout_transition_levels(cmd, - image, - VK_REMAINING_MIP_LEVELS, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, - VK_ACCESS_TRANSFER_WRITE_BIT, - VK_ACCESS_SHADER_READ_BIT, - VK_PIPELINE_STAGE_TRANSFER_BIT, - VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT); -} - -void Framebuffer::copy(VkCommandBuffer cmd, - VkImage src_image, VkImageLayout src_layout) -{ - VkImageCopy region; - - vulkan_image_layout_transition_levels(cmd, image,VK_REMAINING_MIP_LEVELS, - VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - 0, VK_ACCESS_TRANSFER_WRITE_BIT, - VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, - VK_PIPELINE_STAGE_TRANSFER_BIT); - - memset(®ion, 0, sizeof(region)); - - region.srcSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - region.srcSubresource.layerCount = 1; - region.dstSubresource = region.srcSubresource; - region.extent.width = size.width; - region.extent.height = size.height; - region.extent.depth = 1; - - vkCmdCopyImage(cmd, - src_image, src_layout, - image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - 1, ®ion); - - vulkan_image_layout_transition_levels(cmd, image,VK_REMAINING_MIP_LEVELS, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, - VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_SHADER_READ_BIT, - VK_PIPELINE_STAGE_TRANSFER_BIT, - VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT); -} - void Framebuffer::init(DeferredDisposer *disposer) { VkMemoryRequirements mem_reqs; From 376ad6d61db6e4be95e39029c4cf2d455084f5e4 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 22 Jan 2020 13:12:00 +0100 Subject: [PATCH 127/148] move more C functions over to gl_core.c --- gfx/common/gl_core_common.h | 18 ++++ gfx/drivers/gl_core.c | 125 ++++++++++++++++++++++++ gfx/drivers_shader/shader_gl_core.cpp | 134 +++----------------------- gfx/drivers_shader/shader_vulkan.cpp | 10 +- 4 files changed, 165 insertions(+), 122 deletions(-) diff --git a/gfx/common/gl_core_common.h b/gfx/common/gl_core_common.h index 98d6938eab..b068d4c308 100644 --- a/gfx/common/gl_core_common.h +++ b/gfx/common/gl_core_common.h @@ -143,6 +143,24 @@ GLuint gl_core_compile_shader(GLenum stage, const char *source); void gl_core_framebuffer_clear(GLuint id); +void gl_core_framebuffer_copy( + GLuint fb_id, + GLuint quad_program, + GLuint quad_vbo, + GLint flat_ubo_vertex, + struct Size2D size, + GLuint image); + +void gl_core_framebuffer_copy_partial( + GLuint fb_id, + GLuint quad_program, + GLint flat_ubo_vertex, + struct Size2D size, + GLuint image, + float rx, float ry); + +void gl_core_build_default_matrix(float *data); + uint32_t gl_core_get_cross_compiler_target_version(void); RETRO_END_DECLS diff --git a/gfx/drivers/gl_core.c b/gfx/drivers/gl_core.c index 299f82333f..0579f396e4 100644 --- a/gfx/drivers/gl_core.c +++ b/gfx/drivers/gl_core.c @@ -53,6 +53,131 @@ static const struct video_ortho gl_core_default_ortho = {0, 1, 0, 1, -1, 1}; +void gl_core_build_default_matrix(float *data) +{ + data[0] = 2.0f; + data[1] = 0.0f; + data[2] = 0.0f; + data[3] = 0.0f; + data[4] = 0.0f; + data[5] = 2.0f; + data[6] = 0.0f; + data[7] = 0.0f; + data[8] = 0.0f; + data[9] = 0.0f; + data[10] = 2.0f; + data[11] = 0.0f; + data[12] = -1.0f; + data[13] = -1.0f; + data[14] = 0.0f; + data[15] = 1.0f; +} + +void gl_core_framebuffer_copy( + GLuint fb_id, + GLuint quad_program, + GLuint quad_vbo, + GLint flat_ubo_vertex, + struct Size2D size, + GLuint image) +{ + glBindFramebuffer(GL_FRAMEBUFFER, fb_id); + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, image); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glViewport(0, 0, size.width, size.height); + glClear(GL_COLOR_BUFFER_BIT); + + glUseProgram(quad_program); + if (flat_ubo_vertex >= 0) + { + float mvp[16]; + gl_core_build_default_matrix(mvp); + glUniform4fv(flat_ubo_vertex, 4, mvp); + } + + /* Draw quad */ + glDisable(GL_CULL_FACE); + glDisable(GL_BLEND); + glDisable(GL_DEPTH_TEST); + glEnableVertexAttribArray(0); + glEnableVertexAttribArray(1); + glBindBuffer(GL_ARRAY_BUFFER, quad_vbo); + glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(float), + (void *)((uintptr_t)(0))); + glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(float), + (void *)((uintptr_t)(2 * sizeof(float)))); + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + glBindBuffer(GL_ARRAY_BUFFER, 0); + glDisableVertexAttribArray(0); + glDisableVertexAttribArray(1); + + glUseProgram(0); + glBindTexture(GL_TEXTURE_2D, 0); + glBindFramebuffer(GL_FRAMEBUFFER, 0); +} + +void gl_core_framebuffer_copy_partial( + GLuint fb_id, + GLuint quad_program, + GLint flat_ubo_vertex, + struct Size2D size, + GLuint image, + float rx, float ry) +{ + GLuint vbo; + const float quad_data[] = { + 0.0f, 0.0f, 0.0f, 0.0f, + 1.0f, 0.0f, rx, 0.0f, + 0.0f, 1.0f, 0.0f, ry, + 1.0f, 1.0f, rx, ry, + }; + + glBindFramebuffer(GL_FRAMEBUFFER, fb_id); + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, image); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glViewport(0, 0, size.width, size.height); + glClear(GL_COLOR_BUFFER_BIT); + + glUseProgram(quad_program); + if (flat_ubo_vertex >= 0) + { + float mvp[16]; + gl_core_build_default_matrix(mvp); + glUniform4fv(flat_ubo_vertex, 4, mvp); + } + glDisable(GL_CULL_FACE); + glDisable(GL_BLEND); + glDisable(GL_DEPTH_TEST); + glEnableVertexAttribArray(0); + glEnableVertexAttribArray(1); + + /* A bit crude, but heeeey. */ + glGenBuffers(1, &vbo); + glBindBuffer(GL_ARRAY_BUFFER, vbo); + + glBufferData(GL_ARRAY_BUFFER, sizeof(quad_data), quad_data, GL_STREAM_DRAW); + glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(float), + (void *)((uintptr_t)(0))); + glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(float), + (void *)((uintptr_t)(2 * sizeof(float)))); + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + glBindBuffer(GL_ARRAY_BUFFER, 0); + glDeleteBuffers(1, &vbo); + glDisableVertexAttribArray(0); + glDisableVertexAttribArray(1); + glUseProgram(0); + glBindTexture(GL_TEXTURE_2D, 0); + glBindFramebuffer(GL_FRAMEBUFFER, 0); +} + static void gl_core_deinit_fences(gl_core_t *gl) { unsigned i; diff --git a/gfx/drivers_shader/shader_gl_core.cpp b/gfx/drivers_shader/shader_gl_core.cpp index 92babb17be..dbd63c8255 100644 --- a/gfx/drivers_shader/shader_gl_core.cpp +++ b/gfx/drivers_shader/shader_gl_core.cpp @@ -293,25 +293,6 @@ static unsigned num_miplevels(unsigned width, unsigned height) return levels; } -static void build_default_matrix(float *data) -{ - data[0] = 2.0f; - data[1] = 0.0f; - data[2] = 0.0f; - data[3] = 0.0f; - data[4] = 0.0f; - data[5] = 2.0f; - data[6] = 0.0f; - data[7] = 0.0f; - data[8] = 0.0f; - data[9] = 0.0f; - data[10] = 2.0f; - data[11] = 0.0f; - data[12] = -1.0f; - data[13] = -1.0f; - data[14] = 0.0f; - data[15] = 1.0f; -} static void build_vec4(float *data, unsigned width, unsigned height) { @@ -560,8 +541,6 @@ public: GLuint get_image() const { return image; } GLuint get_framebuffer() const { return framebuffer; } - void copy(const CommonResources &common, GLuint image); - void copy_partial(const CommonResources &common, GLuint image, float rx, float ry); bool is_complete() const { return complete; } unsigned get_levels() const { return levels; } @@ -679,100 +658,6 @@ void Framebuffer::init() glBindTexture(GL_TEXTURE_2D, 0); } -void Framebuffer::copy(const CommonResources &common, GLuint image) -{ - glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, image); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glViewport(0, 0, size.width, size.height); - glClear(GL_COLOR_BUFFER_BIT); - - glUseProgram(common.quad_program); - if (common.quad_loc.flat_ubo_vertex >= 0) - { - float mvp[16]; - build_default_matrix(mvp); - glUniform4fv(common.quad_loc.flat_ubo_vertex, 4, mvp); - } - - /* Draw quad */ - glDisable(GL_CULL_FACE); - glDisable(GL_BLEND); - glDisable(GL_DEPTH_TEST); - glEnableVertexAttribArray(0); - glEnableVertexAttribArray(1); - glBindBuffer(GL_ARRAY_BUFFER, common.quad_vbo); - glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(float), - reinterpret_cast(uintptr_t(0))); - glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(float), - reinterpret_cast(uintptr_t(2 * sizeof(float)))); - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - glBindBuffer(GL_ARRAY_BUFFER, 0); - glDisableVertexAttribArray(0); - glDisableVertexAttribArray(1); - - glUseProgram(0); - glBindTexture(GL_TEXTURE_2D, 0); - glBindFramebuffer(GL_FRAMEBUFFER, 0); -} - -void Framebuffer::copy_partial(const CommonResources &common, GLuint image, float rx, float ry) -{ - GLuint vbo; - - glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, image); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glViewport(0, 0, size.width, size.height); - glClear(GL_COLOR_BUFFER_BIT); - - glUseProgram(common.quad_program); - if (common.quad_loc.flat_ubo_vertex >= 0) - { - float mvp[16]; - build_default_matrix(mvp); - glUniform4fv(common.quad_loc.flat_ubo_vertex, 4, mvp); - } - glDisable(GL_CULL_FACE); - glDisable(GL_BLEND); - glDisable(GL_DEPTH_TEST); - glEnableVertexAttribArray(0); - glEnableVertexAttribArray(1); - - /* A bit crude, but heeeey. */ - glGenBuffers(1, &vbo); - glBindBuffer(GL_ARRAY_BUFFER, vbo); - - const float quad_data[] = { - 0.0f, 0.0f, 0.0f, 0.0f, - 1.0f, 0.0f, rx, 0.0f, - 0.0f, 1.0f, 0.0f, ry, - 1.0f, 1.0f, rx, ry, - }; - - glBufferData(GL_ARRAY_BUFFER, sizeof(quad_data), quad_data, GL_STREAM_DRAW); - glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(float), - reinterpret_cast(uintptr_t(0))); - glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(float), - reinterpret_cast(uintptr_t(2 * sizeof(float)))); - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - glBindBuffer(GL_ARRAY_BUFFER, 0); - glDeleteBuffers(1, &vbo); - glDisableVertexAttribArray(0); - glDisableVertexAttribArray(1); - glUseProgram(0); - glBindTexture(GL_TEXTURE_2D, 0); - glBindFramebuffer(GL_FRAMEBUFFER, 0); -} - Framebuffer::~Framebuffer() { if (framebuffer != 0) @@ -1505,7 +1390,7 @@ void Pass::build_semantics(uint8_t *buffer, memcpy(buffer + offset, mvp, sizeof(float) * 16); else - build_default_matrix(reinterpret_cast( + gl_core_build_default_matrix(reinterpret_cast( buffer + offset)); } @@ -1518,7 +1403,7 @@ void Pass::build_semantics(uint8_t *buffer, memcpy(push_constant_buffer.data() + offset, mvp, sizeof(float) * 16); else - build_default_matrix(reinterpret_cast( + gl_core_build_default_matrix(reinterpret_cast( push_constant_buffer.data() + offset)); } @@ -1860,7 +1745,13 @@ void gl_core_filter_chain::update_history() tmp->set_size({ input_texture.width, input_texture.height }, input_texture.format); if (tmp->is_complete()) - tmp->copy(common, input_texture.image); + gl_core_framebuffer_copy( + tmp->get_framebuffer(), + common.quad_program, + common.quad_vbo, + common.quad_loc.flat_ubo_vertex, + tmp->get_size(), + input_texture.image); /* Should ring buffer, but we don't have *that* many passes. */ move_backward(begin(original_history), end(original_history) - 1, end(original_history)); @@ -2154,7 +2045,12 @@ void gl_core_filter_chain::set_input_texture( copy_framebuffer->set_size({ input_texture.width, input_texture.height }, input_texture.format); if (copy_framebuffer->is_complete()) - copy_framebuffer->copy_partial(common, input_texture.image, + gl_core_framebuffer_copy_partial( + copy_framebuffer->get_framebuffer(), + common.quad_program, + common.quad_loc.flat_ubo_vertex, + copy_framebuffer->get_size(), + input_texture.image, float(input_texture.width) / input_texture.padded_width, float(input_texture.height) diff --git a/gfx/drivers_shader/shader_vulkan.cpp b/gfx/drivers_shader/shader_vulkan.cpp index 8f092f00c3..7620680d65 100644 --- a/gfx/drivers_shader/shader_vulkan.cpp +++ b/gfx/drivers_shader/shader_vulkan.cpp @@ -2265,7 +2265,9 @@ void Pass::build_commands( build_semantics(sets[sync_index], u, mvp, original, source); if (reflection.ubo_stage_mask) - vulkan_set_uniform_buffer(device, sets[sync_index], reflection.ubo_binding, + vulkan_set_uniform_buffer(device, + sets[sync_index], + reflection.ubo_binding, common->ubo->get_buffer(), ubo_offset + sync_index * common->ubo_sync_index_stride, reflection.ubo_size); @@ -2285,7 +2287,8 @@ void Pass::build_commands( VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, 0, - VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT); @@ -2371,7 +2374,8 @@ void Pass::build_commands( /* Barrier to sync with next pass. */ vulkan_image_layout_transition_levels( cmd, - framebuffer->get_image(),VK_REMAINING_MIP_LEVELS, + framebuffer->get_image(), + VK_REMAINING_MIP_LEVELS, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, From 8f1aa8c2c31dc95a4583b5aeb6830ba0c807554c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 22 Jan 2020 13:52:14 +0100 Subject: [PATCH 128/148] (shader_gl_core.cpp) Cleanups --- gfx/drivers_shader/shader_gl_core.cpp | 67 +++++++++++++-------------- 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/gfx/drivers_shader/shader_gl_core.cpp b/gfx/drivers_shader/shader_gl_core.cpp index dbd63c8255..6cd7c25062 100644 --- a/gfx/drivers_shader/shader_gl_core.cpp +++ b/gfx/drivers_shader/shader_gl_core.cpp @@ -1096,8 +1096,7 @@ Size2D Pass::get_output_size(const Size2D &original, const Size2D &source) const void Pass::end_frame() { - if (framebuffer_feedback) - swap(framebuffer, framebuffer_feedback); + swap(framebuffer, framebuffer_feedback); } void Pass::build_semantic_vec4(uint8_t *data, slang_semantic semantic, @@ -1636,7 +1635,6 @@ private: bool init_feedback(); bool init_alias(); vector> original_history; - void update_history(); bool require_clear = false; void clear_history_and_feedback(); void update_feedback_info(); @@ -1668,8 +1666,6 @@ void gl_core_filter_chain::update_history_info() void gl_core_filter_chain::update_feedback_info() { unsigned i; - if (common.framebuffer_feedback.empty()) - return; for (i = 0; i < passes.size() - 1; i++) { @@ -1705,7 +1701,8 @@ void gl_core_filter_chain::build_offscreen_passes(const gl_core_viewport &vp) } update_history_info(); - update_feedback_info(); + if (!common.framebuffer_feedback.empty()) + update_feedback_info(); const gl_core_shader::Texture original = { input_texture, @@ -1732,32 +1729,6 @@ void gl_core_filter_chain::build_offscreen_passes(const gl_core_viewport &vp) } } -void gl_core_filter_chain::update_history() -{ - unique_ptr tmp; - unique_ptr &back = original_history.back(); - swap(back, tmp); - - if (input_texture.width != tmp->get_size().width || - input_texture.height != tmp->get_size().height || - (input_texture.format != 0 - && input_texture.format != tmp->get_format())) - tmp->set_size({ input_texture.width, input_texture.height }, input_texture.format); - - if (tmp->is_complete()) - gl_core_framebuffer_copy( - tmp->get_framebuffer(), - common.quad_program, - common.quad_vbo, - common.quad_loc.flat_ubo_vertex, - tmp->get_size(), - input_texture.image); - - /* Should ring buffer, but we don't have *that* many passes. */ - move_backward(begin(original_history), end(original_history) - 1, end(original_history)); - swap(original_history.front(), tmp); -} - void gl_core_filter_chain::end_frame() { /* If we need to keep old frames, copy it after fragment is complete. @@ -1765,7 +1736,31 @@ void gl_core_filter_chain::end_frame() * pass is the last that reads from * the history and dispatch the copy earlier. */ if (!original_history.empty()) - update_history(); + { + /* Update history */ + unique_ptr tmp; + unique_ptr &back = original_history.back(); + swap(back, tmp); + + if (input_texture.width != tmp->get_size().width || + input_texture.height != tmp->get_size().height || + (input_texture.format != 0 + && input_texture.format != tmp->get_format())) + tmp->set_size({ input_texture.width, input_texture.height }, input_texture.format); + + if (tmp->is_complete()) + gl_core_framebuffer_copy( + tmp->get_framebuffer(), + common.quad_program, + common.quad_vbo, + common.quad_loc.flat_ubo_vertex, + tmp->get_size(), + input_texture.image); + + /* Should ring buffer, but we don't have *that* many passes. */ + move_backward(begin(original_history), end(original_history) - 1, end(original_history)); + swap(original_history.front(), tmp); + } } void gl_core_filter_chain::build_viewport_pass( @@ -1813,7 +1808,11 @@ void gl_core_filter_chain::build_viewport_pass( /* For feedback FBOs, swap current and previous. */ for (i = 0; i < passes.size(); i++) - passes[i]->end_frame(); + { + gl_core_shader::Framebuffer *fb = passes[i]->get_feedback_framebuffer(); + if (fb) + passes[i]->end_frame(); + } } bool gl_core_filter_chain::init_history() From 920e89a506d05ea194016980fbf61e92b9abdb7b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 22 Jan 2020 14:27:24 +0100 Subject: [PATCH 129/148] Move pass set texture to vulkan_common.c --- gfx/common/vulkan_common.c | 22 ++++++++++++++++++++ gfx/common/vulkan_common.h | 6 ++++++ gfx/drivers_shader/shader_vulkan.cpp | 31 +++------------------------- 3 files changed, 31 insertions(+), 28 deletions(-) diff --git a/gfx/common/vulkan_common.c b/gfx/common/vulkan_common.c index c2f28bf480..3469d937c1 100644 --- a/gfx/common/vulkan_common.c +++ b/gfx/common/vulkan_common.c @@ -3463,3 +3463,25 @@ void vulkan_framebuffer_clear(VkImage image, VkCommandBuffer cmd) VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT); } + +void vulkan_pass_set_texture( + VkDevice device, + VkDescriptorSet set, VkSampler sampler, + unsigned binding, + VkImageView imageView, VkImageLayout imageLayout) +{ + VkDescriptorImageInfo image_info; + VkWriteDescriptorSet write = { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET }; + + image_info.sampler = sampler; + image_info.imageView = imageView; + image_info.imageLayout = imageLayout; + + write.dstSet = set; + write.dstBinding = binding; + write.descriptorCount = 1; + write.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; + write.pImageInfo = &image_info; + + vkUpdateDescriptorSets(device, 1, &write, 0, NULL); +} diff --git a/gfx/common/vulkan_common.h b/gfx/common/vulkan_common.h index c6e974c25c..7fa4813989 100644 --- a/gfx/common/vulkan_common.h +++ b/gfx/common/vulkan_common.h @@ -619,6 +619,12 @@ void vulkan_framebuffer_clear(VkImage image, VkCommandBuffer cmd); void vulkan_initialize_render_pass(VkDevice device, VkFormat format, VkRenderPass *render_pass); +void vulkan_pass_set_texture( + VkDevice device, + VkDescriptorSet set, VkSampler sampler, + unsigned binding, + VkImageView imageView, VkImageLayout imageLayout); + RETRO_END_DECLS #endif diff --git a/gfx/drivers_shader/shader_vulkan.cpp b/gfx/drivers_shader/shader_vulkan.cpp index 7620680d65..3f5cd45351 100644 --- a/gfx/drivers_shader/shader_vulkan.cpp +++ b/gfx/drivers_shader/shader_vulkan.cpp @@ -431,9 +431,6 @@ class Pass bool init_pipeline(); bool init_pipeline_layout(); - void set_texture(VkDescriptorSet set, unsigned binding, - const Texture &texture); - void set_semantic_texture(VkDescriptorSet set, slang_texture_semantic semantic, const Texture &texture); void set_semantic_texture_array(VkDescriptorSet set, @@ -2018,36 +2015,14 @@ bool Pass::build() filtered_parameters.push_back(parameters[i]); } - if (!init_pipeline()) - return false; - - return true; -} - -void Pass::set_texture(VkDescriptorSet set, unsigned binding, - const Texture &texture) -{ - VkDescriptorImageInfo image_info; - VkWriteDescriptorSet write = { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET }; - - image_info.sampler = common->samplers[texture.filter][texture.mip_filter][texture.address]; - image_info.imageView = texture.texture.view; - image_info.imageLayout = texture.texture.layout; - - write.dstSet = set; - write.dstBinding = binding; - write.descriptorCount = 1; - write.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; - write.pImageInfo = &image_info; - - vkUpdateDescriptorSets(device, 1, &write, 0, nullptr); + return init_pipeline(); } void Pass::set_semantic_texture(VkDescriptorSet set, slang_texture_semantic semantic, const Texture &texture) { if (reflection.semantic_textures[semantic][0].texture) - set_texture(set, reflection.semantic_textures[semantic][0].binding, texture); + vulkan_pass_set_texture(device, set, common->samplers[texture.filter][texture.mip_filter][texture.address], reflection.semantic_textures[semantic][0].binding, texture.texture.view, texture.texture.layout); } void Pass::set_semantic_texture_array(VkDescriptorSet set, @@ -2056,7 +2031,7 @@ void Pass::set_semantic_texture_array(VkDescriptorSet set, { if (index < reflection.semantic_textures[semantic].size() && reflection.semantic_textures[semantic][index].texture) - set_texture(set, reflection.semantic_textures[semantic][index].binding, texture); + vulkan_pass_set_texture(device, set, common->samplers[texture.filter][texture.mip_filter][texture.address], reflection.semantic_textures[semantic][index].binding, texture.texture.view, texture.texture.layout); } void Pass::build_semantic_texture_array_vec4(uint8_t *data, slang_texture_semantic semantic, From 6d0286efbdb36147d9148fe795601f32303a9fd9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 22 Jan 2020 14:30:55 +0100 Subject: [PATCH 130/148] Turn video_shader_parse_type into macro --- gfx/video_shader_parse.c | 14 -------------- gfx/video_shader_parse.h | 9 +++++---- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/gfx/video_shader_parse.c b/gfx/video_shader_parse.c index 8fd9961db7..c25a2be364 100644 --- a/gfx/video_shader_parse.c +++ b/gfx/video_shader_parse.c @@ -1259,20 +1259,6 @@ enum rarch_shader_type video_shader_get_type_from_ext(const char *ext, return RARCH_SHADER_NONE; } -/** - * video_shader_parse_type: - * @path : Shader path. - * - * Parses type of shader. - * - * Returns: value of shader type if it could be determined, - * otherwise RARCH_SHADER_NONE. - **/ -enum rarch_shader_type video_shader_parse_type(const char *path) -{ - return video_shader_get_type_from_ext(path_get_extension(path), NULL); -} - bool video_shader_check_for_changes(void) { if (!file_change_data) diff --git a/gfx/video_shader_parse.h b/gfx/video_shader_parse.h index 7ff5bdf391..a7a492df79 100644 --- a/gfx/video_shader_parse.h +++ b/gfx/video_shader_parse.h @@ -21,6 +21,7 @@ #include #include #include +#include RETRO_BEGIN_DECLS @@ -246,6 +247,9 @@ bool video_shader_resolve_current_parameters(config_file_t *conf, bool video_shader_resolve_parameters(config_file_t *conf, struct video_shader *shader); +enum rarch_shader_type video_shader_get_type_from_ext(const char *ext, + bool *is_preset); + /** * video_shader_parse_type: * @path : Shader path. @@ -255,10 +259,7 @@ bool video_shader_resolve_parameters(config_file_t *conf, * Returns: value of shader type if it could be determined, * otherwise RARCH_SHADER_NONE. **/ -enum rarch_shader_type video_shader_parse_type(const char *path); - -enum rarch_shader_type video_shader_get_type_from_ext(const char *ext, - bool *is_preset); +#define video_shader_parse_type(path) video_shader_get_type_from_ext(path_get_extension((path)), NULL) bool video_shader_is_supported(enum rarch_shader_type type); From 276b7a03f1827fd4e4afed3a361d1dbc4c2e08fc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 22 Jan 2020 17:08:02 +0100 Subject: [PATCH 131/148] Remove 'automatically add content to playlist' option - causes memory corruption; not worth it for now --- configuration.c | 1 - configuration.h | 1 - intl/msg_hash_chs.h | 4 ---- intl/msg_hash_cht.h | 4 ---- intl/msg_hash_de.h | 4 ---- intl/msg_hash_es.h | 8 -------- intl/msg_hash_fr.h | 8 -------- intl/msg_hash_it.h | 4 ---- intl/msg_hash_ja.h | 8 -------- intl/msg_hash_ko.h | 8 -------- intl/msg_hash_lbl.h | 2 -- intl/msg_hash_pl.h | 4 ---- intl/msg_hash_pt_br.h | 8 -------- intl/msg_hash_pt_pt.h | 4 ---- intl/msg_hash_ru.h | 4 ---- intl/msg_hash_tr.h | 8 -------- intl/msg_hash_us.h | 8 -------- menu/cbs/menu_cbs_ok.c | 2 ++ menu/cbs/menu_cbs_sublabel.c | 4 ---- menu/menu_displaylist.c | 1 - menu/menu_setting.c | 17 ----------------- msg_hash.h | 1 - 22 files changed, 2 insertions(+), 111 deletions(-) diff --git a/configuration.c b/configuration.c index c339e9eb63..a1bd36c71b 100644 --- a/configuration.c +++ b/configuration.c @@ -1341,7 +1341,6 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("frame_time_counter_reset_after_load_state", &settings->bools.frame_time_counter_reset_after_load_state, true, false, false); SETTING_BOOL("frame_time_counter_reset_after_save_state", &settings->bools.frame_time_counter_reset_after_save_state, true, false, false); SETTING_BOOL("crt_switch_resolution_use_custom_refresh_rate", &settings->bools.crt_switch_custom_refresh_enable, true, false, false); - SETTING_BOOL("automatically_add_content_to_playlist", &settings->bools.automatically_add_content_to_playlist, true, DEFAULT_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, false); SETTING_BOOL("ui_companion_start_on_boot", &settings->bools.ui_companion_start_on_boot, true, ui_companion_start_on_boot, false); SETTING_BOOL("ui_companion_enable", &settings->bools.ui_companion_enable, true, ui_companion_enable, false); SETTING_BOOL("ui_companion_toggle", &settings->bools.ui_companion_toggle, false, ui_companion_toggle, false); diff --git a/configuration.h b/configuration.h index 12aa7d446e..fa6c8ecaba 100644 --- a/configuration.h +++ b/configuration.h @@ -361,7 +361,6 @@ typedef struct settings bool bluetooth_enable; bool localap_enable; - bool automatically_add_content_to_playlist; bool video_window_show_decorations; bool video_window_save_positions; diff --git a/intl/msg_hash_chs.h b/intl/msg_hash_chs.h index ba36d371ed..7b29a8a6aa 100644 --- a/intl/msg_hash_chs.h +++ b/intl/msg_hash_chs.h @@ -3493,10 +3493,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_BLUE, "屏显消息(OSD)RGB颜色 蓝色") MSG_HASH(MENU_ENUM_LABEL_VALUE_FRAMECOUNT_SHOW, "显示FPS帧数") -MSG_HASH(MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "自动添加内容到游戏列表") -MSG_HASH(MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "自动扫描游戏文件,并添加在游戏列表中。") MSG_HASH(MSG_SCANNING_OF_FILE_FINISHED, "文件扫描完成") MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_QUALITY, diff --git a/intl/msg_hash_cht.h b/intl/msg_hash_cht.h index 96e42759cb..6c8931273f 100644 --- a/intl/msg_hash_cht.h +++ b/intl/msg_hash_cht.h @@ -2580,10 +2580,6 @@ MSG_HASH(MSG_INPUT_KIOSK_MODE_PASSWORD_OK, "密碼正確") MSG_HASH(MSG_INPUT_KIOSK_MODE_PASSWORD_NOK, "密碼錯誤") -MSG_HASH(MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "自動增加遊戲內容至 playlist") -MSG_HASH(MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Automatically scans loaded content so they appear inside playlists.") MSG_HASH(MSG_SCANNING_OF_FILE_FINISHED, "掃瞄檔案結束") MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_QUALITY, diff --git a/intl/msg_hash_de.h b/intl/msg_hash_de.h index 4faa703495..2a9b6cc3ed 100644 --- a/intl/msg_hash_de.h +++ b/intl/msg_hash_de.h @@ -3388,10 +3388,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_BLUE, "Blau-Anteil der Bildschirmmeldungen") MSG_HASH(MENU_ENUM_LABEL_VALUE_FRAMECOUNT_SHOW, "Zeige die aktuelle Anzahl an Einzelbildern an") -MSG_HASH(MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Inhalt automatisch zur Playlist hinzufügen") -MSG_HASH(MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Scant automatisch den geladenen Inhalt, so dass er in Playlisten angezeigt wird.") MSG_HASH(MSG_SCANNING_OF_FILE_FINISHED, "Scannen von Datei beendet") MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_QUALITY, diff --git a/intl/msg_hash_es.h b/intl/msg_hash_es.h index 01d0e08e0f..19b5cb3ef4 100644 --- a/intl/msg_hash_es.h +++ b/intl/msg_hash_es.h @@ -7513,14 +7513,6 @@ MSG_HASH( MSG_RUNAHEAD_FAILED_TO_CREATE_SECONDARY_INSTANCE, "Error al crear la segunda instancia. La reducción predictiva solo usará una a partir de este momento." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Autoagregar contenidos a listas de reproducción" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Busca automáticamente los contenidos para que aparezcan en las listas de reproducción." - ) MSG_HASH( MSG_SCANNING_OF_FILE_FINISHED, "Archivo escaneado" diff --git a/intl/msg_hash_fr.h b/intl/msg_hash_fr.h index 342c07fb77..d43cc41437 100644 --- a/intl/msg_hash_fr.h +++ b/intl/msg_hash_fr.h @@ -7494,14 +7494,6 @@ MSG_HASH( MSG_RUNAHEAD_FAILED_TO_CREATE_SECONDARY_INSTANCE, "Impossible de créer une deuxième instance. L'éxécution en avance utilisera désormais une seule instance." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Ajouter automatiquement aux listes de lecture" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Analyse automatiquement le contenu chargé avec le scanner des listes de lecture." - ) MSG_HASH( MSG_SCANNING_OF_FILE_FINISHED, "Analyse du fichier terminée" diff --git a/intl/msg_hash_it.h b/intl/msg_hash_it.h index f35b35615a..c81246ba55 100644 --- a/intl/msg_hash_it.h +++ b/intl/msg_hash_it.h @@ -3404,10 +3404,6 @@ MSG_HASH(MSG_INPUT_KIOSK_MODE_PASSWORD_OK, "Password corretta.") MSG_HASH(MSG_INPUT_KIOSK_MODE_PASSWORD_NOK, "Password non corretta.") -MSG_HASH(MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Aggiungi automaticamente il contenuto alla playlist") -MSG_HASH(MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Esegue automaticamente la scansione dei contenuti caricati in modo che vengano visualizzati all'interno delle playlist.") MSG_HASH(MSG_SCANNING_OF_FILE_FINISHED, "Scansione del file completata") MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_QUALITY, diff --git a/intl/msg_hash_ja.h b/intl/msg_hash_ja.h index 47894e6d04..c741366bd1 100644 --- a/intl/msg_hash_ja.h +++ b/intl/msg_hash_ja.h @@ -7230,14 +7230,6 @@ MSG_HASH( MSG_RUNAHEAD_FAILED_TO_CREATE_SECONDARY_INSTANCE, "2つ目のコアをスタートに失敗しました。先読みが一つのコアを使用になります。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "自動的にコンテンツをプレイリストに追加" -) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "ロードされたコンテンツは自動的にスキャンされ, プレイリストに表示されます。" -) MSG_HASH( MSG_SCANNING_OF_FILE_FINISHED, "ファイルのスキャンは完了しました。" diff --git a/intl/msg_hash_ko.h b/intl/msg_hash_ko.h index 30f8d74c87..774ec24d34 100644 --- a/intl/msg_hash_ko.h +++ b/intl/msg_hash_ko.h @@ -7187,14 +7187,6 @@ MSG_HASH( MSG_RUNAHEAD_FAILED_TO_CREATE_SECONDARY_INSTANCE, "두 번째 인스턴스를 생성하는데 실패했습니다. 미리 실행 기능에서 하나의 인스턴스만 사용됩니다." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "재생 목록에 컨텐츠 검색 후 자동 추가" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "컨텐츠를 자동으로 검색해 재생 목록에 표시합니다." - ) MSG_HASH( MSG_SCANNING_OF_FILE_FINISHED, "파일 스캔 완료" diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 54fb67f026..766ba2ebd1 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -1824,8 +1824,6 @@ MSG_HASH(MENU_ENUM_LABEL_FRAMECOUNT_SHOW, "framecount_show") MSG_HASH(MENU_ENUM_LABEL_MEMORY_SHOW, "memory_show") -MSG_HASH(MENU_ENUM_LABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "automatically_add_content_to_playlist") MSG_HASH(MENU_ENUM_LABEL_VIDEO_WINDOW_OPACITY, "video_window_opacity") MSG_HASH(MENU_ENUM_LABEL_AUDIO_RESAMPLER_QUALITY, diff --git a/intl/msg_hash_pl.h b/intl/msg_hash_pl.h index 977eda481b..902ee65e8e 100644 --- a/intl/msg_hash_pl.h +++ b/intl/msg_hash_pl.h @@ -3531,10 +3531,6 @@ MSG_HASH(MSG_GAME_REMAP_FILE_LOADED, "Załadowano plik remapu gry.") MSG_HASH(MSG_CORE_REMAP_FILE_LOADED, "Załadowano plik wymiany rdzenia.") -MSG_HASH(MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Automatycznie dodawaj zawartość do listy odtwarzania") -MSG_HASH(MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Automatycznie skanuje załadowaną zawartość, aby pojawiły się w listach odtwarzania.") MSG_HASH(MSG_SCANNING_OF_FILE_FINISHED, "Skanowanie pliku zakończone") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_OPACITY, diff --git a/intl/msg_hash_pt_br.h b/intl/msg_hash_pt_br.h index bcaefc0189..f23b669678 100644 --- a/intl/msg_hash_pt_br.h +++ b/intl/msg_hash_pt_br.h @@ -7390,14 +7390,6 @@ MSG_HASH( MSG_RUNAHEAD_FAILED_TO_CREATE_SECONDARY_INSTANCE, "Falha ao criar uma segunda instância. O Adiantar Quadro agora usará apenas uma instância." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Adicione automaticamente conteúdo à lista de reprodução" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Verifica automaticamente o conteúdo carregado para que eles apareçam dentro das listas de reprodução." - ) MSG_HASH( MSG_SCANNING_OF_FILE_FINISHED, "Verificação do arquivo terminado" diff --git a/intl/msg_hash_pt_pt.h b/intl/msg_hash_pt_pt.h index e8c9ab0078..7938f9d352 100644 --- a/intl/msg_hash_pt_pt.h +++ b/intl/msg_hash_pt_pt.h @@ -3237,10 +3237,6 @@ MSG_HASH(MSG_INPUT_KIOSK_MODE_PASSWORD_OK, "Palavra-passe correta.") MSG_HASH(MSG_INPUT_KIOSK_MODE_PASSWORD_NOK, "Palavra-passe incorreta.") -MSG_HASH(MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Adicionar conteúdo à lista de reprodução automaticamente") -MSG_HASH(MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Verificar automaticamente conteúdo carregado de forma a que apareça nas listas de reprodução.") MSG_HASH(MSG_SCANNING_OF_FILE_FINISHED, "Leitura do ficheiro terminada") MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_QUALITY, diff --git a/intl/msg_hash_ru.h b/intl/msg_hash_ru.h index 0ddd9da490..134500a20f 100644 --- a/intl/msg_hash_ru.h +++ b/intl/msg_hash_ru.h @@ -3200,10 +3200,6 @@ MSG_HASH(MSG_INPUT_KIOSK_MODE_PASSWORD_OK, "Пароль верен.") MSG_HASH(MSG_INPUT_KIOSK_MODE_PASSWORD_NOK, "Пароль неверен.") -MSG_HASH(MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Автоматически добавлять контент в плейлист") -MSG_HASH(MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Автоматически сканировать загруженный контент и добавлять его в плейлист.") MSG_HASH(MSG_SCANNING_OF_FILE_FINISHED, "Сканирование файла завершено") MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_QUALITY, diff --git a/intl/msg_hash_tr.h b/intl/msg_hash_tr.h index 9d5cf217c8..47a6755e05 100644 --- a/intl/msg_hash_tr.h +++ b/intl/msg_hash_tr.h @@ -7012,14 +7012,6 @@ MSG_HASH( MSG_RUNAHEAD_FAILED_TO_CREATE_SECONDARY_INSTANCE, "Failed to create second instance. RunAhead will now use only one instance." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Oynatma listelerine otomatik olarak içerik ekleyin" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Oynatılan tarayıcı ile yüklü içeriği otomatik olarak tarar." - ) MSG_HASH( MSG_SCANNING_OF_FILE_FINISHED, "Dosyanın taranması tamamlandı" diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 3081630f42..fdfaafb3a8 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -7570,14 +7570,6 @@ MSG_HASH( MSG_RUNAHEAD_FAILED_TO_CREATE_SECONDARY_INSTANCE, "Failed to create second instance. RunAhead will now use only one instance." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Automatically add content to playlists" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Automatically scans loaded content with the playlist scanner." - ) MSG_HASH( MSG_SCANNING_OF_FILE_FINISHED, "Scanning of file finished" diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index f6fc4b5401..4dbd9cb42a 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1332,6 +1332,7 @@ void handle_dbscan_finished(retro_task_t *task, static void content_add_to_playlist(const char *path) { +#if 0 #ifdef HAVE_LIBRETRODB settings_t *settings = config_get_ptr(); if (!settings || !settings->bools.automatically_add_content_to_playlist) @@ -1343,6 +1344,7 @@ static void content_add_to_playlist(const char *path) settings->bools.show_hidden_files, handle_dbscan_finished); #endif +#endif } static int file_load_with_detect_core_wrapper( diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index 8d2372a6f9..015bef33a5 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -125,7 +125,6 @@ default_sublabel_macro(action_bind_sublabel_crt_switchres, MENU_ENUM default_sublabel_macro(action_bind_sublabel_crt_switchres_super, MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_SUPER) default_sublabel_macro(action_bind_sublabel_crt_switchres_x_axis_centering, MENU_ENUM_SUBLABEL_CRT_SWITCH_X_AXIS_CENTERING) default_sublabel_macro(action_bind_sublabel_crt_switchres_use_custom_refresh_rate, MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE) -default_sublabel_macro(action_bind_sublabel_automatically_add_content_to_playlist, MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST) default_sublabel_macro(action_bind_sublabel_driver_settings_list, MENU_ENUM_SUBLABEL_DRIVER_SETTINGS) default_sublabel_macro(action_bind_sublabel_retro_achievements_settings_list, MENU_ENUM_SUBLABEL_RETRO_ACHIEVEMENTS_SETTINGS) default_sublabel_macro(action_bind_sublabel_saving_settings_list, MENU_ENUM_SUBLABEL_SAVING_SETTINGS) @@ -2771,9 +2770,6 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_CORE_SETTINGS: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_settings_list); break; - case MENU_ENUM_LABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST: - BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_automatically_add_content_to_playlist); - break; case MENU_ENUM_LABEL_DRIVER_SETTINGS: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_driver_settings_list); break; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index c914248e23..fd48cb18e5 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -6271,7 +6271,6 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct {MENU_ENUM_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, PARSE_ONLY_BOOL}, {MENU_ENUM_LABEL_USE_BUILTIN_PLAYER, PARSE_ONLY_BOOL}, {MENU_ENUM_LABEL_FILTER_BY_CURRENT_CORE, PARSE_ONLY_BOOL}, - {MENU_ENUM_LABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, PARSE_ONLY_BOOL}, }; for (i = 0; i < ARRAY_SIZE(build_list); i++) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index d2ce4536d5..c07e3b5bc9 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -14013,23 +14013,6 @@ static bool setting_append_list( START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); -#ifdef HAVE_LIBRETRODB - CONFIG_BOOL( - list, list_info, - &settings->bools.automatically_add_content_to_playlist, - MENU_ENUM_LABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - DEFAULT_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - MENU_ENUM_LABEL_VALUE_OFF, - MENU_ENUM_LABEL_VALUE_ON, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler, - SD_FLAG_NONE); -#endif - CONFIG_BOOL( list, list_info, &settings->bools.multimedia_builtin_mediaplayer_enable, diff --git a/msg_hash.h b/msg_hash.h index 25b63312ab..31385aeeac 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -1422,7 +1422,6 @@ enum msg_hash_enums MENU_LABEL(INFORMATION), MENU_LABEL(INFORMATION_LIST), MENU_LABEL(USE_BUILTIN_PLAYER), - MENU_LABEL(AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST), MENU_LABEL(NETPLAY_SETTINGS), MENU_LABEL(CONTENT_SETTINGS), MENU_LABEL(LOAD_CONTENT_LIST), From 00397a33f044cbc11eb20dd33692e9609ab473f3 Mon Sep 17 00:00:00 2001 From: jdgleaver Date: Wed, 22 Jan 2020 17:07:50 +0000 Subject: [PATCH 132/148] (Disk Control Interface) Add support for saving/restoring last used disk in playlists + code overhaul --- Makefile.common | 4 +- core.h | 5 +- disk_control_interface.c | 774 ++++++++++++++++++++++++++++++++++ disk_control_interface.h | 178 ++++++++ disk_index_file.c | 523 +++++++++++++++++++++++ disk_index_file.h | 76 ++++ file_path_special.h | 3 +- file_path_str.c | 3 + griffin/griffin.c | 8 +- intl/msg_hash_us.h | 20 + menu/cbs/menu_cbs_get_value.c | 19 +- menu/cbs/menu_cbs_ok.c | 10 +- menu/menu_displaylist.c | 50 +-- msg_hash.h | 4 + retroarch.c | 392 ++++------------- runtime_file.c | 2 +- 16 files changed, 1698 insertions(+), 373 deletions(-) create mode 100644 disk_control_interface.c create mode 100644 disk_control_interface.h create mode 100644 disk_index_file.c create mode 100644 disk_index_file.h diff --git a/Makefile.common b/Makefile.common index 586aa37f34..be4a7be9e4 100644 --- a/Makefile.common +++ b/Makefile.common @@ -243,6 +243,7 @@ OBJ += \ $(LIBRETRO_COMM_DIR)/file/config_file.o \ $(LIBRETRO_COMM_DIR)/file/config_file_userdata.o \ runtime_file.o \ + disk_index_file.o \ tasks/task_screenshot.o \ tasks/task_powerstate.o \ $(LIBRETRO_COMM_DIR)/gfx/scaler/scaler.o \ @@ -261,7 +262,8 @@ OBJ += \ performance_counters.o \ verbosity.o \ $(LIBRETRO_COMM_DIR)/playlists/label_sanitization.o \ - manual_content_scan.o + manual_content_scan.o \ + disk_control_interface.o ifeq ($(HAVE_AUDIOMIXER), 1) DEFINES += -DHAVE_AUDIOMIXER diff --git a/core.h b/core.h index c2c090b72e..35d7961ca0 100644 --- a/core.h +++ b/core.h @@ -25,6 +25,7 @@ #include "core_type.h" #include "input/input_defines.h" +#include "disk_control_interface.h" RETRO_BEGIN_DECLS @@ -67,8 +68,8 @@ typedef struct rarch_system_info bool supports_vfs; - struct retro_disk_control_ext_callback disk_control_cb; - struct retro_location_callback location_cb; + disk_control_interface_t disk_control; + struct retro_location_callback location_cb; struct { diff --git a/disk_control_interface.c b/disk_control_interface.c new file mode 100644 index 0000000000..2042afb94c --- /dev/null +++ b/disk_control_interface.c @@ -0,0 +1,774 @@ +/* Copyright (C) 2010-2020 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (disk_control_interface.c). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include +#include + +#include "paths.h" +#include "retroarch.h" +#include "verbosity.h" +#include "msg_hash.h" + +#include "disk_control_interface.h" + +/*****************/ +/* Configuration */ +/*****************/ + +/* Sets all disk interface callback functions + * to NULL */ +static void disk_control_reset_callback( + disk_control_interface_t *disk_control) +{ + if (!disk_control) + return; + + memset(&disk_control->cb, 0, sizeof(struct retro_disk_control_ext_callback)); +} + +/* Set v0 disk interface callback functions */ +void disk_control_set_callback( + disk_control_interface_t *disk_control, + const struct retro_disk_control_callback *cb) +{ + if (!disk_control) + return; + + disk_control_reset_callback(disk_control); + + if (!cb) + return; + + disk_control->cb.set_eject_state = cb->set_eject_state; + disk_control->cb.get_eject_state = cb->get_eject_state; + disk_control->cb.get_image_index = cb->get_image_index; + disk_control->cb.set_image_index = cb->set_image_index; + disk_control->cb.get_num_images = cb->get_num_images; + disk_control->cb.replace_image_index = cb->replace_image_index; + disk_control->cb.add_image_index = cb->add_image_index; +} + +/* Set v1+ disk interface callback functions */ +void disk_control_set_ext_callback( + disk_control_interface_t *disk_control, + const struct retro_disk_control_ext_callback *cb) +{ + if (!disk_control) + return; + + disk_control_reset_callback(disk_control); + + if (!cb) + return; + + disk_control->cb.set_eject_state = cb->set_eject_state; + disk_control->cb.get_eject_state = cb->get_eject_state; + disk_control->cb.get_image_index = cb->get_image_index; + disk_control->cb.set_image_index = cb->set_image_index; + disk_control->cb.get_num_images = cb->get_num_images; + disk_control->cb.replace_image_index = cb->replace_image_index; + disk_control->cb.add_image_index = cb->add_image_index; + + disk_control->cb.set_initial_image = cb->set_initial_image; + disk_control->cb.get_image_path = cb->get_image_path; + disk_control->cb.get_image_label = cb->get_image_label; +} + +/**********/ +/* Status */ +/**********/ + +/* Returns true if core supports basic disk + * control functionality + * - set_eject_state + * - get_eject_state + * - get_image_index + * - set_image_index + * - get_num_images */ +bool disk_control_enabled( + disk_control_interface_t *disk_control) +{ + if (!disk_control) + return false; + + if (disk_control->cb.set_eject_state && + disk_control->cb.get_eject_state && + disk_control->cb.get_image_index && + disk_control->cb.set_image_index && + disk_control->cb.get_num_images) + return true; + + return false; +} + +/* Returns true if core supports disk append + * functionality + * - replace_image_index + * - add_image_index */ +bool disk_control_append_enabled( + disk_control_interface_t *disk_control) +{ + if (!disk_control) + return false; + + if (disk_control->cb.replace_image_index && + disk_control->cb.add_image_index) + return true; + + return false; +} + +/* Returns true if core supports image + * labels + * - get_image_label */ +bool disk_control_image_label_enabled( + disk_control_interface_t *disk_control) +{ + if (!disk_control) + return false; + + if (disk_control->cb.get_image_label) + return true; + + return false; +} + +/* Returns true if core supports setting + * initial disk index + * - set_initial_image + * - get_image_path */ +bool disk_control_initial_image_enabled( + disk_control_interface_t *disk_control) +{ + if (!disk_control) + return false; + + if (disk_control->cb.set_initial_image && + disk_control->cb.get_image_path) + return true; + + return false; +} + +/***********/ +/* Getters */ +/***********/ + +/* Returns true if disk is currently ejected */ +bool disk_control_get_eject_state( + disk_control_interface_t *disk_control) +{ + if (!disk_control) + return false; + + if (!disk_control->cb.get_eject_state) + return false; + + return disk_control->cb.get_eject_state(); +} + +/* Returns number of disk images registered + * by the core */ +unsigned disk_control_get_num_images( + disk_control_interface_t *disk_control) +{ + if (!disk_control) + return 0; + + if (!disk_control->cb.get_num_images) + return 0; + + return disk_control->cb.get_num_images(); +} + +/* Returns currently selected disk image index */ +unsigned disk_control_get_image_index( + disk_control_interface_t *disk_control) +{ + if (!disk_control) + return 0; + + if (!disk_control->cb.get_image_index) + return 0; + + return disk_control->cb.get_image_index(); +} + +/* Fetches core-provided disk image label + * (label is set to an empty string if core + * does not support image labels) */ +void disk_control_get_image_label( + disk_control_interface_t *disk_control, + unsigned index, char *label, size_t len) +{ + if (!label || len < 1) + return; + + if (!disk_control) + goto error; + + if (!disk_control->cb.get_image_label) + goto error; + + if (!disk_control->cb.get_image_label(index, label, len)) + goto error; + + return; + +error: + label[0] = '\0'; + return; +} + +/***********/ +/* Setters */ +/***********/ + +/* Sets the eject state of the virtual disk tray */ +bool disk_control_set_eject_state( + disk_control_interface_t *disk_control, + bool eject, bool verbose) +{ + bool error = false; + char msg[128]; + + msg[0] = '\0'; + + if (!disk_control) + return false; + + if (!disk_control->cb.set_eject_state) + return false; + + /* Set eject state */ + if (disk_control->cb.set_eject_state(eject)) + snprintf( + msg, sizeof(msg), "%s %s", + eject ? msg_hash_to_str(MSG_DISK_EJECTED) : + msg_hash_to_str(MSG_DISK_CLOSED), + msg_hash_to_str(MSG_VIRTUAL_DISK_TRAY)); + else + { + error = true; + snprintf( + msg, sizeof(msg), "%s %s %s", + msg_hash_to_str(MSG_FAILED_TO), + eject ? msg_hash_to_str(MSG_VIRTUAL_DISK_TRAY_EJECT) : + msg_hash_to_str(MSG_VIRTUAL_DISK_TRAY_CLOSE), + msg_hash_to_str(MSG_VIRTUAL_DISK_TRAY)); + } + + if (!string_is_empty(msg)) + { + if (error) + RARCH_ERR("%s\n", msg); + else + RARCH_LOG("%s\n", msg); + + /* Errors should always be displayed */ + if (verbose || error) + runloop_msg_queue_push( + msg, 1, error ? 180 : 60, + true, NULL, + MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + } + + return !error; +} + +/* Sets currently selected disk index + * NOTE: Will fail if disk is not currently ejected */ +bool disk_control_set_index( + disk_control_interface_t *disk_control, + unsigned index, bool verbose) +{ + bool error = false; + unsigned num_images = 0; + char msg[128]; + + msg[0] = '\0'; + + if (!disk_control) + return false; + + if (!disk_control->cb.get_eject_state || + !disk_control->cb.get_num_images || + !disk_control->cb.set_image_index) + return false; + + /* Ensure that disk is currently ejected */ + if (!disk_control->cb.get_eject_state()) + return false; + + num_images = disk_control->cb.get_num_images(); + + if (disk_control->cb.set_image_index(index)) + { + if (index < num_images) + snprintf( + msg, sizeof(msg), "%s: %u/%u", + msg_hash_to_str(MSG_SETTING_DISK_IN_TRAY), + index + 1, num_images); + else + strlcpy( + msg, + msg_hash_to_str(MSG_REMOVED_DISK_FROM_TRAY), + sizeof(msg)); + } + else + { + error = true; + + if (index < num_images) + snprintf( + msg, sizeof(msg), "%s %u/%u", + msg_hash_to_str(MSG_FAILED_TO_SET_DISK), + index + 1, num_images); + else + strlcpy( + msg, + msg_hash_to_str(MSG_FAILED_TO_REMOVE_DISK_FROM_TRAY), + sizeof(msg)); + } + + if (!string_is_empty(msg)) + { + if (error) + RARCH_ERR("%s\n", msg); + else + RARCH_LOG("%s\n", msg); + + /* Errors should always be displayed */ + if (verbose || error) + runloop_msg_queue_push( + msg, 1, error ? 180 : 60, + true, NULL, + MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + } + + /* If operation was successful, update disk + * index record (if enabled) */ + if (!error && disk_control->record_enabled) + { + if (disk_control->cb.get_image_index && + disk_control->cb.get_image_path) + { + bool image_path_valid = false; + unsigned new_image_index = 0; + char new_image_path[PATH_MAX_LENGTH]; + + new_image_path[0] = '\0'; + + /* Get current image index + path */ + new_image_index = disk_control->cb.get_image_index(); + image_path_valid = disk_control->cb.get_image_path( + new_image_index, new_image_path, sizeof(new_image_path)); + + if (image_path_valid) + disk_index_file_set( + &disk_control->index_record, + new_image_index, new_image_path); + else + disk_index_file_set( + &disk_control->index_record, 0, NULL); + } + } + + return !error; +} + +/* Increments selected disk index */ +bool disk_control_set_index_next( + disk_control_interface_t *disk_control, + bool verbose) +{ + unsigned num_images = 0; + unsigned image_index = 0; + bool disk_next_enable = false; + + if (!disk_control) + return false; + + if (!disk_control->cb.get_num_images || + !disk_control->cb.get_image_index) + return false; + + num_images = disk_control->cb.get_num_images(); + image_index = disk_control->cb.get_image_index(); + /* Would seem more sensible to check (num_images > 1) + * here, but seems we need to be able to cycle the + * same image for legacy reasons... */ + disk_next_enable = (num_images > 0) && (num_images != UINT_MAX); + + if (!disk_next_enable) + { + RARCH_ERR("%s.\n", msg_hash_to_str(MSG_GOT_INVALID_DISK_INDEX)); + return false; + } + + if (image_index < (num_images - 1)) + image_index++; + + return disk_control_set_index(disk_control, image_index, verbose); +} + +/* Decrements selected disk index */ +bool disk_control_set_index_prev( + disk_control_interface_t *disk_control, + bool verbose) +{ + unsigned num_images = 0; + unsigned image_index = 0; + bool disk_prev_enable = false; + + if (!disk_control) + return false; + + if (!disk_control->cb.get_num_images || + !disk_control->cb.get_image_index) + return false; + + num_images = disk_control->cb.get_num_images(); + image_index = disk_control->cb.get_image_index(); + /* Would seem more sensible to check (num_images > 1) + * here, but seems we need to be able to cycle the + * same image for legacy reasons... */ + disk_prev_enable = (num_images > 0); + + if (!disk_prev_enable) + { + RARCH_ERR("%s.\n", msg_hash_to_str(MSG_GOT_INVALID_DISK_INDEX)); + return false; + } + + if (image_index > 0) + image_index--; + + return disk_control_set_index(disk_control, image_index, verbose); +} + +/* Appends specified image file to disk image list */ +bool disk_control_append_image( + disk_control_interface_t *disk_control, + const char *image_path) +{ + unsigned initial_index = 0; + unsigned new_index = 0; + const char *image_filename = NULL; + struct retro_game_info info = {0}; + char msg[128]; + + msg[0] = '\0'; + + /* Sanity check. If any of these fail then a + * frontend error has occurred - we will not + * deal with that here */ + if (!disk_control) + return false; + + if (!disk_control->cb.get_image_index || + !disk_control->cb.get_num_images || + !disk_control->cb.add_image_index || + !disk_control->cb.replace_image_index || + !disk_control->cb.get_eject_state) + return false; + + if (string_is_empty(image_path)) + return false; + + image_filename = path_basename(image_path); + + if (string_is_empty(image_filename)) + return false; + + /* Cache initial image index */ + initial_index = disk_control->cb.get_image_index(); + + /* Eject disk */ + if (!disk_control_set_eject_state(disk_control, true, false)) + goto error; + + /* Append image */ + if (!disk_control->cb.add_image_index()) + goto error; + + new_index = disk_control->cb.get_num_images(); + if (new_index < 1) + goto error; + new_index--; + + info.path = image_path; + if (!disk_control->cb.replace_image_index(new_index, &info)) + goto error; + + /* Set new index */ + if (!disk_control_set_index(disk_control, new_index, false)) + goto error; + + /* Insert disk */ + if (!disk_control_set_eject_state(disk_control, false, false)) + goto error; + + /* Display log */ + snprintf( + msg, sizeof(msg), "%s: %s", + msg_hash_to_str(MSG_APPENDED_DISK), image_filename); + + RARCH_LOG("%s\n", msg); + /* This message should always be displayed, since + * the menu itself does not provide sufficient + * visual feedback */ + runloop_msg_queue_push( + msg, 0, 120, + true, NULL, + MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + + return true; + +error: + /* If we reach this point then everything is + * broken and the disk control interface is + * in an undefined state. Try to restore some + * sanity by reinserting the original disk... + * NOTE: If this fails then it's game over - + * just display the error notification and + * hope for the best... */ + if (!disk_control->cb.get_eject_state()) + disk_control_set_eject_state(disk_control, true, false); + disk_control_set_index(disk_control, initial_index, false); + disk_control_set_eject_state(disk_control, false, false); + + snprintf( + msg, sizeof(msg), "%s: %s", + msg_hash_to_str(MSG_FAILED_TO_APPEND_DISK), image_filename); + + runloop_msg_queue_push( + msg, 0, 180, + true, NULL, + MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + + return false; +} + +/*****************************/ +/* 'Initial index' functions */ +/*****************************/ + +/* Attempts to set current core's initial disk index. + * > disk_control->record_enabled will be set to + * 'false' if core does not support initial + * index functionality + * > disk_control->index_record will be loaded + * from file (if an existing record is found) + * NOTE: Must be called immediately before + * loading content */ +bool disk_control_set_initial_index( + disk_control_interface_t *disk_control, + const char *content_path, + const char *dir_savefile) +{ + if (!disk_control) + return false; + + if (string_is_empty(content_path)) + goto error; + + /* Check that 'initial index' functionality is enabled */ + if (!disk_control->cb.set_initial_image || + !disk_control->cb.get_num_images || + !disk_control->cb.get_image_index || + !disk_control->cb.get_image_path) + goto error; + + /* Attempt to initialise disk index record (reading + * from disk, if file exists) */ + disk_control->record_enabled = disk_index_file_init( + &disk_control->index_record, + content_path, dir_savefile); + + /* If record is enabled and initial index is *not* + * zero, notify current core */ + if (disk_control->record_enabled && + (disk_control->index_record.image_index != 0)) + { + if (!disk_control->cb.set_initial_image( + disk_control->index_record.image_index, + disk_control->index_record.image_path)) + { + /* Note: We don't bother with an on-screen + * notification at this stage, since an error + * here may not matter (have to wait until + * disk index is verified) */ + RARCH_ERR( + "Failed to set initial disk index: [%u] %s\n", + disk_control->index_record.image_index, + disk_control->index_record.image_path); + return false; + } + } + + return true; + +error: + disk_control->record_enabled = false; + return false; +} + +/* Checks that initial index has been set correctly + * and provides user notification. + * > Sets disk_control->initial_num_images if + * if functionality is supported by core + * NOTE: Must be called immediately after + * loading content */ +bool disk_control_verify_initial_index(disk_control_interface_t *disk_control) +{ + bool success = false; + unsigned image_index = 0; + char image_path[PATH_MAX_LENGTH]; + + image_path[0] = '\0'; + + if (!disk_control) + return false; + + /* If index record is disabled, can return immediately */ + if (!disk_control->record_enabled) + return false; + + /* Check that 'initial index' functionality is enabled */ + if (!disk_control->cb.set_initial_image || + !disk_control->cb.get_num_images || + !disk_control->cb.get_image_index || + !disk_control->cb.get_image_path) + return false; + + /* Cache initial number of images + * (required for error checking when saving + * disk index file) */ + disk_control->initial_num_images = + disk_control->cb.get_num_images(); + + /* Get current image index + path */ + image_index = disk_control->cb.get_image_index(); + + if (disk_control->cb.get_image_path( + image_index, image_path, sizeof(image_path))) + { + /* Check whether index + path match set + * values + * > Note that if set index was zero and + * set path was empty, we ignore the path + * read here (since this corresponds to a + * 'first run', where no existing disk index + * file was present) */ + if ((image_index == disk_control->index_record.image_index) && + (string_is_equal(image_path, disk_control->index_record.image_path) || + ((disk_control->index_record.image_index == 0) && + string_is_empty(disk_control->index_record.image_path)))) + success = true; + } + + /* If current disk is incorrect, notify user */ + if (!success) + { + RARCH_ERR( + "Failed to set initial disk index:\n> Expected [%u] %s\n> Detected [%u] %s\n", + disk_control->index_record.image_index + 1, + disk_control->index_record.image_path, + image_index + 1, + image_path); + + runloop_msg_queue_push( + msg_hash_to_str(MSG_FAILED_TO_SET_INITIAL_DISK), + 0, 60, + true, NULL, + MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + + /* Since a failure here typically means that the + * original M3U content file has been altered, + * any existing disk index record file will be + * invalid. We therefore 'reset' and save the disk + * index record to prevent a repeat of the error on + * the next run */ + disk_index_file_set(&disk_control->index_record, 0, NULL); + disk_index_file_save(&disk_control->index_record); + } + /* If current disk is correct and recorded image + * path is empty (i.e. first run), need to register + * current image path */ + else if (string_is_empty(disk_control->index_record.image_path)) + disk_index_file_set( + &disk_control->index_record, image_index, image_path); + + /* Regardless of success/failure, notify user of + * current disk index *if* more than one disk + * is available */ + if (disk_control->initial_num_images > 1) + { + char msg[128]; + + msg[0] = '\0'; + + snprintf( + msg, sizeof(msg), "%s: %u/%u", + msg_hash_to_str(MSG_SETTING_DISK_IN_TRAY), + image_index + 1, disk_control->initial_num_images); + + RARCH_LOG("%s\n", msg); + + runloop_msg_queue_push( + msg, + 0, 60, + true, NULL, + MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + } + + return success; +} + +/* Saves current disk index to file, if supported + * by current core */ +bool disk_control_save_image_index(disk_control_interface_t *disk_control) +{ + if (!disk_control) + return false; + + /* If index record is disabled, can return immediately */ + if (!disk_control->record_enabled) + return false; + + /* If core started with less than two disks, + * then a disk index record is unnecessary */ + if (disk_control->initial_num_images < 2) + return false; + + /* If current index is greater than initial + * number of disks then user has appended a + * disk and it is currently active. This setup + * *cannot* be restored, so cancel the file save */ + if (disk_control->index_record.image_index >= + disk_control->initial_num_images) + return false; + + /* Save record */ + return disk_index_file_save(&disk_control->index_record); +} diff --git a/disk_control_interface.h b/disk_control_interface.h new file mode 100644 index 0000000000..b705838271 --- /dev/null +++ b/disk_control_interface.h @@ -0,0 +1,178 @@ +/* Copyright (C) 2010-2020 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (disk_control_interface.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __DISK_CONTROL_INTERFACE_H +#define __DISK_CONTROL_INTERFACE_H + +#include +#include + +#include + +#include "disk_index_file.h" + +RETRO_BEGIN_DECLS + +/* Holds all all objects to operate the disk + * control interface */ +typedef struct +{ + bool record_enabled; + disk_index_file_t index_record; + unsigned initial_num_images; + struct retro_disk_control_ext_callback cb; +} disk_control_interface_t; + +/*****************/ +/* Configuration */ +/*****************/ + +/* Set v0 disk interface callback functions */ +void disk_control_set_callback( + disk_control_interface_t *disk_control, + const struct retro_disk_control_callback *cb); + +/* Set v1+ disk interface callback functions */ +void disk_control_set_ext_callback( + disk_control_interface_t *disk_control, + const struct retro_disk_control_ext_callback *cb); + +/**********/ +/* Status */ +/**********/ + +/* Returns true if core supports basic disk + * control functionality + * - set_eject_state + * - get_eject_state + * - get_image_index + * - set_image_index + * - get_num_images */ +bool disk_control_enabled( + disk_control_interface_t *disk_control); + +/* Returns true if core supports disk append + * functionality + * - replace_image_index + * - add_image_index */ +bool disk_control_append_enabled( + disk_control_interface_t *disk_control); + +/* Returns true if core supports image + * labels + * - get_image_label */ +bool disk_control_image_label_enabled( + disk_control_interface_t *disk_control); + +/* Returns true if core supports setting + * initial disk index + * - set_initial_image + * - get_image_path */ +bool disk_control_initial_image_enabled( + disk_control_interface_t *disk_control); + +/***********/ +/* Getters */ +/***********/ + +/* Returns true if disk is currently ejected */ +bool disk_control_get_eject_state( + disk_control_interface_t *disk_control); + +/* Returns number of disk images registered + * by the core */ +unsigned disk_control_get_num_images( + disk_control_interface_t *disk_control); + +/* Returns currently selected disk image index */ +unsigned disk_control_get_image_index( + disk_control_interface_t *disk_control); + +/* Fetches core-provided disk image label + * (label is set to an empty string if core + * does not support image labels) */ +void disk_control_get_image_label( + disk_control_interface_t *disk_control, + unsigned index, char *label, size_t len); + +/***********/ +/* Setters */ +/***********/ + +/* Sets the eject state of the virtual disk tray */ +bool disk_control_set_eject_state( + disk_control_interface_t *disk_control, + bool eject, bool verbose); + +/* Sets currently selected disk index + * NOTE: Will fail if disk is not currently ejected */ +bool disk_control_set_index( + disk_control_interface_t *disk_control, + unsigned index, bool verbose); + +/* Increments selected disk index */ +bool disk_control_set_index_next( + disk_control_interface_t *disk_control, + bool verbose); + +/* Decrements selected disk index */ +bool disk_control_set_index_prev( + disk_control_interface_t *disk_control, + bool verbose); + +/* Appends specified image file to disk image list */ +bool disk_control_append_image( + disk_control_interface_t *disk_control, + const char *image_path); + +/*****************************/ +/* 'Initial index' functions */ +/*****************************/ + +/* Attempts to set current core's initial disk index. + * > disk_control->record_enabled will be set to + * 'false' if core does not support initial + * index functionality + * > disk_control->index_record will be loaded + * from file (if an existing record is found) + * NOTE: Must be called immediately before + * loading content */ +bool disk_control_set_initial_index( + disk_control_interface_t *disk_control, + const char *content_path, + const char *dir_savefile); + +/* Checks that initial index has been set correctly + * and provides user notification. + * > Sets disk_control->initial_num_images if + * if functionality is supported by core + * NOTE: Must be called immediately after + * loading content */ +bool disk_control_verify_initial_index(disk_control_interface_t *disk_control); + +/* Saves current disk index to file, if supported + * by current core */ +bool disk_control_save_image_index(disk_control_interface_t *disk_control); + +RETRO_END_DECLS + +#endif diff --git a/disk_index_file.c b/disk_index_file.c new file mode 100644 index 0000000000..6655336ec5 --- /dev/null +++ b/disk_index_file.c @@ -0,0 +1,523 @@ +/* Copyright (C) 2010-2020 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (disk_index_file.c). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include +#include + +#include "file_path_special.h" +#include "verbosity.h" +#include "msg_hash.h" + +#include "disk_index_file.h" + +/****************/ +/* JSON Helpers */ +/****************/ + +typedef struct +{ + JSON_Parser parser; + JSON_Writer writer; + RFILE *file; + unsigned *current_entry_uint_val; + char **current_entry_str_val; + unsigned image_index; + char *image_path; +} DCifJSONContext; + +static JSON_Parser_HandlerResult DCifJSONObjectMemberHandler(JSON_Parser parser, char *pValue, size_t length, JSON_StringAttributes attributes) +{ + DCifJSONContext *pCtx = (DCifJSONContext*)JSON_Parser_GetUserData(parser); + (void)attributes; /* unused */ + + if (pCtx->current_entry_str_val) + { + /* something went wrong */ + RARCH_ERR("[disk index file] JSON parsing failed at line %d.\n", __LINE__); + return JSON_Parser_Abort; + } + + if (length) + { + if (string_is_equal(pValue, "image_index")) + pCtx->current_entry_uint_val = &pCtx->image_index; + else if (string_is_equal(pValue, "image_path")) + pCtx->current_entry_str_val = &pCtx->image_path; + /* ignore unknown members */ + } + + return JSON_Parser_Continue; +} + +static JSON_Parser_HandlerResult DCifJSONNumberHandler(JSON_Parser parser, char *pValue, size_t length, JSON_StringAttributes attributes) +{ + DCifJSONContext *pCtx = (DCifJSONContext*)JSON_Parser_GetUserData(parser); + (void)attributes; /* unused */ + + if (pCtx->current_entry_uint_val && length && !string_is_empty(pValue)) + *pCtx->current_entry_uint_val = string_to_unsigned(pValue); + /* ignore unknown members */ + + pCtx->current_entry_uint_val = NULL; + + return JSON_Parser_Continue; +} + +static JSON_Parser_HandlerResult DCifJSONStringHandler(JSON_Parser parser, char *pValue, size_t length, JSON_StringAttributes attributes) +{ + DCifJSONContext *pCtx = (DCifJSONContext*)JSON_Parser_GetUserData(parser); + (void)attributes; /* unused */ + + if (pCtx->current_entry_str_val && length && !string_is_empty(pValue)) + { + if (*pCtx->current_entry_str_val) + free(*pCtx->current_entry_str_val); + + *pCtx->current_entry_str_val = strdup(pValue); + } + /* ignore unknown members */ + + pCtx->current_entry_str_val = NULL; + + return JSON_Parser_Continue; +} + +static JSON_Writer_HandlerResult DCifJSONOutputHandler(JSON_Writer writer, const char *pBytes, size_t length) +{ + DCifJSONContext *context = (DCifJSONContext*)JSON_Writer_GetUserData(writer); + (void)writer; /* unused */ + + return filestream_write(context->file, pBytes, length) == length ? JSON_Writer_Continue : JSON_Writer_Abort; +} + +static void DCifJSONLogError(DCifJSONContext *pCtx) +{ + if (pCtx->parser && JSON_Parser_GetError(pCtx->parser) != JSON_Error_AbortedByHandler) + { + JSON_Error error = JSON_Parser_GetError(pCtx->parser); + JSON_Location errorLocation = { 0, 0, 0 }; + + (void)JSON_Parser_GetErrorLocation(pCtx->parser, &errorLocation); + RARCH_ERR("[disk index file] Error: Invalid JSON at line %d, column %d (input byte %d) - %s.\n", + (int)errorLocation.line + 1, + (int)errorLocation.column + 1, + (int)errorLocation.byte, + JSON_ErrorString(error)); + } + else if (pCtx->writer && JSON_Writer_GetError(pCtx->writer) != JSON_Error_AbortedByHandler) + { + RARCH_ERR("[disk index file] Error: could not write output - %s.\n", JSON_ErrorString(JSON_Writer_GetError(pCtx->writer))); + } +} + +/******************/ +/* Initialisation */ +/******************/ + +/* Resets existing disk index record */ +static void disk_index_file_reset(disk_index_file_t *disk_index_file) +{ + if (!disk_index_file) + return; + + disk_index_file->modified = false; + disk_index_file->image_index = 0; + disk_index_file->image_path[0] = '\0'; + disk_index_file->file_path[0] = '\0'; +} + +/* Parses disk index file referenced by + * disk_index_file->file_path. + * Does nothing if disk index file does not exist. */ +static bool disk_index_file_read(disk_index_file_t *disk_index_file) +{ + bool success = false; + DCifJSONContext context = {0}; + RFILE *file = NULL; + + /* Sanity check */ + if (!disk_index_file) + return false; + + if (string_is_empty(disk_index_file->file_path)) + return false; + + if (!path_is_valid(disk_index_file->file_path)) + return false; + + /* Attempt to open disk index file */ + file = filestream_open( + disk_index_file->file_path, + RETRO_VFS_FILE_ACCESS_READ, + RETRO_VFS_FILE_ACCESS_HINT_NONE); + + if (!file) + { + RARCH_ERR( + "[disk index file] Failed to open disk index record file: %s\n", + disk_index_file->file_path); + return false; + } + + /* Initialise JSON parser */ + context.image_index = 0; + context.image_path = NULL; + context.parser = JSON_Parser_Create(NULL); + context.file = file; + + if (!context.parser) + { + RARCH_ERR("[disk index file] Failed to create JSON parser.\n"); + goto end; + } + + /* Configure parser */ + JSON_Parser_SetAllowBOM(context.parser, JSON_True); + JSON_Parser_SetNumberHandler(context.parser, &DCifJSONNumberHandler); + JSON_Parser_SetStringHandler(context.parser, &DCifJSONStringHandler); + JSON_Parser_SetObjectMemberHandler(context.parser, &DCifJSONObjectMemberHandler); + JSON_Parser_SetUserData(context.parser, &context); + + /* Read file */ + while (!filestream_eof(file)) + { + /* Disk index files are tiny - use small chunk size */ + char chunk[128] = {0}; + int64_t length = filestream_read(file, chunk, sizeof(chunk)); + + /* Error checking... */ + if (!length && !filestream_eof(file)) + { + RARCH_ERR( + "[disk index file] Failed to read disk index file: %s\n", + disk_index_file->file_path); + JSON_Parser_Free(context.parser); + goto end; + } + + /* Parse chunk */ + if (!JSON_Parser_Parse(context.parser, chunk, length, JSON_False)) + { + RARCH_ERR( + "[disk index file] Error parsing chunk of disk index file: %s\n---snip---\n%s\n---snip---\n", + disk_index_file->file_path, chunk); + DCifJSONLogError(&context); + JSON_Parser_Free(context.parser); + goto end; + } + } + + /* Finalise parsing */ + if (!JSON_Parser_Parse(context.parser, NULL, 0, JSON_True)) + { + RARCH_WARN( + "[disk index file] Error parsing disk index file: %s\n", + disk_index_file->file_path); + DCifJSONLogError(&context); + JSON_Parser_Free(context.parser); + goto end; + } + + /* Free parser */ + JSON_Parser_Free(context.parser); + + /* Copy values read from JSON file */ + disk_index_file->image_index = context.image_index; + + if (!string_is_empty(context.image_path)) + strlcpy( + disk_index_file->image_path, context.image_path, + sizeof(disk_index_file->image_path)); + else + disk_index_file->image_path[0] = '\0'; + + success = true; + +end: + /* Clean up leftover strings */ + if (context.image_path) + free(context.image_path); + + /* Close log file */ + filestream_close(file); + + return success; +} + +/* Initialises existing disk index record, loading + * current parameters if a record file exists. + * Returns false if arguments are invalid. */ +bool disk_index_file_init( + disk_index_file_t *disk_index_file, + const char *content_path, + const char *dir_savefile) +{ + const char *content_file = NULL; + char content_name[PATH_MAX_LENGTH]; + char disk_index_file_dir[PATH_MAX_LENGTH]; + char disk_index_file_path[PATH_MAX_LENGTH]; + + content_name[0] = '\0'; + disk_index_file_dir[0] = '\0'; + disk_index_file_path[0] = '\0'; + + /* Sanity check */ + if (!disk_index_file) + return false; + + /* Disk index records are only valid when loading + * content (i.e. they do not apply to contentless + * cores) */ + if (string_is_empty(content_path)) + goto error; + + /* Build disk index file path */ + + /* > Get content name */ + content_file = path_basename(content_path); + if (string_is_empty(content_file)) + goto error; + + strlcpy(content_name, content_file, sizeof(content_name)); + path_remove_extension(content_name); + if (string_is_empty(content_name)) + goto error; + + /* > Get disk index file directory */ + if (!string_is_empty(dir_savefile)) + strlcpy(disk_index_file_dir, dir_savefile, sizeof(disk_index_file_dir)); + else + { + /* Use content directory */ + strlcpy(disk_index_file_dir, content_path, sizeof(disk_index_file_dir)); + path_basedir(disk_index_file_dir); + } + + /* > Create directory, if required */ + if (!path_is_directory(disk_index_file_dir)) + { + if (!path_mkdir(disk_index_file_dir)) + { + RARCH_ERR( + "[disk index file] failed to create directory for disk index file: %s\n", + disk_index_file_dir); + goto error; + } + } + + /* > Generate final path */ + fill_pathname_join( + disk_index_file_path, disk_index_file_dir, + content_name, sizeof(disk_index_file_path)); + strlcat( + disk_index_file_path, + file_path_str(FILE_PATH_DISK_CONTROL_INDEX_EXTENSION), + sizeof(disk_index_file_path)); + if (string_is_empty(disk_index_file_path)) + goto error; + + /* All is well - reset disk_index_file_t and + * attempt to load values from file */ + disk_index_file_reset(disk_index_file); + strlcpy( + disk_index_file->file_path, + disk_index_file_path, + sizeof(disk_index_file->file_path)); + + /* > If file does not exist (or some other + * error occurs) then this is a new record + * - in this case, 'modified' flag should + * be set to 'true' */ + if (!disk_index_file_read(disk_index_file)) + disk_index_file->modified = true; + + return true; + +error: + disk_index_file_reset(disk_index_file); + return false; +} + +/***********/ +/* Setters */ +/***********/ + +/* Sets image index and path */ +void disk_index_file_set( + disk_index_file_t *disk_index_file, + unsigned image_index, + const char *image_path) +{ + if (!disk_index_file) + return; + + /* Check whether image index should be updated */ + if (disk_index_file->image_index != image_index) + { + disk_index_file->image_index = image_index; + disk_index_file->modified = true; + } + + /* Check whether image path should be updated */ + if (!string_is_empty(image_path)) + { + if (!string_is_equal(disk_index_file->image_path, image_path)) + { + strlcpy( + disk_index_file->image_path, image_path, + sizeof(disk_index_file->image_path)); + disk_index_file->modified = true; + } + } + else if (!string_is_empty(disk_index_file->image_path)) + { + disk_index_file->image_path[0] = '\0'; + disk_index_file->modified = true; + } +} + +/**********/ +/* Saving */ +/**********/ + +/* Saves specified disk index file to disk */ +bool disk_index_file_save(disk_index_file_t *disk_index_file) +{ + char value_string[32]; + DCifJSONContext context = {0}; + RFILE *file = NULL; + bool success = false; + int n; + + value_string[0] = '\0'; + + /* Sanity check */ + if (!disk_index_file) + return false; + + /* > Only save file if record has been modified. + * We return true in this case - since there + * was nothing to write, there can be no + * 'failure' */ + if (!disk_index_file->modified) + return true; + + if (string_is_empty(disk_index_file->file_path)) + return false; + + RARCH_LOG( + "[disk index file] Saving disk index file: %s\n", + disk_index_file->file_path); + + /* Attempt to open disk index file */ + file = filestream_open( + disk_index_file->file_path, + RETRO_VFS_FILE_ACCESS_WRITE, + RETRO_VFS_FILE_ACCESS_HINT_NONE); + + if (!file) + { + RARCH_ERR( + "[disk index file] Failed to open disk index file: %s\n", + disk_index_file->file_path); + return false; + } + + /* Initialise JSON writer */ + context.writer = JSON_Writer_Create(NULL); + context.file = file; + + if (!context.writer) + { + RARCH_ERR("[disk index file] Failed to create JSON writer.\n"); + goto end; + } + + /* Configure JSON writer */ + JSON_Writer_SetOutputEncoding(context.writer, JSON_UTF8); + JSON_Writer_SetOutputHandler(context.writer, &DCifJSONOutputHandler); + JSON_Writer_SetUserData(context.writer, &context); + + /* Write output file */ + JSON_Writer_WriteStartObject(context.writer); + JSON_Writer_WriteNewLine(context.writer); + + /* > Version entry */ + JSON_Writer_WriteSpace(context.writer, 2); + JSON_Writer_WriteString(context.writer, "version", + STRLEN_CONST("version"), JSON_UTF8); + JSON_Writer_WriteColon(context.writer); + JSON_Writer_WriteSpace(context.writer, 1); + JSON_Writer_WriteString(context.writer, "1.0", + STRLEN_CONST("1.0"), JSON_UTF8); + JSON_Writer_WriteComma(context.writer); + JSON_Writer_WriteNewLine(context.writer); + + /* > image index entry */ + n = snprintf( + value_string, sizeof(value_string), + "%u", disk_index_file->image_index); + if ((n < 0) || (n >= 32)) + n = 0; /* Silence GCC warnings... */ + + JSON_Writer_WriteSpace(context.writer, 2); + JSON_Writer_WriteString(context.writer, "image_index", + STRLEN_CONST("image_index"), JSON_UTF8); + JSON_Writer_WriteColon(context.writer); + JSON_Writer_WriteSpace(context.writer, 1); + JSON_Writer_WriteNumber(context.writer, value_string, + strlen(value_string), JSON_UTF8); + JSON_Writer_WriteComma(context.writer); + JSON_Writer_WriteNewLine(context.writer); + + /* > image path entry */ + JSON_Writer_WriteSpace(context.writer, 2); + JSON_Writer_WriteString(context.writer, "image_path", + STRLEN_CONST("image_path"), JSON_UTF8); + JSON_Writer_WriteColon(context.writer); + JSON_Writer_WriteSpace(context.writer, 1); + JSON_Writer_WriteString(context.writer, + disk_index_file->image_path, + strlen(disk_index_file->image_path), JSON_UTF8); + JSON_Writer_WriteNewLine(context.writer); + + /* > Finalise */ + JSON_Writer_WriteEndObject(context.writer); + JSON_Writer_WriteNewLine(context.writer); + + /* Free JSON writer */ + JSON_Writer_Free(context.writer); + + /* Changes have been written - record + * is no longer considered to be in a + * 'modified' state */ + disk_index_file->modified = false; + success = true; + +end: + /* Close disk index file */ + filestream_close(file); + + return success; +} diff --git a/disk_index_file.h b/disk_index_file.h new file mode 100644 index 0000000000..109bc82c12 --- /dev/null +++ b/disk_index_file.h @@ -0,0 +1,76 @@ +/* Copyright (C) 2010-2020 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (disk_index_file.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __DISK_INDEX_FILE_H +#define __DISK_INDEX_FILE_H + +#include +#include +#include + +#include + +RETRO_BEGIN_DECLS + +/* Holds all parameters required for recording + * the last disk image selected via the disk + * control interface */ +typedef struct +{ + bool modified; + unsigned image_index; + char image_path[PATH_MAX_LENGTH]; + char file_path[PATH_MAX_LENGTH]; +} disk_index_file_t; + +/******************/ +/* Initialisation */ +/******************/ + +/* Initialises existing disk index record, loading + * current parameters if a record file exists. + * Returns false if arguments are invalid. */ +bool disk_index_file_init( + disk_index_file_t *disk_index_file, + const char *content_path, + const char *dir_savefile); + +/***********/ +/* Setters */ +/***********/ + +/* Sets image index and path */ +void disk_index_file_set( + disk_index_file_t *disk_index_file, + unsigned image_index, + const char *image_path); + +/**********/ +/* Saving */ +/**********/ + +/* Saves specified disk index file to disk */ +bool disk_index_file_save(disk_index_file_t *disk_index_file); + +RETRO_END_DECLS + +#endif diff --git a/file_path_special.h b/file_path_special.h index a6b13d2671..12e85bb806 100644 --- a/file_path_special.h +++ b/file_path_special.h @@ -95,7 +95,8 @@ enum file_path_enum FILE_PATH_CORE_INFO_EXTENSION, FILE_PATH_RUNTIME_EXTENSION, FILE_PATH_DEFAULT_EVENT_LOG, - FILE_PATH_EVENT_LOG_EXTENSION + FILE_PATH_EVENT_LOG_EXTENSION, + FILE_PATH_DISK_CONTROL_INDEX_EXTENSION }; enum application_special_type diff --git a/file_path_str.c b/file_path_str.c index 97e7e16887..dc09b6f360 100644 --- a/file_path_str.c +++ b/file_path_str.c @@ -227,6 +227,9 @@ const char *file_path_str(enum file_path_enum enum_idx) case FILE_PATH_EVENT_LOG_EXTENSION: str = ".log"; break; + case FILE_PATH_DISK_CONTROL_INDEX_EXTENSION: + str = ".ldci"; + break; case FILE_PATH_UNKNOWN: default: break; diff --git a/griffin/griffin.c b/griffin/griffin.c index 40312bb175..b4bd31a673 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -156,9 +156,10 @@ CONFIG FILE #include "../libretro-common/file/config_file_userdata.c" /*============================================================ -RUNTIME FILE +CONTENT METADATA RECORDS ============================================================ */ #include "../runtime_file.c" +#include "../disk_index_file.c" /*============================================================ ACHIEVEMENTS @@ -1641,3 +1642,8 @@ PLAYLIST NAME SANITIZATION MANUAL CONTENT SCAN ============================================================ */ #include "../manual_content_scan.c" + +/*============================================================ +DISK CONTROL INTERFACE +============================================================ */ +#include "../disk_control_interface.c" diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index fdfaafb3a8..5aaddcd2d9 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -836,6 +836,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_DISK_OPTIONS, "Disk Control" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_DISK, + "No disk selected" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DONT_CARE, "Don't care" @@ -4791,6 +4795,10 @@ MSG_HASH( MSG_APPENDED_DISK, "Appended disk" ) +MSG_HASH( + MSG_FAILED_TO_APPEND_DISK, + "Failed to append disk" + ) MSG_HASH( MSG_APPLICATION_DIR, "Application Dir" @@ -5607,6 +5615,14 @@ MSG_HASH( MSG_VIRTUAL_DISK_TRAY, "virtual disk tray." ) +MSG_HASH( + MSG_VIRTUAL_DISK_TRAY_EJECT, + "eject" + ) +MSG_HASH( + MSG_VIRTUAL_DISK_TRAY_CLOSE, + "close" + ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_LATENCY, "Desired audio latency in milliseconds. Might not be honored if the audio driver can't provide given latency." @@ -8977,6 +8993,10 @@ MSG_HASH( MSG_FAILED_TO_SET_DISK, "Failed to set disk" ) +MSG_HASH( + MSG_FAILED_TO_SET_INITIAL_DISK, + "Failed to set last used disk..." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_QT_CORE_OPTIONS, "Core Options" diff --git a/menu/cbs/menu_cbs_get_value.c b/menu/cbs/menu_cbs_get_value.c index fea114f782..a0370c1c25 100644 --- a/menu/cbs/menu_cbs_get_value.c +++ b/menu/cbs/menu_cbs_get_value.c @@ -762,29 +762,22 @@ static void menu_action_setting_disp_set_label_menu_disk_index( const char *path, char *s2, size_t len2) { - unsigned images = 0, current = 0; - struct retro_disk_control_ext_callback *control = NULL; - rarch_system_info_t *system = runloop_get_system_info(); + unsigned images = 0; + unsigned current = 0; + rarch_system_info_t *system = runloop_get_system_info(); if (!system) return; - control = &system->disk_control_cb; - - if (!control) + if (!disk_control_enabled(&system->disk_control)) return; *w = 19; *s = '\0'; strlcpy(s2, path, len2); - if (!control->get_num_images) - return; - if (!control->get_image_index) - return; - - images = control->get_num_images(); - current = control->get_image_index(); + images = disk_control_get_num_images(&system->disk_control); + current = disk_control_get_image_index(&system->disk_control); if (current >= images) strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_DISK), len); diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 4dbd9cb42a..4881271f60 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -6116,15 +6116,7 @@ static int action_ok_disk_cycle_tray_status(const char *path, /* Get disk eject state *before* toggling drive status */ if (sys_info) - { - const struct retro_disk_control_ext_callback *control = - (const struct retro_disk_control_ext_callback*) - &sys_info->disk_control_cb; - - if (control) - if (control->get_eject_state) - disk_ejected = control->get_eject_state(); - } + disk_ejected = disk_control_get_eject_state(&sys_info->disk_control); /* Only want to display a notification if we are * going to resume content immediately after diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index fd48cb18e5..8a233614e0 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2026,7 +2026,7 @@ static int menu_displaylist_parse_load_content_settings( } if ((!rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL)) - && system->disk_control_cb.get_num_images) + && disk_control_enabled(&system->disk_control)) if (menu_entries_append_enum(list, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DISK_OPTIONS), msg_hash_to_str(MENU_ENUM_LABEL_DISK_OPTIONS), @@ -3242,28 +3242,19 @@ static unsigned menu_displaylist_parse_content_information( static unsigned menu_displaylist_parse_disk_options( file_list_t *list) { - unsigned count = 0; - rarch_system_info_t *sys_info = - runloop_get_system_info(); - const struct retro_disk_control_ext_callback *control = NULL; - bool disk_ejected; + unsigned count = 0; + rarch_system_info_t *sys_info = runloop_get_system_info(); + bool disk_ejected = false; /* Sanity Check */ if (!sys_info) return count; - control = (const struct retro_disk_control_ext_callback*) - &sys_info->disk_control_cb; - - if (!control || - !control->get_num_images || - !control->get_image_index || - !control->get_eject_state || - !control->set_eject_state) + if (!disk_control_enabled(&sys_info->disk_control)) return count; /* Check whether disk is currently ejected */ - disk_ejected = control->get_eject_state(); + disk_ejected = disk_control_get_eject_state(&sys_info->disk_control); /* Always show a 'DISK_CYCLE_TRAY_STATUS' entry * > These perform the same function, but just have @@ -3294,8 +3285,9 @@ static unsigned menu_displaylist_parse_disk_options( MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_INDEX, 0, 0)) count++; - /* If replace_image_index() is undefined, can stop here */ - if (!control->replace_image_index) + /* If core does not support appending images, + * can stop here */ + if (!disk_control_append_enabled(&sys_info->disk_control)) return count; /* Append image does the following: @@ -5356,25 +5348,19 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct if (sys_info) { - const struct retro_disk_control_ext_callback *control = - (const struct retro_disk_control_ext_callback*) - &sys_info->disk_control_cb; - - /* Check that the required disk control interface - * functions are defined */ - if (control && - control->get_num_images && - control->get_image_index) + if (disk_control_enabled(&sys_info->disk_control)) { - unsigned num_images = control->get_num_images(); - unsigned current_image = control->get_image_index(); + unsigned num_images = + disk_control_get_num_images(&sys_info->disk_control); + unsigned current_image = + disk_control_get_image_index(&sys_info->disk_control); unsigned num_digits = 0; unsigned i; /* If core supports labels, index value string * should be padded to maximum width (otherwise * labels will be misaligned/ugly) */ - if (control->get_image_label) + if (disk_control_image_label_enabled(&sys_info->disk_control)) { unsigned digit_counter = num_images; do @@ -5395,9 +5381,9 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct image_label[0] = '\0'; /* Get image label, if supported by core */ - if (control->get_image_label) - if (!control->get_image_label(i, image_label, sizeof(image_label))) - image_label[0] = '\0'; + disk_control_get_image_label( + &sys_info->disk_control, + i, image_label, sizeof(image_label)); /* Get string representation of disk index * > Note that displayed index starts at '1', diff --git a/msg_hash.h b/msg_hash.h index 31385aeeac..4f0be461a4 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -169,6 +169,7 @@ enum msg_hash_enums MSG_UNKNOWN = 0, MSG_SETTING_DISK_IN_TRAY, MSG_FAILED_TO_SET_DISK, + MSG_FAILED_TO_SET_INITIAL_DISK, MSG_NETPLAY_FAILED, MSG_UNKNOWN_NETPLAY_COMMAND_RECEIVED, MSG_CONNECTING_TO_NETPLAY_HOST, @@ -412,6 +413,7 @@ enum msg_hash_enums MSG_FAILED_TO_REMOVE_TEMPORARY_FILE, MSG_STARTING_MOVIE_PLAYBACK, MSG_APPENDED_DISK, + MSG_FAILED_TO_APPEND_DISK, MSG_SKIPPING_SRAM_LOAD, MSG_CONFIG_DIRECTORY_NOT_SET, MSG_SAVED_STATE_TO_SLOT, @@ -438,6 +440,8 @@ enum msg_hash_enums MSG_VIRTUAL_DISK_TRAY, MSG_REMOVED_DISK_FROM_TRAY, MSG_FAILED_TO_REMOVE_DISK_FROM_TRAY, + MSG_VIRTUAL_DISK_TRAY_EJECT, + MSG_VIRTUAL_DISK_TRAY_CLOSE, MSG_GOT_INVALID_DISK_INDEX, MSG_INDEX_FILE, MSG_DOWNLOADING, diff --git a/retroarch.c b/retroarch.c index 735239a4d3..426772a3d7 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1601,7 +1601,7 @@ static void path_set_redirect(void) fill_pathname_dir(global->name.savefile, !string_is_empty(path_main_basename) ? path_main_basename : system && !string_is_empty(system->library_name) ? system->library_name : "", - ".srm", + file_path_str(FILE_PATH_SRM_EXTENSION), sizeof(global->name.savefile)); RARCH_LOG("%s \"%s\".\n", msg_hash_to_str(MSG_REDIRECTING_SAVEFILE_TO), @@ -1613,7 +1613,7 @@ static void path_set_redirect(void) fill_pathname_dir(global->name.savestate, !string_is_empty(path_main_basename) ? path_main_basename : system && !string_is_empty(system->library_name) ? system->library_name : "", - ".state", + file_path_str(FILE_PATH_STATE_EXTENSION), sizeof(global->name.savestate)); RARCH_LOG("%s \"%s\".\n", msg_hash_to_str(MSG_REDIRECTING_SAVESTATE_TO), @@ -1625,7 +1625,7 @@ static void path_set_redirect(void) /* FIXME: Should this optionally use system->library_name like the others? */ fill_pathname_dir(global->name.cheatfile, !string_is_empty(path_main_basename) ? path_main_basename : "", - ".state", + file_path_str(FILE_PATH_CHT_EXTENSION), sizeof(global->name.cheatfile)); RARCH_LOG("%s \"%s\".\n", msg_hash_to_str(MSG_REDIRECTING_CHEATFILE_TO), @@ -5221,126 +5221,6 @@ finish: } #endif -/** - * command_event_disk_control_set_eject: - * @new_state : Eject or close the virtual drive tray. - * false (0) : Close - * true (1) : Eject - * @print_log : Show message onscreen. - * - * Ejects/closes of the virtual drive tray. - **/ -static void command_event_disk_control_set_eject(bool new_state, bool print_log) -{ - char msg[128]; - bool error = false; - const struct retro_disk_control_ext_callback *control = NULL; - rarch_system_info_t *info = &runloop_system; - - msg[0] = '\0'; - - if (info) - control = (const struct retro_disk_control_ext_callback*)&info->disk_control_cb; - - if (!control || !control->get_num_images) - return; - - if (control->set_eject_state(new_state)) - snprintf(msg, sizeof(msg), "%s %s", - new_state ? - msg_hash_to_str(MSG_DISK_EJECTED) : - msg_hash_to_str(MSG_DISK_CLOSED), - msg_hash_to_str(MSG_VIRTUAL_DISK_TRAY)); - else - { - error = true; - snprintf(msg, sizeof(msg), "%s %s %s", - msg_hash_to_str(MSG_FAILED_TO), - new_state ? "eject" : "close", - msg_hash_to_str(MSG_VIRTUAL_DISK_TRAY)); - } - - if (!string_is_empty(msg)) - { - if (error) - RARCH_ERR("%s\n", msg); - else - RARCH_LOG("%s\n", msg); - - /* Errors should always be displayed */ - if (print_log || error) - runloop_msg_queue_push( - msg, 1, error ? 180 : 60, - true, NULL, - MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - } -} - -/** - * command_event_disk_control_set_index: - * @idx : Index of disk to set as current. - * @print_log : Show message onscreen. - * - * Sets current disk to @index. - **/ -static void command_event_disk_control_set_index(unsigned idx, bool print_log) -{ - unsigned num_disks; - char msg[128]; - bool error = false; - const struct retro_disk_control_ext_callback *control = NULL; - rarch_system_info_t *info = &runloop_system; - - msg[0] = '\0'; - - if (info) - control = (const struct retro_disk_control_ext_callback*)&info->disk_control_cb; - - if (!control || !control->get_num_images) - return; - - num_disks = control->get_num_images(); - - if (control->set_image_index(idx)) - { - if (idx < num_disks) - snprintf(msg, sizeof(msg), "%s: %u/%u.", - msg_hash_to_str(MSG_SETTING_DISK_IN_TRAY), - idx + 1, num_disks); - else - strlcpy(msg, - msg_hash_to_str(MSG_REMOVED_DISK_FROM_TRAY), - sizeof(msg)); - } - else - { - if (idx < num_disks) - snprintf(msg, sizeof(msg), "%s %u/%u.", - msg_hash_to_str(MSG_FAILED_TO_SET_DISK), - idx + 1, num_disks); - else - strlcpy(msg, - msg_hash_to_str(MSG_FAILED_TO_REMOVE_DISK_FROM_TRAY), - sizeof(msg)); - error = true; - } - - if (!string_is_empty(msg)) - { - if (error) - RARCH_ERR("%s\n", msg); - else - RARCH_LOG("%s\n", msg); - - /* Errors should always be displayed */ - if (print_log || error) - runloop_msg_queue_push( - msg, 1, error ? 180 : 60, - true, NULL, - MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - } -} - /** * command_event_disk_control_append_image: * @path : Path to disk image. @@ -5349,48 +5229,14 @@ static void command_event_disk_control_set_index(unsigned idx, bool print_log) **/ static bool command_event_disk_control_append_image(const char *path) { - unsigned new_idx; - char msg[128]; - struct retro_game_info info = {0}; - const struct retro_disk_control_ext_callback *control = NULL; - rarch_system_info_t *sysinfo = &runloop_system; - const char *disk_filename = NULL; + rarch_system_info_t *sys_info = &runloop_system; - msg[0] = '\0'; - - if (string_is_empty(path)) + if (!sys_info) return false; - disk_filename = path_basename(path); - - if (string_is_empty(disk_filename)) + if (!disk_control_append_image(&sys_info->disk_control, path)) return false; - if (sysinfo) - control = (const struct retro_disk_control_ext_callback*) - &sysinfo->disk_control_cb; - - if (!control) - return false; - - command_event_disk_control_set_eject(true, false); - - control->add_image_index(); - new_idx = control->get_num_images(); - if (!new_idx) - return false; - new_idx--; - - info.path = path; - control->replace_image_index(new_idx, &info); - - snprintf(msg, sizeof(msg), "%s: %s", msg_hash_to_str(MSG_APPENDED_DISK), disk_filename); - RARCH_LOG("%s\n", msg); - /* This message should always be displayed, since - * the menu itself does not provide sufficient - * visual feedback */ - runloop_msg_queue_push(msg, 0, 120, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - #ifdef HAVE_THREADS retroarch_autosave_deinit(); #endif @@ -5407,80 +5253,10 @@ static bool command_event_disk_control_append_image(const char *path) } command_event(CMD_EVENT_AUTOSAVE_INIT, NULL); - command_event_disk_control_set_index(new_idx, false); - command_event_disk_control_set_eject(false, false); return true; } -/** - * command_event_check_disk_prev: - * @control : Handle to disk control handle. - * @print_log : Show message onscreen. - * - * Perform disk cycle to previous index action (Core Disk Options). - **/ -static void command_event_check_disk_prev( - const struct retro_disk_control_ext_callback *control, bool print_log) -{ - unsigned num_disks = 0; - unsigned current = 0; - bool disk_prev_enable = false; - - if (!control || !control->get_num_images) - return; - if (!control->get_image_index) - return; - - num_disks = control->get_num_images(); - current = control->get_image_index(); - disk_prev_enable = num_disks && num_disks != UINT_MAX; - - if (!disk_prev_enable) - { - RARCH_ERR("%s.\n", msg_hash_to_str(MSG_GOT_INVALID_DISK_INDEX)); - return; - } - - if (current > 0) - current--; - command_event_disk_control_set_index(current, print_log); -} - -/** - * command_event_check_disk_next: - * @control : Handle to disk control handle. - * @print_log : Show message onscreen. - * - * Perform disk cycle to next index action (Core Disk Options). - **/ -static void command_event_check_disk_next( - const struct retro_disk_control_ext_callback *control, bool print_log) -{ - unsigned num_disks = 0; - unsigned current = 0; - bool disk_next_enable = false; - - if (!control || !control->get_num_images) - return; - if (!control->get_image_index) - return; - - num_disks = control->get_num_images(); - current = control->get_image_index(); - disk_next_enable = num_disks && num_disks != UINT_MAX; - - if (!disk_next_enable) - { - RARCH_ERR("%s.\n", msg_hash_to_str(MSG_GOT_INVALID_DISK_INDEX)); - return; - } - - if (current < num_disks - 1) - current++; - command_event_disk_control_set_index(current, print_log); -} - /** * event_set_volume: * @gain : amount of gain to be applied to current volume level. @@ -6033,9 +5809,18 @@ static bool command_event_init_core(enum rarch_core_type type) current_core.retro_init(); current_core.inited = true; + /* Attempt to set initial disk index */ + disk_control_set_initial_index( + &runloop_system.disk_control, + path_get(RARCH_PATH_CONTENT), + dir_get(RARCH_DIR_CURRENT_SAVEFILE)); + if (!event_init_content()) return false; + /* Verify that initial disk index was set correctly */ + disk_control_verify_initial_index(&runloop_system.disk_control); + if (!core_load(settings->uints.input_poll_type_behavior)) return false; @@ -6816,11 +6601,16 @@ bool command_event(enum event_command cmd, void *data) bool contentless = false; bool is_inited = false; content_ctx_info_t content_info = {0}; + rarch_system_info_t *sys_info = &runloop_system; content_get_status(&contentless, &is_inited); runloop_core_running = false; + /* Save last selected disk index, if required */ + if (sys_info) + disk_control_save_image_index(&sys_info->disk_control); + command_event_runtime_log_deinit(); command_event_save_auto_state(); command_event_disable_overrides(); @@ -7136,6 +6926,12 @@ TODO: Add a setting for these tweaks */ case CMD_EVENT_CORE_DEINIT: { struct retro_hw_render_callback *hwr = NULL; + rarch_system_info_t *sys_info = &runloop_system; + + /* Save last selected disk index, if required */ + if (sys_info) + disk_control_save_image_index(&sys_info->disk_control); + command_event_runtime_log_deinit(); content_reset_savestate_backups(); hwr = video_driver_get_hw_context_internal(); @@ -7584,33 +7380,29 @@ TODO: Add a setting for these tweaks */ break; case CMD_EVENT_DISK_EJECT_TOGGLE: { - rarch_system_info_t *info = &runloop_system; - bool *show_msg = (bool*)data; + rarch_system_info_t *sys_info = &runloop_system; + bool *show_msg = (bool*)data; - if (info && info->disk_control_cb.get_num_images) + if (!sys_info) + return false; + + if (disk_control_enabled(&sys_info->disk_control)) { - const struct retro_disk_control_ext_callback *control = - (const struct retro_disk_control_ext_callback*) - &info->disk_control_cb; + bool eject = !disk_control_get_eject_state(&sys_info->disk_control); + bool verbose = true; + bool refresh = false; - if (control) - { - bool new_state = !control->get_eject_state(); - bool print_log = true; - bool refresh = false; + if (show_msg) + verbose = *show_msg; - if (show_msg) - print_log = *show_msg; - - command_event_disk_control_set_eject(new_state, print_log); + disk_control_set_eject_state(&sys_info->disk_control, eject, verbose); #if defined(HAVE_MENU) - /* It is necessary to refresh the disk options - * menu when toggling the tray state */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + /* It is necessary to refresh the disk options + * menu when toggling the tray state */ + menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); + menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); #endif - } } else runloop_msg_queue_push( @@ -7621,26 +7413,20 @@ TODO: Add a setting for these tweaks */ break; case CMD_EVENT_DISK_NEXT: { - rarch_system_info_t *info = &runloop_system; - bool *show_msg = (bool*)data; + rarch_system_info_t *sys_info = &runloop_system; + bool *show_msg = (bool*)data; - if (info && info->disk_control_cb.get_num_images) + if (!sys_info) + return false; + + if (disk_control_enabled(&sys_info->disk_control)) { - const struct retro_disk_control_ext_callback *control = - (const struct retro_disk_control_ext_callback*) - &info->disk_control_cb; - bool print_log = true; - - if (!control) - return false; - - if (!control->get_eject_state()) - return false; + bool verbose = true; if (show_msg) - print_log = *show_msg; + verbose = *show_msg; - command_event_check_disk_next(control, print_log); + disk_control_set_index_next(&sys_info->disk_control, verbose); } else runloop_msg_queue_push( @@ -7651,26 +7437,20 @@ TODO: Add a setting for these tweaks */ break; case CMD_EVENT_DISK_PREV: { - rarch_system_info_t *info = &runloop_system; - bool *show_msg = (bool*)data; + rarch_system_info_t *sys_info = &runloop_system; + bool *show_msg = (bool*)data; - if (info && info->disk_control_cb.get_num_images) + if (!sys_info) + return false; + + if (disk_control_enabled(&sys_info->disk_control)) { - const struct retro_disk_control_ext_callback *control = - (const struct retro_disk_control_ext_callback*) - &info->disk_control_cb; - bool print_log = true; - - if (!control) - return false; - - if (!control->get_eject_state()) - return false; + bool verbose = true; if (show_msg) - print_log = *show_msg; + verbose = *show_msg; - command_event_check_disk_prev(control, print_log); + disk_control_set_index_prev(&sys_info->disk_control, verbose); } else runloop_msg_queue_push( @@ -7681,25 +7461,16 @@ TODO: Add a setting for these tweaks */ break; case CMD_EVENT_DISK_INDEX: { - rarch_system_info_t *info = &runloop_system; - unsigned *index = (unsigned*)data; + rarch_system_info_t *sys_info = &runloop_system; + unsigned *index = (unsigned*)data; - if (!index) + if (!sys_info || !index) return false; - if (info && info->disk_control_cb.get_num_images) - { - const struct retro_disk_control_ext_callback *control = - (const struct retro_disk_control_ext_callback*) - &info->disk_control_cb; - - if (!control) - return false; - - /* Note: Menu itself provides visual feedback - no - * need to print info message to screen */ - command_event_disk_control_set_index(*index, false); - } + /* Note: Menu itself provides visual feedback - no + * need to print info message to screen */ + if (disk_control_enabled(&sys_info->disk_control)) + disk_control_set_index(&sys_info->disk_control, *index, false); else runloop_msg_queue_push( msg_hash_to_str(MSG_CORE_DOES_NOT_SUPPORT_DISK_OPTIONS), @@ -9815,30 +9586,25 @@ static bool rarch_environment_cb(unsigned cmd, void *data) const struct retro_disk_control_callback *control_cb = (const struct retro_disk_control_callback*)data; - if (control_cb && system) + if (system) { RARCH_LOG("[Environ]: SET_DISK_CONTROL_INTERFACE.\n"); - - system->disk_control_cb.set_eject_state = control_cb->set_eject_state; - system->disk_control_cb.get_eject_state = control_cb->get_eject_state; - system->disk_control_cb.get_image_index = control_cb->get_image_index; - system->disk_control_cb.set_image_index = control_cb->set_image_index; - system->disk_control_cb.get_num_images = control_cb->get_num_images; - system->disk_control_cb.replace_image_index = control_cb->replace_image_index; - system->disk_control_cb.add_image_index = control_cb->add_image_index; - - system->disk_control_cb.set_initial_image = NULL; - system->disk_control_cb.get_image_path = NULL; - system->disk_control_cb.get_image_label = NULL; + disk_control_set_callback(&system->disk_control, control_cb); } } break; case RETRO_ENVIRONMENT_SET_DISK_CONTROL_EXT_INTERFACE: - RARCH_LOG("[Environ]: SET_DISK_CONTROL_EXT_INTERFACE.\n"); - if (system) - system->disk_control_cb = - *(const struct retro_disk_control_ext_callback*)data; + { + const struct retro_disk_control_ext_callback *control_cb = + (const struct retro_disk_control_ext_callback*)data; + + if (system) + { + RARCH_LOG("[Environ]: SET_DISK_CONTROL_EXT_INTERFACE.\n"); + disk_control_set_ext_callback(&system->disk_control, control_cb); + } + } break; case RETRO_ENVIRONMENT_GET_PREFERRED_HW_RENDER: diff --git a/runtime_file.c b/runtime_file.c index e9018f7faf..d6af1644f5 100644 --- a/runtime_file.c +++ b/runtime_file.c @@ -409,7 +409,7 @@ runtime_log_t *runtime_log_init( /* Build final log file path */ fill_pathname_join(log_file_path, log_file_dir, content_name, sizeof(log_file_path)); - strlcat(log_file_path, ".lrtl", sizeof(log_file_path)); + strlcat(log_file_path, file_path_str(FILE_PATH_RUNTIME_EXTENSION), sizeof(log_file_path)); if (string_is_empty(log_file_path)) return NULL; From 528edf7e82c6ce02d87b16308e16902d3d349c60 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 22 Jan 2020 18:53:54 +0100 Subject: [PATCH 133/148] (Discord) Cleanups - we might want to do a clean implementation of all this someday as Discord RPC is deprecated anyway --- deps/discord-rpc/.clang-format | 92 -- deps/discord-rpc/.gitignore | 5 - deps/discord-rpc/.travis.yml | 47 - deps/discord-rpc/CMakeLists.txt | 56 - deps/discord-rpc/README.md | 91 -- deps/discord-rpc/appveyor.yml | 17 - deps/discord-rpc/build.py | 304 ---- deps/discord-rpc/documentation/hard-mode.md | 164 --- .../documentation/images/rp-dev-dashboard.png | Bin 325539 -> 0 bytes .../documentation/images/rp-profile-view.png | Bin 1398658 -> 0 bytes .../images/rp-secret-example.png | Bin 14447 -> 0 bytes .../examples/button-clicker/.gitignore | 8 - .../Assets/DiscordController.cs | 129 -- .../Assets/DiscordController.cs.meta | 12 - .../button-clicker/Assets/DiscordRpc.cs | 198 --- .../button-clicker/Assets/DiscordRpc.cs.meta | 12 - .../Assets/Editor/BuildHelper.cs | 101 -- .../Assets/Editor/BuildHelper.cs.meta | 13 - .../examples/button-clicker/Assets/main.unity | 1278 ----------------- .../button-clicker/Assets/main.unity.meta | 8 - .../ProjectSettings/AudioManager.asset | 17 - .../ProjectSettings/ClusterInputManager.asset | 6 - .../ProjectSettings/DynamicsManager.asset | 20 - .../ProjectSettings/EditorBuildSettings.asset | 10 - .../ProjectSettings/EditorSettings.asset | 16 - .../ProjectSettings/GraphicsSettings.asset | 61 - .../ProjectSettings/InputManager.asset | 295 ---- .../ProjectSettings/NavMeshAreas.asset | 89 -- .../ProjectSettings/NetworkManager.asset | 8 - .../ProjectSettings/Physics2DSettings.asset | 37 - .../ProjectSettings/ProjectSettings.asset | 610 -------- .../ProjectSettings/ProjectVersion.txt | 1 - .../ProjectSettings/QualitySettings.asset | 193 --- .../ProjectSettings/TagManager.asset | 43 - .../ProjectSettings/TimeManager.asset | 9 - .../UnityConnectSettings.asset | 34 - .../UnityPackageManager/manifest.json | 4 - .../examples/send-presence/CMakeLists.txt | 21 - .../examples/send-presence/send-presence.c | 205 --- .../examples/unrealstatus/.gitignore | 78 - .../unrealstatus/Config/DefaultEditor.ini | 0 .../unrealstatus/Config/DefaultEngine.ini | 54 - .../unrealstatus/Config/DefaultGame.ini | 7 - .../unrealstatus/Content/MainScreenBP.uasset | Bin 50332 -> 0 bytes .../Content/MouseGameModeBP.uasset | Bin 17950 -> 0 bytes .../Content/MousePlayerControllerBP.uasset | Bin 16981 -> 0 bytes .../unrealstatus/Content/ShowTheUILevel.umap | Bin 806708 -> 0 bytes .../Plugins/discordrpc/DiscordRpc.uplugin | 29 - .../Plugins/discordrpc/Resources/Icon128.png | Bin 9834 -> 0 bytes .../Plugins/discordrpc/Resources/discord.png | Bin 9834 -> 0 bytes .../Source/DiscordRpc/DiscordRpc.Build.cs | 57 - .../Source/DiscordRpc/Private/DiscordRpc.cpp | 76 - .../Private/DiscordRpcBlueprint.cpp | 171 --- .../DiscordRpc/Private/DiscordRpcPrivatePCH.h | 2 - .../Source/DiscordRpc/Public/DiscordRpc.h | 20 - .../DiscordRpc/Public/DiscordRpcBlueprint.h | 169 --- .../DiscordRpcLibrary.Build.cs | 59 - .../Source/unrealstatus.Target.cs | 14 - .../Source/unrealstatus/unrealstatus.Build.cs | 23 - .../Source/unrealstatus/unrealstatus.cpp | 6 - .../Source/unrealstatus/unrealstatus.h | 5 - .../unrealstatus/unrealstatusGameModeBase.cpp | 3 - .../unrealstatus/unrealstatusGameModeBase.h | 15 - .../Source/unrealstatusEditor.Target.cs | 14 - .../unrealstatus/unrealstatus.uproject | 19 - deps/discord-rpc/include/discord_register.h | 12 - deps/discord-rpc/include/discord_rpc.h | 23 +- deps/discord-rpc/src/connection.h | 4 +- deps/discord-rpc/src/connection_win.cpp | 31 +- deps/discord-rpc/src/discord_register_linux.c | 25 +- deps/discord-rpc/src/discord_register_osx.m | 58 +- deps/discord-rpc/src/discord_rpc.cpp | 90 +- deps/discord-rpc/src/rpc_connection.cpp | 25 +- deps/discord-rpc/src/rpc_connection.h | 92 +- deps/discord-rpc/src/serialization.cpp | 81 +- deps/discord-rpc/src/serialization.h | 228 ++- 76 files changed, 339 insertions(+), 5365 deletions(-) delete mode 100644 deps/discord-rpc/.clang-format delete mode 100644 deps/discord-rpc/.gitignore delete mode 100644 deps/discord-rpc/.travis.yml delete mode 100644 deps/discord-rpc/CMakeLists.txt delete mode 100644 deps/discord-rpc/README.md delete mode 100644 deps/discord-rpc/appveyor.yml delete mode 100755 deps/discord-rpc/build.py delete mode 100644 deps/discord-rpc/documentation/hard-mode.md delete mode 100644 deps/discord-rpc/documentation/images/rp-dev-dashboard.png delete mode 100644 deps/discord-rpc/documentation/images/rp-profile-view.png delete mode 100644 deps/discord-rpc/documentation/images/rp-secret-example.png delete mode 100644 deps/discord-rpc/examples/button-clicker/.gitignore delete mode 100644 deps/discord-rpc/examples/button-clicker/Assets/DiscordController.cs delete mode 100644 deps/discord-rpc/examples/button-clicker/Assets/DiscordController.cs.meta delete mode 100644 deps/discord-rpc/examples/button-clicker/Assets/DiscordRpc.cs delete mode 100644 deps/discord-rpc/examples/button-clicker/Assets/DiscordRpc.cs.meta delete mode 100644 deps/discord-rpc/examples/button-clicker/Assets/Editor/BuildHelper.cs delete mode 100644 deps/discord-rpc/examples/button-clicker/Assets/Editor/BuildHelper.cs.meta delete mode 100644 deps/discord-rpc/examples/button-clicker/Assets/main.unity delete mode 100644 deps/discord-rpc/examples/button-clicker/Assets/main.unity.meta delete mode 100644 deps/discord-rpc/examples/button-clicker/ProjectSettings/AudioManager.asset delete mode 100644 deps/discord-rpc/examples/button-clicker/ProjectSettings/ClusterInputManager.asset delete mode 100644 deps/discord-rpc/examples/button-clicker/ProjectSettings/DynamicsManager.asset delete mode 100644 deps/discord-rpc/examples/button-clicker/ProjectSettings/EditorBuildSettings.asset delete mode 100644 deps/discord-rpc/examples/button-clicker/ProjectSettings/EditorSettings.asset delete mode 100644 deps/discord-rpc/examples/button-clicker/ProjectSettings/GraphicsSettings.asset delete mode 100644 deps/discord-rpc/examples/button-clicker/ProjectSettings/InputManager.asset delete mode 100644 deps/discord-rpc/examples/button-clicker/ProjectSettings/NavMeshAreas.asset delete mode 100644 deps/discord-rpc/examples/button-clicker/ProjectSettings/NetworkManager.asset delete mode 100644 deps/discord-rpc/examples/button-clicker/ProjectSettings/Physics2DSettings.asset delete mode 100644 deps/discord-rpc/examples/button-clicker/ProjectSettings/ProjectSettings.asset delete mode 100644 deps/discord-rpc/examples/button-clicker/ProjectSettings/ProjectVersion.txt delete mode 100644 deps/discord-rpc/examples/button-clicker/ProjectSettings/QualitySettings.asset delete mode 100644 deps/discord-rpc/examples/button-clicker/ProjectSettings/TagManager.asset delete mode 100644 deps/discord-rpc/examples/button-clicker/ProjectSettings/TimeManager.asset delete mode 100644 deps/discord-rpc/examples/button-clicker/ProjectSettings/UnityConnectSettings.asset delete mode 100644 deps/discord-rpc/examples/button-clicker/UnityPackageManager/manifest.json delete mode 100644 deps/discord-rpc/examples/send-presence/CMakeLists.txt delete mode 100644 deps/discord-rpc/examples/send-presence/send-presence.c delete mode 100644 deps/discord-rpc/examples/unrealstatus/.gitignore delete mode 100644 deps/discord-rpc/examples/unrealstatus/Config/DefaultEditor.ini delete mode 100644 deps/discord-rpc/examples/unrealstatus/Config/DefaultEngine.ini delete mode 100644 deps/discord-rpc/examples/unrealstatus/Config/DefaultGame.ini delete mode 100644 deps/discord-rpc/examples/unrealstatus/Content/MainScreenBP.uasset delete mode 100644 deps/discord-rpc/examples/unrealstatus/Content/MouseGameModeBP.uasset delete mode 100644 deps/discord-rpc/examples/unrealstatus/Content/MousePlayerControllerBP.uasset delete mode 100644 deps/discord-rpc/examples/unrealstatus/Content/ShowTheUILevel.umap delete mode 100644 deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/DiscordRpc.uplugin delete mode 100644 deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Resources/Icon128.png delete mode 100644 deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Resources/discord.png delete mode 100644 deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/DiscordRpc.Build.cs delete mode 100644 deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpc.cpp delete mode 100644 deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcBlueprint.cpp delete mode 100644 deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcPrivatePCH.h delete mode 100644 deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpc.h delete mode 100644 deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpcBlueprint.h delete mode 100644 deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/ThirdParty/DiscordRpcLibrary/DiscordRpcLibrary.Build.cs delete mode 100644 deps/discord-rpc/examples/unrealstatus/Source/unrealstatus.Target.cs delete mode 100644 deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.Build.cs delete mode 100644 deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.cpp delete mode 100644 deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.h delete mode 100644 deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatusGameModeBase.cpp delete mode 100644 deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatusGameModeBase.h delete mode 100644 deps/discord-rpc/examples/unrealstatus/Source/unrealstatusEditor.Target.cs delete mode 100644 deps/discord-rpc/examples/unrealstatus/unrealstatus.uproject diff --git a/deps/discord-rpc/.clang-format b/deps/discord-rpc/.clang-format deleted file mode 100644 index 1be83906c7..0000000000 --- a/deps/discord-rpc/.clang-format +++ /dev/null @@ -1,92 +0,0 @@ ---- -AccessModifierOffset: -4 -AlignAfterOpenBracket: true -AlignConsecutiveAssignments: false -AlignConsecutiveDeclarations: false -AlignEscapedNewlines: Left -AlignOperands: false -AlignTrailingComments: true -AllowAllParametersOfDeclarationOnNextLine: false -AllowShortBlocksOnASingleLine: false -AllowShortCaseLabelsOnASingleLine: false -AllowShortFunctionsOnASingleLine: InlineOnly -AllowShortIfStatementsOnASingleLine: false -AllowShortLoopsOnASingleLine: false -AlwaysBreakAfterReturnType: None -AlwaysBreakBeforeMultilineStrings: false -AlwaysBreakTemplateDeclarations: true -BinPackArguments: false -BinPackParameters: false -BreakBeforeBinaryOperators: None -BreakBeforeBraces: Stroustrup -BreakBeforeInheritanceComma: true -BreakBeforeTernaryOperators: true -BreakConstructorInitializers: BeforeComma -BreakStringLiterals: true -ColumnLimit: 100 -CommentPragmas: '' -CompactNamespaces: false -ConstructorInitializerAllOnOneLineOrOnePerLine: false -ConstructorInitializerIndentWidth: 2 -ContinuationIndentWidth: 2 -Cpp11BracedListStyle: true -DerivePointerAlignment: false -DisableFormat: false -FixNamespaceComments: true -ForEachMacros: [] -IndentCaseLabels: false -IncludeCategories: - - Regex: '^("|<)stdafx\.h(pp)?("|>)' - Priority: -1 - - Regex: '^<(W|w)indows.h>' - Priority: 1 - - Regex: '^<' - Priority: 2 - - Regex: '.*' - Priority: 3 -IncludeIsMainRegex: '(_test|_win|_linux|_mac|_ios|_osx|_null)?$' -IndentCaseLabels: false -IndentWidth: 4 -IndentWrappedFunctionNames: false -KeepEmptyLinesAtTheStartOfBlocks: false -MacroBlockBegin: '' -MacroBlockEnd: '' -MaxEmptyLinesToKeep: 1 -NamespaceIndentation: None -PenaltyBreakAssignment: 0 -PenaltyBreakBeforeFirstCallParameter: 1 -PenaltyBreakComment: 300 -PenaltyBreakFirstLessLess: 120 -PenaltyBreakString: 1000 -PenaltyExcessCharacter: 1000000 -PenaltyReturnTypeOnItsOwnLine: 9999999 -PointerAlignment: Left -ReflowComments: true -SortIncludes: false -SortUsingDeclarations: true -SpaceAfterCStyleCast: false -SpaceAfterTemplateKeyword: true -SpaceBeforeAssignmentOperators: true -SpaceBeforeParens: ControlStatements -SpaceInEmptyParentheses: false -SpacesBeforeTrailingComments: 1 -SpacesInAngles: false -SpacesInCStyleCastParentheses: false -SpacesInContainerLiterals: true -SpacesInParentheses: false -SpacesInSquareBrackets: false -Standard: Cpp11 -TabWidth: 4 -UseTab: Never ---- -Language: Cpp ---- -Language: ObjC -ObjCBlockIndentWidth: 4 -ObjCSpaceAfterProperty: true -ObjCSpaceBeforeProtocolList: false ---- -Language: Java -BasedOnStyle: Google -BreakAfterJavaFieldAnnotations: true -... diff --git a/deps/discord-rpc/.gitignore b/deps/discord-rpc/.gitignore deleted file mode 100644 index 223c07d706..0000000000 --- a/deps/discord-rpc/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -/build*/ -/.vscode/ -/thirdparty/ -.vs/ -.DS_Store \ No newline at end of file diff --git a/deps/discord-rpc/.travis.yml b/deps/discord-rpc/.travis.yml deleted file mode 100644 index 5d091317cd..0000000000 --- a/deps/discord-rpc/.travis.yml +++ /dev/null @@ -1,47 +0,0 @@ -language: cpp - -env: - global: - - CLANG_FORMAT_SUFFIX="-dummy" # don't use formatting on Travis, this is - # needed not to use default 3.5 version - # which is too old. - -matrix: - include: - - os: linux - env: MATRIX_EVAL="CC=gcc-5 && CXX=g++-5" - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-5 - - os: linux - env: MATRIX_EVAL="CC=clang-4.0 && CXX=clang++-4.0" - addons: - apt: - sources: - - llvm-toolchain-trusty-4.0 - packages: - - clang-4.0 - - os: linux - env: MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0" - addons: - apt: - sources: - - llvm-toolchain-trusty-5.0 - packages: - - clang-5.0 - - os: osx - osx_image: xcode9 - -# prevent Travis from overwriting our CXX variables -before_install: - - eval "${MATRIX_EVAL}" - - echo $CXX - -script: - - mkdir build - - cd build - - cmake -DCLANG_FORMAT_SUFFIX=$CLANG_FORMAT_SUFFIX --config Release .. - - cmake --build . -- -j2 diff --git a/deps/discord-rpc/CMakeLists.txt b/deps/discord-rpc/CMakeLists.txt deleted file mode 100644 index 5dad9e9f6d..0000000000 --- a/deps/discord-rpc/CMakeLists.txt +++ /dev/null @@ -1,56 +0,0 @@ -cmake_minimum_required (VERSION 3.2.0) -project (DiscordRPC) - -include(GNUInstallDirs) - -option(BUILD_EXAMPLES "Build example apps" ON) - -# format -file(GLOB_RECURSE ALL_SOURCE_FILES - examples/*.cpp examples/*.h examples/*.c - include/*.h - src/*.cpp src/*.h src/*.c -) - -# Set CLANG_FORMAT_SUFFIX if you are using custom clang-format, e.g. clang-format-5.0 -find_program(CLANG_FORMAT_CMD clang-format${CLANG_FORMAT_SUFFIX}) - -if (CLANG_FORMAT_CMD) - add_custom_target( - clangformat - COMMAND ${CLANG_FORMAT_CMD} - -i -style=file -fallback-style=none - ${ALL_SOURCE_FILES} - DEPENDS - ${ALL_SOURCE_FILES} - ) -endif(CLANG_FORMAT_CMD) - -# thirdparty stuff -execute_process( - COMMAND mkdir ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty - ERROR_QUIET -) - -find_file(RAPIDJSONTEST NAMES rapidjson rapidjson-1.1.0 PATHS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty CMAKE_FIND_ROOT_PATH_BOTH) -if (NOT RAPIDJSONTEST) - message("no rapidjson, download") - set(RJ_TAR_FILE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/v1.1.0.tar.gz) - file(DOWNLOAD https://github.com/miloyip/rapidjson/archive/v1.1.0.tar.gz ${RJ_TAR_FILE}) - execute_process( - COMMAND ${CMAKE_COMMAND} -E tar xzf ${RJ_TAR_FILE} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty - ) - file(REMOVE ${RJ_TAR_FILE}) -endif(NOT RAPIDJSONTEST) - -find_file(RAPIDJSON NAMES rapidjson rapidjson-1.1.0 PATHS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty CMAKE_FIND_ROOT_PATH_BOTH) - -add_library(rapidjson STATIC IMPORTED ${RAPIDJSON}) - -# add subdirs - -add_subdirectory(src) -if (BUILD_EXAMPLES) - add_subdirectory(examples/send-presence) -endif(BUILD_EXAMPLES) diff --git a/deps/discord-rpc/README.md b/deps/discord-rpc/README.md deleted file mode 100644 index 011c961755..0000000000 --- a/deps/discord-rpc/README.md +++ /dev/null @@ -1,91 +0,0 @@ -# Discord RPC - -This is a library for interfacing your game with a locally running Discord desktop client. It's known to work on Windows, macOS, and Linux. You can use the lib directly if you like, or use it as a guide to writing your own if it doesn't suit your game as is. PRs/feedback welcome if you have an improvement everyone might want, or can describe how this doesn't meet your needs. - -Included here are some quick demos that implement the very minimal subset to show current status, and -have callbacks for where a more complete game would do more things (joining, spectating, etc). - -## Documentation - -The most up to date documentation for Rich Presence can always be found on our [developer site](https://discordapp.com/developers/docs/rich-presence/how-to)! If you're interested in rolling your own native implementation of Rich Presence via IPC sockets instead of using our SDK—hey, you've got free time, right?—check out the ["Hard Mode" documentation](https://github.com/discordapp/discord-rpc/blob/master/documentation/hard-mode.md). - -## Basic Usage - -Zeroith, you should be set up to build things because you are a game developer, right? - -First, head on over to the [Discord developers site](https://discordapp.com/developers/applications/me) and make yourself an app. Keep track of `Client ID` -- you'll need it here to pass to the init function. - -### From package - -Download a release package for your platform(s) -- they have subdirs with various prebuilt options, select the one you need add `/include` to your compile includes, `/lib` to your linker paths, and link with `discord-rpc`. For the dynamically linked builds, you'll need to ship the associated file along with your game. - -### From repo - -First-eth, you'll want `CMake`. There's a few different ways to install it on your system, and you should refer to [their website](https://cmake.org/install/). Many package managers provide ways of installing CMake as well. - -To make sure it's installed correctly, type `cmake --version` into your flavor of terminal/cmd. If you get a response with a version number, you're good to go! - -There's a [CMake](https://cmake.org/download/) file that should be able to generate the lib for you; Sometimes I use it like this: -```sh - cd - mkdir build - cd build - cmake .. -DCMAKE_INSTALL_PREFIX= - cmake --build . --config Release --target install -``` -There is a wrapper build script `build.py` that runs `cmake` with a few different options. - -Usually, I run `build.py` to get things started, then use the generated project files as I work on things. It does depend on `click` library, so do a quick `pip install click` to make sure you have it if you want to run `build.py`. - -There are some CMake options you might care about: - -| flag | default | does | -|------|---------|------| -| `ENABLE_IO_THREAD` | `ON` | When enabled, we start up a thread to do io processing, if disabled you should call `Discord_UpdateConnection` yourself. -| `USE_STATIC_CRT` | `OFF` | (Windows) Enable to statically link the CRT, avoiding requiring users install the redistributable package. (The prebuilt binaries enable this option) -| [`BUILD_SHARED_LIBS`](https://cmake.org/cmake/help/v3.7/variable/BUILD_SHARED_LIBS.html) | `OFF` | Build library as a DLL -| `WARNINGS_AS_ERRORS` | `OFF` | When enabled, compiles with `-Werror` (on *nix platforms). | - -## Continuous Builds - -Why do we have three of these? Three times the fun! - -| CI | badge | -|----|-------| -| TravisCI | [![Build status](https://travis-ci.org/discordapp/discord-rpc.svg?branch=master)](https://travis-ci.org/discordapp/discord-rpc) -| AppVeyor | [![Build status](https://ci.appveyor.com/api/projects/status/qvkoc0w1c4f4b8tj?svg=true)](https://ci.appveyor.com/project/crmarsh/discord-rpc) -| Buildkite (internal) | [![Build status](https://badge.buildkite.com/e103d79d247f6776605a15246352a04b8fd83d69211b836111.svg)](https://buildkite.com/discord/discord-rpc) - -## Sample: send-presence - -This is a text adventure "game" that inits/deinits the connection to Discord, and sends a presence update on each command. - -## Sample: button-clicker - -This is a sample [Unity](https://unity3d.com/) project that wraps a DLL version of the library, and sends presence updates when you click on a button. Run `python build.py unity` in the root directory to build the correct library files and place them in their respective folders. - -## Sample: unrealstatus - -This is a sample [Unreal](https://www.unrealengine.com) project that wraps the DLL version of the library with an Unreal plugin, exposes a blueprint class for interacting with it, and uses that to make a very simple UI. Run `python build.py unreal` in the root directory to build the correct library files and place them in their respective folders. - -## Wrappers and Implementations - -Below is a table of unofficial, community-developed wrappers for and implementations of Rich Presence in various languages. If you would like to have yours added, please make a pull request adding your repository to the table. The repository should include: - -- The code -- A brief ReadMe of how to use it -- A working example - -###### Rich Presence Wrappers and Implementations - -| Name | Language | -|------|----------| -| [DerelictDiscordRPC](https://github.com/voidblaster/DerelictDiscordRPC) | [D](https://dlang.org/) | -| [discord-rpc.jar](https://github.com/Vatuu/discord-rpc "Discord-RPC.jar") | Java | -| [java-discord-rpc](https://github.com/MinnDevelopment/java-discord-rpc) | Java | -| [Discord-IPC](https://github.com/jagrosh/DiscordIPC) | Java | -| [Discord Rich Presence](https://npmjs.org/discord-rich-presence) | JavaScript | -| [drpc4k](https://github.com/Bluexin/drpc4k) | [Kotlin](https://kotlinlang.org/) | -| [lua-discordRPC](https://github.com/pfirsich/lua-discordRPC) | LuaJIT (FFI) | -| [pypresence](https://github.com/qwertyquerty/pypresence) | [Python](https://python.org/) | -| [SwordRPC](https://github.com/Azoy/SwordRPC) | [Swift](https://swift.org) | diff --git a/deps/discord-rpc/appveyor.yml b/deps/discord-rpc/appveyor.yml deleted file mode 100644 index 1c328b8787..0000000000 --- a/deps/discord-rpc/appveyor.yml +++ /dev/null @@ -1,17 +0,0 @@ -version: '{build}' -install: - - python -m pip install click - -build_script: - - mkdir examples\unrealstatus\Plugins\discordrpc\Binaries\ThirdParty\discordrpcLibrary\Win64 - - python build.py - -artifacts: -- path: builds\install\win32-dynamic - name: win32-dynamic -- path: builds\install\win32-static - name: win32-static -- path: builds\install\win64-dynamic - name: win64-dynamic -- path: builds\install\win64-static - name: win64-static diff --git a/deps/discord-rpc/build.py b/deps/discord-rpc/build.py deleted file mode 100755 index 215d3586b3..0000000000 --- a/deps/discord-rpc/build.py +++ /dev/null @@ -1,304 +0,0 @@ -#!/usr/bin/env python - -import os -import subprocess -import sys -import shutil -import zipfile -from contextlib import contextmanager -import click - - -def get_platform(): - """ a name for the platform """ - if sys.platform.startswith('win'): - return 'win' - elif sys.platform == 'darwin': - return 'osx' - elif sys.platform.startswith('linux'): - return 'linux' - raise Exception('Unsupported platform ' + sys.platform) - - -SCRIPT_PATH = os.path.dirname(os.path.abspath(__file__)) -# we use Buildkite which sets this env variable by default -IS_BUILD_MACHINE = os.environ.get('CI', '') == 'true' -PLATFORM = get_platform() -INSTALL_ROOT = os.path.join(SCRIPT_PATH, 'builds', 'install') - - -def get_signtool(): - """ get path to code signing tool """ - if PLATFORM == 'win': - sdk_dir = 'c:\\Program Files (x86)\\Windows Kits\\10' # os.environ['WindowsSdkDir'] - return os.path.join(sdk_dir, 'bin', 'x86', 'signtool.exe') - elif PLATFORM == 'osx': - return '/usr/bin/codesign' - - -@contextmanager -def cd(new_dir): - """ Temporarily change current directory """ - if new_dir: - old_dir = os.getcwd() - os.chdir(new_dir) - yield - if new_dir: - os.chdir(old_dir) - - -def mkdir_p(path): - """ mkdir -p """ - if not os.path.isdir(path): - click.secho('Making ' + path, fg='yellow') - os.makedirs(path) - - -@click.group(invoke_without_command=True) -@click.pass_context -@click.option('--clean', is_flag=True) -def cli(ctx, clean): - """ click wrapper for command line stuff """ - if ctx.invoked_subcommand is None: - ctx.invoke(libs, clean=clean) - if IS_BUILD_MACHINE: - ctx.invoke(sign) - ctx.invoke(archive) - - -@cli.command() -@click.pass_context -def unity(ctx): - """ build just dynamic libs for use in unity project """ - ctx.invoke(libs, clean=False, static=False, shared=True, skip_formatter=True, just_release=True) - BUILDS = [] - - click.echo('--- Copying libs and header into unity example') - UNITY_PROJECT_PATH = os.path.join(SCRIPT_PATH, 'examples', 'button-clicker', 'Assets', 'Plugins') - - if sys.platform.startswith('win'): - LIBRARY_NAME = 'discord-rpc.dll' - BUILD_64_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'win64-dynamic', 'src', 'Release') - UNITY_64_DLL_PATH = os.path.join(UNITY_PROJECT_PATH, 'x86_64') - BUILDS.append({BUILD_64_BASE_PATH: UNITY_64_DLL_PATH}) - - BUILD_32_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'win32-dynamic', 'src', 'Release') - UNITY_32_DLL_PATH = os.path.join(UNITY_PROJECT_PATH, 'x86') - BUILDS.append({BUILD_32_BASE_PATH: UNITY_32_DLL_PATH}) - - elif sys.platform == 'darwin': - LIBRARY_NAME = 'discord-rpc.bundle' - BUILD_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'osx-dynamic', 'src') - UNITY_DLL_PATH = UNITY_PROJECT_PATH - os.rename( - os.path.join(BUILD_BASE_PATH, 'libdiscord-rpc.dylib'), os.path.join(BUILD_BASE_PATH, 'discord-rpc.bundle')) - - BUILDS.append({BUILD_BASE_PATH: UNITY_DLL_PATH}) - - elif sys.platform.startswith('linux'): - LIBRARY_NAME = 'discord-rpc.so' - BUILD_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'linux-dynamic', 'src') - UNITY_DLL_PATH = os.path.join(UNITY_PROJECT_PATH, 'x86') - os.rename(os.path.join(BUILD_BASE_PATH, 'libdiscord-rpc.so'), os.path.join(BUILD_BASE_PATH, 'discord-rpc.so')) - - BUILDS.append({BUILD_BASE_PATH: UNITY_DLL_PATH}) - - else: - raise Exception('Unsupported platform ' + sys.platform) - - for build in BUILDS: - for i in build: - mkdir_p(build[i]) - shutil.copy(os.path.join(i, LIBRARY_NAME), build[i]) - - -@cli.command() -@click.pass_context -def unreal(ctx): - """ build libs and copy them into the unreal project """ - ctx.invoke(libs, clean=False, static=False, shared=True, skip_formatter=True, just_release=True) - BUILDS = [] - - click.echo('--- Copying libs and header into unreal example') - UNREAL_PROJECT_PATH = os.path.join(SCRIPT_PATH, 'examples', 'unrealstatus', 'Plugins', 'discordrpc') - UNREAL_INCLUDE_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Include') - mkdir_p(UNREAL_INCLUDE_PATH) - shutil.copy(os.path.join(SCRIPT_PATH, 'include', 'discord_rpc.h'), UNREAL_INCLUDE_PATH) - - if sys.platform.startswith('win'): - LIBRARY_NAME = 'discord-rpc.lib' - BUILD_64_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'win64-dynamic', 'src', 'Release') - UNREAL_64_DLL_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Win64') - BUILDS.append({BUILD_64_BASE_PATH: UNREAL_64_DLL_PATH}) - - BUILD_32_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'win32-dynamic', 'src', 'Release') - UNREAL_32_DLL_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Win32') - BUILDS.append({BUILD_32_BASE_PATH: UNREAL_32_DLL_PATH}) - - elif sys.platform == 'darwin': - LIBRARY_NAME = 'libdiscord-rpc.dylib' - BUILD_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'osx-dynamic', 'src') - UNREAL_DLL_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Mac') - - BUILDS.append({BUILD_BASE_PATH: UNREAL_DLL_PATH}) - - elif sys.platform.startswith('linux'): - LIBRARY_NAME = 'libdiscord-rpc.so' - BUILD_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'linux-dynamic', 'src') - UNREAL_DLL_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Linux') - - BUILDS.append({BUILD_BASE_PATH: UNREAL_DLL_PATH}) - - else: - raise Exception('Unsupported platform ' + sys.platform) - - for build in BUILDS: - for i in build: - mkdir_p(build[i]) - shutil.copy(os.path.join(i, LIBRARY_NAME), build[i]) - - -def build_lib(build_name, generator, options, just_release): - """ Create a dir under builds, run build and install in it """ - build_path = os.path.join(SCRIPT_PATH, 'builds', build_name) - install_path = os.path.join(INSTALL_ROOT, build_name) - mkdir_p(build_path) - mkdir_p(install_path) - with cd(build_path): - initial_cmake = ['cmake', SCRIPT_PATH, '-DCMAKE_INSTALL_PREFIX=%s' % os.path.join('..', 'install', build_name)] - if generator: - initial_cmake.extend(['-G', generator]) - for key in options: - val = options[key] - if type(val) is bool: - val = 'ON' if val else 'OFF' - initial_cmake.append('-D%s=%s' % (key, val)) - click.echo('--- Building ' + build_name) - subprocess.check_call(initial_cmake) - if not just_release: - subprocess.check_call(['cmake', '--build', '.', '--config', 'Debug']) - subprocess.check_call(['cmake', '--build', '.', '--config', 'Release', '--target', 'install']) - - -@cli.command() -def archive(): - """ create zip of install dir """ - click.echo('--- Archiving') - archive_file_path = os.path.join(SCRIPT_PATH, 'builds', 'discord-rpc-%s.zip' % get_platform()) - archive_file = zipfile.ZipFile(archive_file_path, 'w', zipfile.ZIP_DEFLATED) - archive_src_base_path = INSTALL_ROOT - archive_dst_base_path = 'discord-rpc' - with cd(archive_src_base_path): - for path, _, filenames in os.walk('.'): - for fname in filenames: - fpath = os.path.join(path, fname) - dst_path = os.path.normpath(os.path.join(archive_dst_base_path, fpath)) - click.echo('Adding ' + dst_path) - archive_file.write(fpath, dst_path) - - -@cli.command() -def sign(): - """ Do code signing within install directory using our cert """ - tool = get_signtool() - signable_extensions = set() - if PLATFORM == 'win': - signable_extensions.add('.dll') - sign_command_base = [ - tool, - 'sign', - '/n', - 'Discord Inc.', - '/a', - '/tr', - 'http://timestamp.digicert.com/rfc3161', - '/as', - '/td', - 'sha256', - '/fd', - 'sha256', - ] - elif PLATFORM == 'osx': - signable_extensions.add('.dylib') - sign_command_base = [ - tool, - '--keychain', - os.path.expanduser('~/Library/Keychains/login.keychain'), - '-vvvv', - '--deep', - '--force', - '--sign', - 'Developer ID Application: Hammer & Chisel Inc. (53Q6R32WPB)', - ] - else: - click.secho('Not signing things on this platform yet', fg='red') - return - - click.echo('--- Signing') - for path, _, filenames in os.walk(INSTALL_ROOT): - for fname in filenames: - ext = os.path.splitext(fname)[1] - if ext not in signable_extensions: - continue - fpath = os.path.join(path, fname) - click.echo('Sign ' + fpath) - sign_command = sign_command_base + [fpath] - subprocess.check_call(sign_command) - - -@cli.command() -@click.option('--clean', is_flag=True) -@click.option('--static', is_flag=True) -@click.option('--shared', is_flag=True) -@click.option('--skip_formatter', is_flag=True) -@click.option('--just_release', is_flag=True) -def libs(clean, static, shared, skip_formatter, just_release): - """ Do all the builds for this platform """ - if clean: - shutil.rmtree('builds', ignore_errors=True) - - mkdir_p('builds') - - if not (static or shared): - static = True - shared = True - - static_options = {} - dynamic_options = { - 'BUILD_SHARED_LIBS': True, - 'USE_STATIC_CRT': True, - } - - if skip_formatter or IS_BUILD_MACHINE: - static_options['CLANG_FORMAT_SUFFIX'] = 'none' - dynamic_options['CLANG_FORMAT_SUFFIX'] = 'none' - - if IS_BUILD_MACHINE: - just_release = True - static_options['WARNINGS_AS_ERRORS'] = True - dynamic_options['WARNINGS_AS_ERRORS'] = True - - if PLATFORM == 'win': - generator32 = 'Visual Studio 14 2015' - generator64 = 'Visual Studio 14 2015 Win64' - if static: - build_lib('win32-static', generator32, static_options, just_release) - build_lib('win64-static', generator64, static_options, just_release) - if shared: - build_lib('win32-dynamic', generator32, dynamic_options, just_release) - build_lib('win64-dynamic', generator64, dynamic_options, just_release) - elif PLATFORM == 'osx': - if static: - build_lib('osx-static', None, static_options, just_release) - if shared: - build_lib('osx-dynamic', None, dynamic_options, just_release) - elif PLATFORM == 'linux': - if static: - build_lib('linux-static', None, static_options, just_release) - if shared: - build_lib('linux-dynamic', None, dynamic_options, just_release) - - -if __name__ == '__main__': - os.chdir(SCRIPT_PATH) - sys.exit(cli()) diff --git a/deps/discord-rpc/documentation/hard-mode.md b/deps/discord-rpc/documentation/hard-mode.md deleted file mode 100644 index 35042cbcbe..0000000000 --- a/deps/discord-rpc/documentation/hard-mode.md +++ /dev/null @@ -1,164 +0,0 @@ -# Hard Mode: Roll Your Own Client - -Discord's Rich Presence feature is designed as an obfuscated addition to our existing [RPC infrastructure](https://discordapp.com/developers/docs/topics/rpc). The standalone library and header files make it easy for any dev to drop it into their game. - -Our library communicates with Discord over the local Discord RPC socket. We've already done the work in connecting properly, handling disconnects and reconnects, and other RPC intracacies, but those who have done this implementation for our private alpha Voice and Chat SDK can simply make use of the new RPC commands and events to implement Rich Presence. - -## Hark! A warning! - -By committing to an RPC-only integration, you decide to forego the work our library and header file have done for you in the way of error handling, state storage, disconnecting and reconnecting, and other quality of life abstractions. While simply implementing the new RPC command and events will enable Rich Presence for your game, we highly suggest that you do your best to mimic the functionality of the SDK the most that you can. It ensure not only code quality on your part, but also an excellent experience on the part of your players. - -## Application Protocol Registration - -One thing that cannot be explicitly done over RPC is registering an application protocol for your game. If you choose to do an RPC-only implementation, you will have to register your application protocol yourself in the format of `discord-[your_app_id]://`. You can use `Discord_Register()` as a good(?) example of how to properly register an application protocol for use with Discord. For OSX and Linux it is probably simpler to handle the protocol registration as part of your install/packaging. - -## New RPC Command - -The new RPC command for Rich Presence is `SET_ACTIVITY`. The fields are similar to what is outlined in the SDK; we've combined similar fields into objects for the sake of less data on the wire. - -The one major difference is the `party.size` field. It is an array with a size of two. The first element is the current party size, `partySize` from the main documentation. The second element is the maximum party size, `partyMax` from the main documentation. - -Below is a full example of a `SET_ACTIVITY` command. Field restrictions like size are the same as outlined in the main documentation. - -``` -{ - "cmd": "SET_ACTIVITY", - "args": { - "pid": 9999, // Your application's process id - required field - "activity": { - "state": "In a Group", - "details": "Competitive | In a Match", - "timestamps": { - "start": time(nullptr), - "end": time(nullptr) + ((60 * 5) + 23) - }, - "assets": { - "large_image": "numbani_map", - "large_text": "Numbani", - "small_image": "pharah_profile", - "small_text": "Pharah" - }, - "party": { - "id": GameEngine.GetPartyId(), - "size": [3, 6] - }, - "secrets": { - "join": "025ed05c71f639de8bfaa0d679d7c94b2fdce12f", - "spectate": "e7eb30d2ee025ed05c71ea495f770b76454ee4e0", - "match": "4b2fdce12f639de8bfa7e3591b71a0d679d7c93f" - }, - "instance": true - } - }, - "nonce": "647d814a-4cf8-4fbb-948f-898abd24f55b" -} -``` - -## New RPC Events - -The three new RPC events for Rich Presence power the ability to join and spectate your friends' games. - -First is the `ACTIVITY_JOIN` event: - -```json -{ - "cmd": "DISPATCH", - "data": { - "secret": "025ed05c71f639de8bfaa0d679d7c94b2fdce12f" - }, - "evt": "ACTIVITY_JOIN" -} -``` - -Second is the `ACTIVITY_SPECTATE` event: - -```json -{ - "cmd": "DISPATCH", - "data": { - "secret": "e7eb30d2ee025ed05c71ea495f770b76454ee4e0" - }, - "evt": "ACTIVITY_SPECTATE" -} -``` - -And third is the `ACTIVITY_JOIN_REQUEST` event: - -```json -{ - "cmd": "DISPATCH", - "data": { - "user": { - "id": "53908232506183680", - "username": "Mason", - "discriminator": "1337", - "avatar": "a_bab14f271d565501444b2ca3be944b25" - } - }, - "evt": "ACTIVITY_JOIN_REQUEST" -} -``` - -In order to receive these events, you need to [subscribe](https://discordapp.com/developers/docs/topics/rpc#subscribe) to them like so: - -```json -{ - "nonce": "be9a6de3-31d0-4767-a8e9-4818c5690015", - "evt": "ACTIVITY_JOIN", - "cmd": "SUBSCRIBE" -} -``` - -```json -{ - "nonce": "ae9qdde3-31d0-8989-a8e9-dnakwy174he", - "evt": "ACTIVITY_SPECTATE", - "cmd": "SUBSCRIBE" -} -``` - -```json -{ - "nonce": "5dc0c062-98c6-47a0-8922-bbb52e9d6afa", - "evt": "ACTIVITY_JOIN_REQUEST", - "cmd": "SUBSCRIBE" -} -``` - -To unsubscribe from these events, resend with the command `UNSUBSCRIBE` - -## Responding -A discord user will request access to the game. If the ACTIVITY_JOIN_REQUEST has been subscribed too, the ACTIVITY_JOIN_REQUEST event will be sent to the host's game. Accept it with following model: -```json -{ - "nonce": "5dc0c062-98c6-47a0-8922-15aerg126", - "cmd": "SEND_ACTIVITY_JOIN_INVITE", - "args": - { - "user_id": "53908232506183680" - } -} -``` - -To reject the request, use `CLOSE_ACTIVITY_REQUEST`: -```json -{ - "nonce": "5dc0c062-98c6-47a0-8922-dasg256eafg", - "cmd": "CLOSE_ACTIVITY_REQUEST", - "args": - { - "user_id": "53908232506183680" - } -} -``` - -## Notes -Here are just some quick notes to help with some common troubleshooting problems. -* IPC will echo back every command you send as a response. Use this as a lock-step feature to avoid flooding messages. Can be used to validate messages such as the Presence or Subscribes. -* The pipe expects for frames to be written in a single byte array. You cannot do multiple `stream.Write(opcode);` `stream.Write(length);` as it will break the pipe. Instead create a buffer, write the data to the buffer, then send the entire buffer to the stream. -* Discord can be on any pipe ranging from `discord-ipc-0` to `discord-ipc-9`. It is a good idea to try and connect to each one and keeping the first one you connect too. For multiple clients (eg Discord and Canary), you might want to add a feature to manually select the pipe so you can more easily debug the application. -* All enums are `lower_snake_case`. -* The opcode and length in the header are `Little Endian Unsigned Integers (32bits)`. In some languages, you must convert them as they can be architecture specific. -* [Discord Rich Presence How-To](https://discordapp.com/developers/docs/rich-presence/how-to) contains a lot of the information this document doesn't. For example, it will tell you about the response payload. -* In the documentation, DISCORD_REPLY_IGNORE is just implemented the same as DISCORD_REPLY_NO. -* You can test the Join / Spectate feature by enabling them in your profile and whitelisting a test account. Use Canary to run 2 accounts on the same machine. diff --git a/deps/discord-rpc/documentation/images/rp-dev-dashboard.png b/deps/discord-rpc/documentation/images/rp-dev-dashboard.png deleted file mode 100644 index f246cfb2dda158fa5b3688392ea1ed4532944c36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325539 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⁢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 -3zH5_sr(ncGoH;G_dpA`gm#prYe_G3Ry)+cqo} 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�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π*-X^xbEWQwJUcR*wGJ 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%0AwR(?DIT$DwF6j^j8c_PEYvPbi&&{b3- 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 J6iXTh{(m0fcz*x@ diff --git a/deps/discord-rpc/documentation/images/rp-profile-view.png b/deps/discord-rpc/documentation/images/rp-profile-view.png deleted file mode 100644 index f9ddc31304cc5df538a5757d0a1a0f7d753cc598..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1398658 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 Z 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 z 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�$r5w;%V;11CVD+&ilT)(gFrN2kv_Jiik0smS@Z!6LDZ zKaZLyA@9K;RYyge7+#*$l?R#DQ+O6F^I4lva!)|&IOmz>=gQ2bTT~A}=y+S(jGVM$;{{=RF%CUNdljuxc#{Y{Jyw@ zU?dmsy%opksK(N&hHr9!H~|Ka70yq_7s1_hhBzjmXBftp>b4*24RI4zv|y`kIiMMD zS10gnp^9Sxf%A`t3$MzHBJp{0RU=;uPlWtloPkjq;|Pf!%w5sb%vJd;k;s2AQpmny zCo~d0LRSeWYZq|Z4vKrZv1WaPo&qbY$*4mo-kQh&M`~Y5^fiyC(I1ESvu;?ZlU#w} z6A!J;i;h}nt7$|bC-cBbSo^s>QapHluD6gki;y`Ny`*tN`^MH$dfR>b+HnE2q?Q%# z1pb<$UaFp_jv&ymav!#gh57PI{%l(e>{<@69>{qPqbgxbnfM3S(zLM{+rejJ(rr0! zR}b5~KDkOkQX!+?2yaL)-uQ^St`IE~1QMaOn1Zg1cVoxf^O*8w_bu>i(^%r;zsOQi ziGJ5$xbPT11BqSuyl`zL3RLhCGm}`zW0d;-tz^H`=>StXT$H|UExgI>AX;r>o@=o< zt_IX11*;!Fb<1Zfzk zBEZGVchlXtZ+8g+$QT!JC|F!CAUeFIaSP!Fgp4Zyd@~C}#zO&KR^vsC5O?dar20Rl zsRN9R2mr{f zju<#VaIH9Z`6aL~NLht|?<^5;Ekjs`>3ZV51yAu4GoxA<4|=@6RAd~8sQ(jLx7Mck zkE7R%urz(FSi+&~{`Y+b^mr7F)QaONzdj6a(8h~a?3u+@<_MPvZzCk+y79*ay}r}_ z+|HB}z3?q&+A1Q#ewH4c{^RcCME7 z5PLO8&IgSRrWO$nVakeM6{T<2I$zU{`PBQ^Fb;WITF^Dho%rabx2SmMvdQ|UowssW zS-e~NY{=hLp+dtyxeM)goHWDBNHd(rlSg|8`9sCHy8TE5rtRCp`0d@2_f;z_Dg|8= zzL-+<#n%is4>-RtPQueV;ucM}$t>lg_lUdg2K?kF1@u7BycoA+ZR zjGrUM%kcm>t~LLg?L<4{ioL6zYb1XjJ2emN$~@Zq7H0*&*363Fsr&V)Vb%X*a`DfJ z6LMpU{d9J-$9hKSM2}%VYqwngj8WFb%JwK3vXnhiE!JD@lk^o^o-tLlli3ka4kwP% zMsSJsl&R+8$mqXuTz;f5&|$9pBX5Nn9fN%DZR^?CL?dDvb8u6%WG+DgG1;X~xDqYAZhWXcOJHq}}WY+Gq{+9L{esv{Bi zJ<`{X?y1d?Ymf0ldUfJwO5+7ud$&4akOls0l&A8FKmA>o_!Fvy*JMhIwx*mDI|$r< zmPp`Bc+J3oM<~c;&67`RfsFyy#$w2Gr5a9>wr@J$s9M?w%fW#F?|406svC@n^?dtd z4O2PjZs4kRb8XO}r8maHjKWrnK;GU*t^kdX{?!p_JQ$^RZ#^;s+XUHOfEmy>uH|WO z0|JhcI%+n)gXVp?o}cJa|oaaJ+J*fVw5+)@zjx1}UuGQ_?=kJlFcW~SB zj0qq4Et2rPZ9|4213a{`vLMB03G`)iQ=7P%>SySt(sA!!TP*S@w^{ z8quX;<$mCM*Ck>>Q~qx$>R0jf1X8^#XIS!K!(JUjo+LhqV6LAjgx=jtD6}E?jz=!V z(r5;Reg8DzIa+$xV7xbb>s@={D;X-YgXd*Cgo3<|yL~M?ktOG9bt+QVMY^*$!c(Hh z{3=obj2HZyf3zCbyxB-qzLkO_4(N1n z!2@%*+74X;*W>G-DDT%-8bLu{?Dx{rZr|3o@;YZI&Pgf4uNgzm200V8GjCrrSQf$h z&7aCcWqCbbx2*)S*@TX!%AJL(oUO$@Os%T8Zv_>DsJ=YU(^~bX%!h9Hb}EAoGX%Pp z*!=R_j_(Ukbcg=gZh@S#clcH9%D@DN{O;EFE9SSVn?F|o!=Ko2kD))yb7K^fPs^}B zX9~6JTcEBiV_&u&PqauDDEcz0KRC;|4q!S{r26SDx`*eQuN!+^@XHH@ZQQl1xHxGn zQX+JLIczcc{HrB(f6U9+5sNfto~s?!VZXSc`=K4hTrhO=hjze6TeE%^k!`9YrmdUF zDUVc1*N@*{;eIf9MV`cq`sMiAhI&ZCtQT^bGN{BboCo09 zbQb1(6rr~s8fVS0AF<;>N|**XgShqA@s+k{=4jd1`i*zw)Y7)A#S?%$L?s93Xsow& zL4f6?5;J{vCOvU~?Vta=h%&ziQTJO&pMS?E`d_!-v^4s zKgB?Z%)%CHDCZ5*i?ahLvi8H)^XsgGO1wD?_=Y5Gt2ty7pCc1H?Acm>f9%z0#{4m{ z9kZDL6?pcHi$`ZN;S2q*Q2FanR@~wU3W1(M&iJl%-u`?7k_Cxf#W}+z@!|}oG|%}m zuTeR4;!aqwn}p&bh*=`0ZZ&r21k;wR<`d-@g@@qdRleC|Ewq;RFzK}{PeYXA5M|W} zj6#0A<}9jaMwW@-%73$s)Mv@M^J>cS0kK+o+ zQKv`Sax&~wg|qQI+-?W-qf(0?pIEDwjXwx5sdC$c=fO zdT6Ln2_S}FT8PY665<4H>`@@8&{=O+OOkXoU;k|4w6fKz;2?3=8cpvOz|q1(rxR(*mmS`EXsA-g)6>^2{9n@iQXhV_>6~mA3xg z>>uCgg01y6Q|SC%{5Jb($JIC`)4QlFP9`_e)CzCEUuqdnMO5B>tq_S|rx!yfk@sl$ z0(0w&@r&glI%GU=(Sg--lbZQN+vAkZiawche?vgyo_O9-TgP(FDD!d#rHvnU!bLhq z^p~w4j)uSHIK1BbJ@_LRpM*OOl#F^V2^=3giBzFWQVUc&d zpBpP#H$iB?EuoU&S?5B9na-m55Q-TBWi!(WagGumxM z<8#*~Y(euscJqD}Pq}ttg^Bcgem4JoY9+9KyB!oAgqCQLkJpB$ViT`hGkp%;wq|hA z0kjgHj~|n6JBiOO8nr7LcbV-bl>vaeP6*=Vr%eo3h2{H-X*Fias1j_G%ttd)ryUqai81dwSu;w%Q>_LOoo4nr?TZKM1EDC-(dIXC)-D>- zhnxM%{(D6ge7Wgr$Y=o=bk8L)xywmKIW|#ymc3Y0XDcs_rkh{a?DpWW`0p4lw0~GR zL^Or5&Ye-<05DDyE;nhT?NwYc`mx9^MnnN=j49zAkXEFY1R}k!f3}#cd<>_4MhQzH z%6zdf<40n|A^4$OH@*jrEVdN{kik;fVN<(|)HU0>5*9t$RrL4pGa`fR_Y(uC-&vdb_2$REC zxovRjMJ?ODf^(55i_?!FFUz-#Zp3^X*LmDfH}|M}c?$Kf+&|x7kalXhDM=AYdm3;3 zKbueg42awm*gN`CMqW_S8S?X5zr$==o$Czm(ABm#7b_f|XyWDJP3{q=)Hg*Sh18$T zdL=uF_3s>h2zHEn-7*TN`{)N90jax--Jj%%&l=BQW?&yIQKV;i(~Y<3Eb(61I6_`y z0lu8?C}QT>YQ01(2N+lK-29nwxOw$(+8QSLjI1qz*g6@=CDB+;#4@HH%)>IUBOgw< zh4YnQ5+Am$j*I8T?Yf2M&Ld5E&2tTkdocDtV%zfjvIgiSMB1NfGi+i&4X#MHyYkD! zzz!2s{9TR8579}`*nDOB;Bt%_UR6%mRrd*1+>9L99Baw*Xt1C;$!F4%;O_2p*4}Yr z&qPY%nQGfhN>xf*x0UW~1=i!|8ajj?tnRj(5d_yaB5#fHWB7*bWBKohN|-l`=!)ro7n()gmc`e-g6 z%>^(Nn`(6l>PrJF9UYV&uCXtZ|IIm#aJQ34_I`n!u-{OW1!Cc2*v-~r`eIV1LEbqh znRV&aQQw^011HNl|5T{4wDN~u75}cQ;l^$0m}=4NxnBdhu>iN{u5$2yAKsGR>jnE< zpzcxRGw(q)kq`LtH){?8H$o}rN0$w9nm>;r0?PqgT9~WnxL7Y~ew}gcy`oagv^sz; zS^WBsTFd!)hr}moM@GN;r53Ya#@n3d3zyqPcbWgSz(0|Bju3*|%)h(yKf6$NT@;r4 z4r`<0+^S`=wp5V3px6bs>|kW0j+&3ZP?)ue+66rcWI!80*Yl3W{tCEHP?9h<=7AT@ zs^=2HkNCB|MOt3(W<{#)J^jz}qrp;AT+(y>k-iRYy%w6E5rml)rf|`V_H~wv$bx;T zlEZ)#h1+TG`EMj!eBqO&j4dZ;a-o)2-4ljz%wb%a&*hD~*ztj$Tkw>szgmGOn68_i z#%)EgZHMpxvlFKkM2ukFDWB;iafe4>>4Y55*!^e9dliyhc|MKFU0@JUlHq_eNczQO z8LBG2?K*gzX()OJr|F2?lG%CeOg6u=E{3RVU&3*mS$p|E>B7Q-K#&q~5+n&4p^Ro- z-59F|E@ZeHZj^(H#pgJ;u*%BG1t)8dbQI7Zc6lb+3vQ?VL}%voUOEgJecE<%TotwX zL29X$5=TGVBvksO|9nmj}UiogRN{M)iqK5djTojP1J-1wf>9r*z1$ zFOAPC^oi^Sh5&~9HjW^~CWy_NEYm-+IwLq>1aUpH^MP>+$r)q?dOj>wilejI?0f7` zv9?9m7w8~ZDGXjqmyXhhHI3&5ErjxW(mN44BmxC;UAeJg(~-cd&+$9d7UR{i+=`|x zW!+o9W0gm<3BbvhEl+|v#s(t1ELh)ZDabj@)oB&}tJ6*GAPo5=GH$BClQ})xbYGXR zxbW5-L(@caIP<(~!2&xSv#7vWoBS7tPEIy1qj47I^W6X$Sh!C1_Muxn*K)Spi#W)N z39Bi&7f5|5=|Pv@zn`BHN9$QlCxdg+Y#sKDgUIf;f2AJ(5X^r`X6T&kR%Wqt#<@;; zbcbg($`dy%^V(lay!5W#E8YDDigt8F>BfZ+u$Qqzb3VX3?7! z#o}=qr!XiuWYn9o^4FAeVL(TOGj8g>;o}V{qG_0X?!?vd{zcIFopg>Wi_PNi;DF{^lQ|!O z<<|Dh+2Vr@+Q8Tuv0Nk7(}BZ8*F>Y=qbOO8I|K=(Yn)|Whwyv^tH-bQ+@p&*J(a%v zsrb?IR7|ufja)nAOv;7G;H^d1fDq%m77fdOVMOsz21VDNu?s`&O#cYg$GHdHMoA#7 z1Y9uSnp=ucZbUMjy1gS+_pr5g9wz9QC0=3pEaYbw!E|s~BAc@f@il*9cJF5Y*61WV z?!7AgSn;-yw)@9@awz#d!Zt)u4g1v6bP5O({p(x2G^fhS_Q6HFpv91}qCFctwL2J^ z`G+HStK-)-+SM%YZXu&C%k%gMTZ2i>i1H0^m_jcWfqZ#UEi^C$>Wp=jZLT9@kL!ypk ze^VQFIW%|w%RWd@JkM|2yB79?RPS|EO>BLdA&P*_Rn(GMfco{S%KT2c?PMo4OvB&? zeaISB8F8L!>IlBvZ=(-dPMWwnwuGd$L2ho*$kGsAMfiQO0`sxS1uv+9sF z65|U7r&B8qHBSAsBrC&zgYyE5BFrBLeqAuigxXyiZuAzd9-YdDCK5;FKIy6&*r%uv z*g73@V!#DoiCCuAzvC-9CkRgKPE}d~R!*^KLhd5_*L$bRIg? zg~~)pl@=qG5!+7qZP`-9K4ySb@lC~|l(Ufrz?eEk*jIUFtKe)m$RxFtkU@gjv2VAa z@kZ3Pu}iQr=*wvK0xzG*tnyxr7m-?Q0Fl3La{EGzGdIp3@09i4<^f(@OjdnRGYPSQpzZAwkg}CTjaH`R^Pj-58+$`F@LW z9lyjwSBy-e$swuUU&m@VUW@Tda_iW@IP{2*vR}^-eKC8nz5n-F@9yi0Wlcn;c@~eq z!K0|SyyhV%B~gYSCs&kjgwYS9BGyVg9<2YISstqnSsDJ)8yut9btA+pUUlPf5;W33 zxU;n+Nyz5(CxmFk z9K=sxX&SoIy0<-Mj|r7%S-t^XF{?YGPQte5V*`!(A-iKTTTaQ96zYHqPIZE0Drc`M zWVb-)>93ZmPoLWglQGG=Vxm0E2=@y8IvdWgB^`h?8X3bVuK65a6WB!pX73XZPjFLE zS4@;;k!kRWd?$`v@~b`)$)L(^Xxr5a+d*)G-4;-$44mx+Z_M6@;jJp4&E28cI(~00 zB+rH4MkhUaxQKa7w-`crAV)uZ*pJwnsL$ohNzIot8G^qzcw&(&?{eE~Lb|a-pH}Ji z7zy3Uzy%Fb)65I~7^&G8jSQk$aorb1@W}#AxtF8EC5sy0FE8Iw;}Bmco!&t<-9;kS zsrs|e$YhQ04s`l2y{6^Xp+`4tdcbe+o&L2+sJ$_-&cM&CiLu;VPHj@-Z;d~N@s55% zsaw?TD+DNalj?=nd(UlkWN5aDHyhjX6R1Rz&+;A8i?$>>BgXjl<|*2#Pyga0=A>WD zSy-scwnZ^3?zeeS%ZwSfm7{I%&`5Y)*t%uju-p8%r`h`(LM4ldpVI$m@Jl^we~RT~ zuK4`C7!B*|lQ+2c>icFn_nC>~+`D~H)A-W-p&I_6dYQLryf_}sL>t&^#0*KxZJR*S zH_55cb}#(A@v4T`l69V6w8odKYs)=ekLhdR^)b-M`_75_R64XgO-Ryidzji2U z%puw^Mip|&iI{D5C@U8%bv_3fsxIPH)80AT=}28t@$dij0lqN zKz+Ht%m<7A0q*3;8Oh~$pGtjVnkMhJ!V4O{Szzv(9ZE=@`vv$?#<{j}iy`?va)P9Z zW-_|Fa#+z`5yU_1^FqZKl@B60%Z!(*P{}c>74zm&F^`hj{~T58<4HGw@EHhKEtI+A za=NFzYUK4V3TL_xW2#|hJ6G!$h;Ay{u*rMh)|cBj_h(lDzq=dafZa;t_4sga+&-SM zrhZoz_|*9IO_*kCjMSz()40G@g34lQ?^$+Fh%V#Y>fvO_0+!s3&}?OVXQWtXmp|96Za)f2jTas~-LUK+|9G!?}0SKi7+!vuzI*)=zb~{iM%+pLtdW4Uj zT{P$F=aWr)Y=^$z^(4uNO~_xo*=_j#VtbgwBemdex~ceK$+B#t%%`v%PniGE~|mkniO zB?5tIoene)Cw50zrdJ7lZA^~SxTXutM6OqYfE$Jw$&(m?w)7F*&BY1Iv&p%1o?h~{ z69v$iOLml&l<V$4lypSUN8Zx>j=s@_$%xnhgbLbaI&Mi-~GLiLIWVvD0Vt!UO|Ks%k_47FY=) zx5^W=<^QI}uk!!I+%Nnq?=P3hntXE~RuTF(hSl?BZk}G+cY?h@_)KV+| z_8xwxL1^~jtiJD^Z~2tycW9@ZN}qYz>xCNj{oVeLypYIsPsVkIm?Q~BB+ER-6Q8;` zRC8evCF(A3l(Rn;?;1yICk+(q(}3D3l<+3c5Yh~HjhIPWR5GAU0l^6b72LzRFmZ9< z6whwCq%2ze$fyg(I}{8?^Q!WX)Nn$Q1&RxU_Gp~u1h!aR$z1282OFN^+LEiY3}Lz^ z^Oy}K;TIFhm_Y^a`&3?6y$Vy3TT{tQF+#O$v`ySAg0{*40+%T_1InP9^%v%HSh4z~ zm!;7=5mWxbm-ok0N`Zb1aY469VYzHBs(g-SIyuYtIn?`tI=zgdo)b+8Rc5hoYENgg z1!h&M=cgKnTE!C9_OsF|CsW@u0ab)cY!8Mvits+l5`L2gmYr@DSI@5RP(TCemQJ8W z*s9QBj?=Om?fn5}iICptKha6S*VVXLZBpm2P9MH$_l-lnj-1PjBY|R5Do~~pz-2Le z>Vz=-GLT93t33&%WMN!Mo2b|y&lXkg4w7DA8x_$6HN46i)Z36(xeKJ-NTpR4@ov4@ zSqZb3pkdfZvsv{E)su70)30QR8{dzelUH{fKzT@-eAcw-%a+Nl_tHOq<7WPPQ8q}; z$#Sl~p(gXl>BwZUB`einZZi3Fd%to@WSJ0qWCYELej&=5Go)!S_?^FxK6DK=X-@NP zb%MaIso|PrcEyM@+Nq@}>cs$?@Y+7&948+ z8o>nK7sY9wxLBiG9T?=jjkz)dTDnKARHp4%8UkNqmpBw?z}KbZSXp2pNql zTo<51TeBhILhkI|vlb1eftwtw!r};!I)l|Y438GH zh_4Re#ol~fTDnIYE(}d1nMP<-rHlE#?|#`UNGto@Yjn3YJn{??{*)Y6N%ZB3b|imK z80qwEx>zbBw4U1YREsQLMmw(Ld0+oQvt{z{g9>pb-Bt@1NQNlfT&Z(>kN?$eZM)DxU&Q4lMOnOl~9>gA-Od_-#mtk3T7DN;U&QZe+!cx zo5RAVcKNYZ9g4*y``VwT<;0P4^=n`k+sx3_;sD7;T&S0DnRJNKTIq z*abY0nf80gKLqcqd|1c2_(8#m7EuMiu(Bc&3^q_Sx z6Q)`1ZhVdggih=HOX2>Z_zhT?l-<1QzeKIA;h!j#dmX07VrI7)v~QvXvkQ1*jNv_4 zChkH5)_jm+5rSaA-lcE&Cm%rve#>fJ&O_F4^X#7QNy0+uCBVk-+NcP#6119q*pcYf zYs;Rr6BiDf9`6Vpb+R?R>+#Cky_9O+I5@W#1lg__J~j%lQtn>f#*QxbLF z8DOf^qd&{DL44-CoJO#;JEE($NG3;Hh%Q~Scg{B^PJUbEW-*%?`&@xsSjAm#d0I4T zX{EI`kr4z*V3Z9=KKfOO{4?|Aa799U8$rVe&17QQ-RtpOnS(MGSp}mmil1F{=^2vI zED$qV-)YMAz?gc+?Nr7fhAxg)3C#YQ__)Lyio2o_#oP4WMHzub2j=#L^4G%g98h=W zJ}hlALk2H4(%?F9L>)&C(}|{NhMv9D#LMZ=JN=sj<1YIaW+@6)6;7_^bl>5D`A(0Y zlEg&oV_OEp{Px5f7nHO1UczsRC-lA@dhSJ~4P(9{Ipd}~qm@tmX!j!khteC2H3 zO)7gyz-SXUxWiH*;!zhN{-E0UOI5d$v2$`#6%4IdcMr*mI*@^KzSN zevTLPsK`LfPjXw!B#z}sX0+kSb8YGeQtt^{g=rhU_dy9mtnJ>C1FE1F<_4|w`oV6p z65@qVmB)sDO|H{n9T<_;-{wp{_P0cJV_y%`(YW>TdETyB#{L?oLX<&?PCQ^n;6ggK z`0^uhkEf3pi>`|NbYNpwJpO^m(8VD2J?8{e)01A&Y#!E!-?mXWtbfuPB z#GuU`2$k726vQbcI&^1f6d#n+xJ_L?o3s}!3ZeeV0=Pd5av*Ym?Y~nAsw#F_V!bb4 z{28pA$9fXX){!oJEXZzmAS78{pb)DN%csXb+GjY4wroKwCbQfONB0%m9V^;s8v<|# zqcoaSFQlHdX07k$bW=A?lxi1kDEX#seR`YwNWGfy*$cOLBO)Z%e&S8T+fwpU9j1e7 zo!PTyIq^<=`qyH8@A^FYyaeBaSV(lg{2?wl9%f0l3GOXR_y2qflLT(qYo~6%aoo0z z3htgly+BRO`fQJ66Na2MruIdNZre_#4>503E%YnYX=Eky?O3h^re8uniPUsbSwtKn zBF#=b7khFZw$d#7mR?(SMqLaPY6;4>{a@gYOe-KLI ztqzOEv|EupHV*=pOhYlNG9(CUHQytg9m7cq$w`*1_3P&}%`~kJeJl_)a?~ZyGBv|L zgHUj!hD{FTz>cx0W(}>PFy*z~&raA|`f)3eyZ1Q$ zQ&)}g-yNfS)BoGe_$NQiGLJKeAB*&>%FN!Ts#QV@%HJ~%g{nF&qkli!G{C8>9+=(P z&KD|G?Ehrm{$^I%Or!L@PaVe2eGfWjz^nEFgYf@-az8%8@}^d}c6Rzcr)=(Wk)0T{Gz~O^MiW*M@4|C#p`k z-UQP{1?OL32qd!_*yTlF048+{3Z3%~wqIFyKjfcKYd>^j;t_=f46B^E zjE?EA&P`VF-LHSsp3+jw3UzJMnu^;(YXu~>-EA7*Fg;#|6xv5PEmQv>yl9Xj+u+ls zfn6{`vdlviY`Dn)5Y`>NwF!tW`>df09 zklP=lazv!jxJVTp%{lHB}MZ8EyO=|I_`+WLaxB}+@np!brwzp9CxHvDIs&X=+RBHt0oMh&bvGtTc)0X@~_d%l*s=$xp zp~KQY&yv#nlqVfsbH-T|v#zp!24Kh;SN2D0lyucR4_~i`d$GF)mTNhUbo&N0&3@RK z;Pjn@t=^^~8=%KUkNc~S&FIGm5Afxgm?>Fi)|_Z=`H+rO+sJC|3Mlf$ zzW@FK`(bO*%aJL%`w`J`?!N-CcCBVe+45 z$kC`q@1&yq%P_g1LO#esJ;`8z4194*8l zMxycQYf8)2FjFubWCDSj!+H9z(8rKWE*qKjwFx?fGyVh zq}!^B?q;g~pi~rY-}{3(`c!#A{Z8$tq`6U(6^TE!quD#NwIvLw0`1rLROcp5pu@`N zIiqr0<9IZcKVtit`?%4AxcH}x*i7d1zazREnAar?c$ z1&amfDR{QVJmx!q9Y1C%1Dz^ik_)CsaUDN9!3gyG)EYwn>{w}iWC`c=LB8#h3<=%Y zSiRd855smza6L04c>FhSN#HaQ1(1g0hZDwQMs&u=w7=Kyvn8+;V*xwA`M{hicuL3^ ze?J5(o8f%>QqZGo(h=Wc4*|RwtEiDHO+=LmXZyYRZ^Pxk{qwIKw-FdIb}QXRZm8VX z>A0fD`9*7ryp659CG`Hu8im=%z4fRl#gkgLkx@sfBac~&7S12q##F_^wyhoFAqy(p zAnkdsEMGewpixh4)z0!f;Wgcls)B9D0b)Dyd=CIc@nW?;yOqXONG&_SbgSBQy z*xoGbM{Mr!jHQr;QhKGfW7myMnYmim?C-}l178mem?g&`%S@|*MW!4>>e*F`-qIhb zR=weMv>-Mty-ANu+?cT$>3v};2KLx@A?H6IMJiyLH)8`Q!ZACywa%TFgqHzJ_VdAF zUlVqcK6`Wa-oK*3Z?->z>57o3tP@{t1TKKN+%LoQGfeeLlI;3xdpzI7i^%XW@c)c$ zmwrJwa`i!b#i6a_G z)^?{z8Ji&lnO$|>EGGD4PLT&D_UYd-y7{4-#PLjR z`uY9$L|>%5n`Xx3K!aT7$Cmp>XLO3GxXvsUx2_?#i|EP+bgiHumC5(kuh9XM^iP%l zQ>p&9js9<#$SWhhFn5^5oyQW`WVVnD?PtdaI~@GZ@@9_T7?ZxzVahG{{*L`8dn2(- zjvAm#x%}L=Ofd*vU2nFxqe%5`q!=>$xm=ukr`0#@QYyKrNEa`+XoDHDzzSqqrg1!J zaGrjdXdhgD`rSs6W4!`QlYOfeQB~D4MUIJO|QDKovHP`7a3|T!7B* zzj>Ekohal~X=2C{)2!=scr3wvA@L?NOweU*jQo%-&DL{u{J1Of#!8iLx}W9ep!b?$ zppThpmEfO`+}IFa*kUQ)K;snW`_cm$;6hQ`Z5)(s*(JQ)-_+nrI?k>5pO@}dVD<{% z<7ab?wbgqP;CxE;_hhiJoEvHmAQ%?beZ3KfmrSiMQJrxL0GzUsb;W8>p9@zA*$LHe zh%ot^)i6Y!3;Db}B=)hD;7u%%nr0yhN+5fAIH)8IKkaS)CLmJ~JU{UA zOD9ISeQ+p_P)N^9-E^UB|EPzA*Tx%h3WCUC;@rpB+My{!c=yyXQQsO0n5Y zz%T85pir|7NV4rkw6%r_K66VB2Uw%nM_Sa_pi;K7f^O!U6>t7SF;^(U6!FHlV(Msw z{|ZuH_s%2J)^<8iLq+ttUG~95U(8)9tkJ`#_q?H97z-*N8Qw@g`&9bEY4HVc;D*kc zPceKaze}9CD@Hl^r3C30zanhaf6nNC9~|r28Qe8!rjx!koe}UzQS}ZO2s>>o)fBLmHqm(+#}IwQOTSg(T<8 zvk(Tj-WRVugyIQnEVylp7gd<|P{rX%1D~LpY;o@-5Z(TKXBCE${g7+G$^ww#B1{D5 zR>$<*?4a?hICy4lWu8aQx^~ddna^2#mA~hG#W7xp_I;egV#)mv@nSO+j8ozxrBJzm zKh3Zjy*cs6@77k^}h9a(&PC{8i(VO1}WCe z+p@~w^IIuhXUH-zv%6X$q_R8g{mHz>#NU{N^>T*~2__=qx`T-E6ZM_}OT&>AIeIf~PR&DzC zL;seYlj5)a?7ryE3PqFh>N@QL-T-=So%albnNgx>vE5>#)+x5d{#==>J!o?T73ZDj*8vSqfGSW*>3O+{Exhs} zYL0ylQu2S_W!#Pn9wPWyr*W^W^vLC!;eZ{4r$p$-sn9@jD!XK%X_%%%Js4Q6K7T4{b{ zJwi-9wanC>-L=jQn!zFXAVyS%zO0@8EQ%Z%EXR@q3M(9%6t8&hKYN&@6133m>)$m@ zUZ+6|`F`Bg!>vdgFHGvvmEXL6OB5r)!I#4O_t0<+|wioqIc}O#5 z;M|-F_Ge~kcP?2C%9e#jMr5gj+{==o!SuZS@NC+O|IJ?iOy9`ltB0kTV~hoyjd3;x zHl|cty2<(?jpU`x_*>S(d8o$ucVu=p00MkVJKuSSnz>x$Tj@*aA6Jd|TM>Q&uL{(M(JLUNR;Xy?;*}aG!9l)|D~2n8eSMSZ7;5Z9nuI-U|wz zoO1z{&-1+Rdwl<| zL(2JDI9w>(D)Lejp1kuv5~YUg)7nviUJxtJ8SjqkP?XJ>*Qt5=WZ zbNYx~a#-m9!r{ua&8Negm@!&fcw%a`IT6MQbVazA8eI;Up8C)@G$8qAowki-i#NWwo{&+mfZm@lyyo*=E$OOtRkTJ&u{qQIoV98#3=2!g3O z^+$>bdrnHHIf} zL2m1_T-}QZeZV5F*?~*~eyGDRVz3CX&D4y;eAZ;h>972+V{^qsE)SYV9=OraKYVgw@Ir1P zq^Tr1ruKD!LA*}N*Fm7xP=czyMt~udB3_T7+ry>l_#!qYxD0DjwujVbR!6g_ha}8i`r$iNSy6%y4|MCw8U7DhG_(2# zRdNC(2!bUxw(5(3gYt!8M;S0`)%4U=j8s8c-LbH!f-@FpAO^? zd>W8fqJ}8U5q(;)nJ0E*NErXU6ZLDup(_VE@OmzFLl~m&_tTx9*J0P;he0y+@+I0I zmzOAh8&=HY(o2@7IjWiRheGJhE-%u$0;HzWirm4o=ch;#W%sgWYME7oPuMEQ-T;s*(|z6IQ##QDCTN^}Pa#a-efF(@O+RnFm!5owXL z%_63jF&nx)C5(#;+oO3V0Y@n{|6OC0p zLpk|MlXa{0SB3?5TGQRPm-k{-)iuSrvd(Thz;&lsb1R1!S0FA|akH;iR!uOmY(k-7 zcymh{-Q~-fG(nzAqRXdzf9z{?#}Qd)otnX1j4HzuNj68rsx%Q++@u(POE+6^UT)`S z;=oHUZ2e9~`Oa594(@0mQ7~Fo`&lv>16KS6(uO~U^i@1SNvv^T!04OpPTJ1hI|asr zz$+*`FO^Htoe?_q`nEGVrBP7j8P6|El$gmL;C&K$lVaMT2@RrHfUS>#gTdxFYbO?R?eT1 z55XKIM*53#iviz-7C-F~8J*_1-G8s@VQUU{4rz@DZ4n?L{PxoTKmPXCA~yCAJ;EQH zdv{iUZysNv-M_k`JyNll;r@01KmF?e2I1llKQCZYM9T?6UwJ9a$;NtfQrcGf+QdfW zeQTK}tS1et6pvCxm5s8l#d*KPG6s3^?TMHewDC?cdFiH6SUe9rIuR(y?scOohN)%<+JBhV6LP%gj4H*sZYLI|5L;=kLR7QyRuK z>69|pL7m*EjQg7jsema;t6>Fbc*EG(n92P*&g%AUM6ak#@Js<9?q>~|yA99C6ayv= z-()y2v<_YHcedulise)F!OQogJ%ZtlB?y}i>*Xk~F%1LcW8rOdEjoI%AW8`Tok1^x)_T6fI)*#S-MLaE=r+?f6BrZ!Vr@tXE~U40+ADo- z{i>4}`+HIV&QVR*@vMMv+?+q#+Mezi8}TUj(?de@cK$u^3-=Jr9f*C z;G7UgH-pGc{@O0iwA!_jH_HL>@EKGGxd?v_t--w&e!DKe7RlIWkjr*-P~X`2d_Ja5 z0_4iA*fVS!`&?#)9U@>ojq^*^w$nk8W@Oz_BgYFyh$7T~_G($FL5l(D6vTwDyYM-x6 zLQ!5Oh?yibp$tf!=nh>yDay&LJ-)Mmn7l;kBo2whQ)x(9uu%|hKX{8)2J-KW`J zcq=U^lHWdYH5Wr+Y@nn2ME(bDvk9q+%+w?}p}_IW)6W#939df^6pLwaQ%Wd3X+LI0 z$4g`!#Cvaw_bEyJG8b<6X%?59V3gjDgx{fsX#mH25%T=!Mfp`C&yEwZvXkW#p`B_0 zMQCw;P)TmH(4&?j#>b~>nz#7e(28tDnTokaCJHcYFhpW`z8pl0tSDP6UF*bxvGsxX zEDlW*vOg*3W#S83sodrCjKJ-@Z-zt6Y^pu}EwW3T&mK4D9ai^Z=$e#!u|YH2zq3gI zx<}NI;nNg1%lPf{HNO;Z!4&JU;jCh>J=4njf|vvSQge9fxx)NmS^&qDF1(F>^9h!E zxPH8$D^fy=CTMZ!;KXW=eo|I{?lpDpOWW`L*g223oFyO7cOuF`C7R)-69T!p!A(R{ z!sJzpg^edTVnfYhn1Vf5Y{U9aY^Id%_ACCj=8i4Hpq*t}5zlb|5HqMrZ{v1tdoRFV zc0c$ohfv9dieV-~-KjULO=3jZ!seF(!0$75Zb@&>IT(v9>!q;V6FX(TTAv8PnyyR3 z4}0ei6YUmanOh9Vx{l=BM)NBo|y-=6rr(|evR z*sJ1XXbWXfw&bs~M2_%}{PC>~FA$l-j&||y(NPWMq@N;X*fbIE2uQyVo=ud(0*B=< zSUt2tGPq?yr+lAD=sZ5-TT2U3T+qF1wT_Dlpb*weygP&kk-=l=3wH2n^>udZVz}W6MMXv!^uZWIa?;vwsp)85!xkgy#G|?K zK-#ole)mXyTNj=zrMnJxdZSMYvl%P)UlF0Zb{Ec$+>TObiJdW%By5=BoDZzHV-fB>dJ}A=T zWS|T%%;<;Uw7+ZEAQ2e8e!)s>`&}ms)06Gv5aG3lLG6-rR5?MUB(Sa~T*m=nYQU}} z4iBc}5poVjOVack0)w=sq2|g#GI9>M`_y;b*4W4yIUs9~ZIi)-V_nesPOm=x%Wvy#&6?X--mxC$$ z#f30m=8t`!)3$7nf|vSRmL2ah<^6&_Xsh_@MJ;pC*Cf{&=4m%?-X1Es6USw)=u(H7-<*7A5-xyJ(TFBLr+N-j znborlNu~ac#%AHpP|i1&XoVF|8%U^?l*x5pE$B>D$lWl5G22G^Io24Aus@Lur*Q6m1Y#oEdAd}%?w_!jWKQgH#Su*=(I&OcElZ$2zV z89tPi?4w#neD(wwmlT1~k2@DT=d!bN%nI4%74BQ z1@GKy;&jD#9Td{1>Ov3Mo`B_a=a6B{sIgjX^WXLzh@60aojlh%sNZ3Iuys#x@-|$r zVMh%ULyJv5w|#{9%bYlLPr=Z17V+`}I{XJbO(e+hxBVtZ%q+2k(u#BepX`jsRdT%f|O>zhz{%&dA3c5Kp&jY)XVxZQ3VV~*#r346GJv93yg8M?JGlD-_n$;N)DWGI z5RUr>lr(C*8?F8wc>dQ|S^D-M`u*y* z@o3$5HmCQ!BZTx<62m9sF#ZIS7>bMb9|t+J;;uoFm#;@cb)<;gQyxl)F&U4x|5@B$ z`A$KIMfiRgeiG;V#(q^1;<$P6K4uyCj3QxrMHa>dla?MPL2O(GR?}iC`8QY0t*#_v zjt{gl96t%3uXX{-7e?eFi|L!c>PVWaHE2n5nw>CTZGO1MMDHd7?^MguuvytuLMA?E zsxWarmztDchsir)7I89V$q}r{gO+(2G-9Y0fL?k&r9HMZbp3F7Wls6>vwUO5noYJ-unymshRUoXP%{ zK+^~m!MTmdx2HK2`K@vYO9KF4>skuB)4F^5R~Vp

#$-YE%|}-n%Z@_41R4xvVGP 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�g84 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ⅅ-;Yu% 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

m$o){^si$Bes%sSA_K!pPvYfz% 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%0A!#NS%t~>e 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� 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

aFCjsWfZ9FohiRW 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 z�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 Q2n0Izg~!qI!-3cT57Fb-1^@s6 diff --git a/deps/discord-rpc/documentation/images/rp-secret-example.png b/deps/discord-rpc/documentation/images/rp-secret-example.png deleted file mode 100644 index 4ff21b093fc34e51b24d26e218974956877a90ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14447 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 diff --git a/deps/discord-rpc/examples/button-clicker/.gitignore b/deps/discord-rpc/examples/button-clicker/.gitignore deleted file mode 100644 index 2695047f5d..0000000000 --- a/deps/discord-rpc/examples/button-clicker/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -/Library/ -/Temp/ -/obj/ -/Assets/Plugins/ -/Assets/Plugins.meta -*.sln -*.csproj -*.userprefs diff --git a/deps/discord-rpc/examples/button-clicker/Assets/DiscordController.cs b/deps/discord-rpc/examples/button-clicker/Assets/DiscordController.cs deleted file mode 100644 index 182d31d8a1..0000000000 --- a/deps/discord-rpc/examples/button-clicker/Assets/DiscordController.cs +++ /dev/null @@ -1,129 +0,0 @@ -using UnityEngine; - -[System.Serializable] -public class DiscordJoinEvent : UnityEngine.Events.UnityEvent { } - -[System.Serializable] -public class DiscordSpectateEvent : UnityEngine.Events.UnityEvent { } - -[System.Serializable] -public class DiscordJoinRequestEvent : UnityEngine.Events.UnityEvent { } - -public class DiscordController : MonoBehaviour -{ - public DiscordRpc.RichPresence presence = new DiscordRpc.RichPresence(); - public string applicationId; - public string optionalSteamId; - public int callbackCalls; - public int clickCounter; - public DiscordRpc.DiscordUser joinRequest; - public UnityEngine.Events.UnityEvent onConnect; - public UnityEngine.Events.UnityEvent onDisconnect; - public UnityEngine.Events.UnityEvent hasResponded; - public DiscordJoinEvent onJoin; - public DiscordJoinEvent onSpectate; - public DiscordJoinRequestEvent onJoinRequest; - - DiscordRpc.EventHandlers handlers; - - public void OnClick() - { - Debug.Log("Discord: on click!"); - clickCounter++; - - presence.details = string.Format("Button clicked {0} times", clickCounter); - - DiscordRpc.UpdatePresence(presence); - } - - public void RequestRespondYes() - { - Debug.Log("Discord: responding yes to Ask to Join request"); - DiscordRpc.Respond(joinRequest.userId, DiscordRpc.Reply.Yes); - hasResponded.Invoke(); - } - - public void RequestRespondNo() - { - Debug.Log("Discord: responding no to Ask to Join request"); - DiscordRpc.Respond(joinRequest.userId, DiscordRpc.Reply.No); - hasResponded.Invoke(); - } - - public void ReadyCallback(ref DiscordRpc.DiscordUser connectedUser) - { - ++callbackCalls; - Debug.Log(string.Format("Discord: connected to {0}#{1}: {2}", connectedUser.username, connectedUser.discriminator, connectedUser.userId)); - onConnect.Invoke(); - } - - public void DisconnectedCallback(int errorCode, string message) - { - ++callbackCalls; - Debug.Log(string.Format("Discord: disconnect {0}: {1}", errorCode, message)); - onDisconnect.Invoke(); - } - - public void ErrorCallback(int errorCode, string message) - { - ++callbackCalls; - Debug.Log(string.Format("Discord: error {0}: {1}", errorCode, message)); - } - - public void JoinCallback(string secret) - { - ++callbackCalls; - Debug.Log(string.Format("Discord: join ({0})", secret)); - onJoin.Invoke(secret); - } - - public void SpectateCallback(string secret) - { - ++callbackCalls; - Debug.Log(string.Format("Discord: spectate ({0})", secret)); - onSpectate.Invoke(secret); - } - - public void RequestCallback(ref DiscordRpc.DiscordUser request) - { - ++callbackCalls; - Debug.Log(string.Format("Discord: join request {0}#{1}: {2}", request.username, request.discriminator, request.userId)); - joinRequest = request; - onJoinRequest.Invoke(request); - } - - void Start() - { - } - - void Update() - { - DiscordRpc.RunCallbacks(); - } - - void OnEnable() - { - Debug.Log("Discord: init"); - callbackCalls = 0; - - handlers = new DiscordRpc.EventHandlers(); - handlers.readyCallback = ReadyCallback; - handlers.disconnectedCallback += DisconnectedCallback; - handlers.errorCallback += ErrorCallback; - handlers.joinCallback += JoinCallback; - handlers.spectateCallback += SpectateCallback; - handlers.requestCallback += RequestCallback; - DiscordRpc.Initialize(applicationId, ref handlers, true, optionalSteamId); - } - - void OnDisable() - { - Debug.Log("Discord: shutdown"); - DiscordRpc.Shutdown(); - } - - void OnDestroy() - { - - } -} diff --git a/deps/discord-rpc/examples/button-clicker/Assets/DiscordController.cs.meta b/deps/discord-rpc/examples/button-clicker/Assets/DiscordController.cs.meta deleted file mode 100644 index ee24c7e484..0000000000 --- a/deps/discord-rpc/examples/button-clicker/Assets/DiscordController.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 27f0a5f59ffffa84c86547736e2e730a -timeCreated: 1501697692 -licenseType: Free -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/deps/discord-rpc/examples/button-clicker/Assets/DiscordRpc.cs b/deps/discord-rpc/examples/button-clicker/Assets/DiscordRpc.cs deleted file mode 100644 index af82c1c231..0000000000 --- a/deps/discord-rpc/examples/button-clicker/Assets/DiscordRpc.cs +++ /dev/null @@ -1,198 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Runtime.InteropServices; -using System.Text; - -public class DiscordRpc -{ - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - public delegate void ReadyCallback(ref DiscordUser connectedUser); - - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - public delegate void DisconnectedCallback(int errorCode, string message); - - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - public delegate void ErrorCallback(int errorCode, string message); - - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - public delegate void JoinCallback(string secret); - - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - public delegate void SpectateCallback(string secret); - - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - public delegate void RequestCallback(ref DiscordUser request); - - public struct EventHandlers - { - public ReadyCallback readyCallback; - public DisconnectedCallback disconnectedCallback; - public ErrorCallback errorCallback; - public JoinCallback joinCallback; - public SpectateCallback spectateCallback; - public RequestCallback requestCallback; - } - - [Serializable, StructLayout(LayoutKind.Sequential)] - public struct RichPresenceStruct - { - public IntPtr state; /* max 128 bytes */ - public IntPtr details; /* max 128 bytes */ - public long startTimestamp; - public long endTimestamp; - public IntPtr largeImageKey; /* max 32 bytes */ - public IntPtr largeImageText; /* max 128 bytes */ - public IntPtr smallImageKey; /* max 32 bytes */ - public IntPtr smallImageText; /* max 128 bytes */ - public IntPtr partyId; /* max 128 bytes */ - public int partySize; - public int partyMax; - public IntPtr matchSecret; /* max 128 bytes */ - public IntPtr joinSecret; /* max 128 bytes */ - public IntPtr spectateSecret; /* max 128 bytes */ - public bool instance; - } - - [Serializable] - public struct DiscordUser - { - public string userId; - public string username; - public string discriminator; - public string avatar; - } - - public enum Reply - { - No = 0, - Yes = 1, - Ignore = 2 - } - - [DllImport("discord-rpc", EntryPoint = "Discord_Initialize", CallingConvention = CallingConvention.Cdecl)] - public static extern void Initialize(string applicationId, ref EventHandlers handlers, bool autoRegister, string optionalSteamId); - - [DllImport("discord-rpc", EntryPoint = "Discord_Shutdown", CallingConvention = CallingConvention.Cdecl)] - public static extern void Shutdown(); - - [DllImport("discord-rpc", EntryPoint = "Discord_RunCallbacks", CallingConvention = CallingConvention.Cdecl)] - public static extern void RunCallbacks(); - - [DllImport("discord-rpc", EntryPoint = "Discord_UpdatePresence", CallingConvention = CallingConvention.Cdecl)] - private static extern void UpdatePresenceNative(ref RichPresenceStruct presence); - - [DllImport("discord-rpc", EntryPoint = "Discord_ClearPresence", CallingConvention = CallingConvention.Cdecl)] - public static extern void ClearPresence(); - - [DllImport("discord-rpc", EntryPoint = "Discord_Respond", CallingConvention = CallingConvention.Cdecl)] - public static extern void Respond(string userId, Reply reply); - - [DllImport("discord-rpc", EntryPoint = "Discord_UpdateHandlers", CallingConvention = CallingConvention.Cdecl)] - public static extern void UpdateHandlers(ref EventHandlers handlers); - - public static void UpdatePresence(RichPresence presence) - { - var presencestruct = presence.GetStruct(); - UpdatePresenceNative(ref presencestruct); - presence.FreeMem(); - } - - public class RichPresence - { - private RichPresenceStruct _presence; - private readonly List _buffers = new List(10); - - public string state; /* max 128 bytes */ - public string details; /* max 128 bytes */ - public long startTimestamp; - public long endTimestamp; - public string largeImageKey; /* max 32 bytes */ - public string largeImageText; /* max 128 bytes */ - public string smallImageKey; /* max 32 bytes */ - public string smallImageText; /* max 128 bytes */ - public string partyId; /* max 128 bytes */ - public int partySize; - public int partyMax; - public string matchSecret; /* max 128 bytes */ - public string joinSecret; /* max 128 bytes */ - public string spectateSecret; /* max 128 bytes */ - public bool instance; - - ///

- /// Get the reprensentation of this instance - /// - /// reprensentation of this instance - internal RichPresenceStruct GetStruct() - { - if (_buffers.Count > 0) - { - FreeMem(); - } - - _presence.state = StrToPtr(state); - _presence.details = StrToPtr(details); - _presence.startTimestamp = startTimestamp; - _presence.endTimestamp = endTimestamp; - _presence.largeImageKey = StrToPtr(largeImageKey); - _presence.largeImageText = StrToPtr(largeImageText); - _presence.smallImageKey = StrToPtr(smallImageKey); - _presence.smallImageText = StrToPtr(smallImageText); - _presence.partyId = StrToPtr(partyId); - _presence.partySize = partySize; - _presence.partyMax = partyMax; - _presence.matchSecret = StrToPtr(matchSecret); - _presence.joinSecret = StrToPtr(joinSecret); - _presence.spectateSecret = StrToPtr(spectateSecret); - _presence.instance = instance; - - return _presence; - } - - /// - /// Returns a pointer to a representation of the given string with a size of maxbytes - /// - /// String to convert - /// Pointer to the UTF-8 representation of - private IntPtr StrToPtr(string input) - { - if (string.IsNullOrEmpty(input)) return IntPtr.Zero; - var convbytecnt = Encoding.UTF8.GetByteCount(input); - var buffer = Marshal.AllocHGlobal(convbytecnt + 1); - for (int i = 0; i < convbytecnt + 1; i++) - { - Marshal.WriteByte(buffer, i , 0); - } - _buffers.Add(buffer); - Marshal.Copy(Encoding.UTF8.GetBytes(input), 0, buffer, convbytecnt); - return buffer; - } - - /// - /// Convert string to UTF-8 and add null termination - /// - /// string to convert - /// UTF-8 representation of with added null termination - private static string StrToUtf8NullTerm(string toconv) - { - var str = toconv.Trim(); - var bytes = Encoding.Default.GetBytes(str); - if (bytes.Length > 0 && bytes[bytes.Length - 1] != 0) - { - str += "\0\0"; - } - return Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(str)); - } - - /// - /// Free the allocated memory for conversion to - /// - internal void FreeMem() - { - for (var i = _buffers.Count - 1; i >= 0; i--) - { - Marshal.FreeHGlobal(_buffers[i]); - _buffers.RemoveAt(i); - } - } - } -} \ No newline at end of file diff --git a/deps/discord-rpc/examples/button-clicker/Assets/DiscordRpc.cs.meta b/deps/discord-rpc/examples/button-clicker/Assets/DiscordRpc.cs.meta deleted file mode 100644 index acd04b102f..0000000000 --- a/deps/discord-rpc/examples/button-clicker/Assets/DiscordRpc.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: b4474a677de9d80409e98c5393ec5b1e -timeCreated: 1501697692 -licenseType: Free -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/deps/discord-rpc/examples/button-clicker/Assets/Editor/BuildHelper.cs b/deps/discord-rpc/examples/button-clicker/Assets/Editor/BuildHelper.cs deleted file mode 100644 index 977745312c..0000000000 --- a/deps/discord-rpc/examples/button-clicker/Assets/Editor/BuildHelper.cs +++ /dev/null @@ -1,101 +0,0 @@ -using UnityEditor; -using System.Diagnostics; -using System.IO; - -[InitializeOnLoad] -public class ScriptBatch -{ - static ScriptBatch() - { - EnsureDLL(); - } - - public static bool FileExists(string filename) - { - return new FileInfo(filename).Exists; - } - - public static bool RunRpcBuildScript() - { - UnityEngine.Debug.Log("Try to run build script"); - - Process proc = new Process(); -#if UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX - proc.StartInfo.UseShellExecute = false; - // brew installs cmake in /usr/local/bin, which Unity seems to strip from PATH? - string newPath = proc.StartInfo.EnvironmentVariables["PATH"] + ":/usr/local/bin"; - proc.StartInfo.EnvironmentVariables["PATH"] = newPath; -#endif - proc.StartInfo.FileName = "python"; - proc.StartInfo.Arguments = "build.py unity"; - proc.StartInfo.WorkingDirectory = "../.."; - proc.Start(); - proc.WaitForExit(); - return proc.ExitCode == 0; - } - - public static void EnsureDLL() - { - #if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN - string[] dstDirs = { "Assets/Plugins", "Assets/Plugins/x86", "Assets/Plugins/x86_64" }; - string[] dstDlls = { "Assets/Plugins/x86/discord-rpc.dll", "Assets/Plugins/x86_64/discord-rpc.dll" }; - string[] srcDlls = { "../../builds/install/win64-dynamic/bin/discord-rpc.dll", "../../builds/install/win64-dynamic/bin/discord-rpc.dll" }; - #elif UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX - string[] dstDirs = { "Assets/Plugins" }; - string[] dstDlls = { "Assets/Plugins/discord-rpc.bundle" }; - string[] srcDlls = { "../../builds/install/osx-dynamic/lib/libdiscord-rpc.dylib" }; - #else - string[] dstDirs = { "Assets/Plugins", "Assets/Plugins/x86", "Assets/Plugins/x86_64" }; - string[] dstDlls = { "Assets/Plugins/discord-rpc.so" }; - string[] srcDlls = { "../../builds/install/linux-dynamic/lib/libdiscord-rpc.so" }; - #endif - - Debug.Assert(dstDlls.Length == srcDlls.Length); - - bool exists = true; - foreach (string fname in dstDlls) - { - if (!FileExists(fname)) - { - exists = false; - break; - } - } - - if (exists) - { - return; - } - - exists = true; - foreach (string fname in srcDlls) - { - if (!FileExists(fname)) - { - exists = false; - break; - } - } - - if (!exists) - { - if (!RunRpcBuildScript()) - { - UnityEngine.Debug.LogError("Build failed"); - return; - } - } - - // make sure the dirs exist - foreach (string dirname in dstDirs) - { - Directory.CreateDirectory(dirname); - } - - // Copy dlls - for (int i = 0; i < dstDlls.Length; ++i) - { - FileUtil.CopyFileOrDirectory(srcDlls[i], dstDlls[i]); - } - } -} \ No newline at end of file diff --git a/deps/discord-rpc/examples/button-clicker/Assets/Editor/BuildHelper.cs.meta b/deps/discord-rpc/examples/button-clicker/Assets/Editor/BuildHelper.cs.meta deleted file mode 100644 index c14e1e8b94..0000000000 --- a/deps/discord-rpc/examples/button-clicker/Assets/Editor/BuildHelper.cs.meta +++ /dev/null @@ -1,13 +0,0 @@ -fileFormatVersion: 2 -guid: e5aecc4633e5f594b85eaa39f49bb402 -timeCreated: 1512071254 -licenseType: Free -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/deps/discord-rpc/examples/button-clicker/Assets/main.unity b/deps/discord-rpc/examples/button-clicker/Assets/main.unity deleted file mode 100644 index c5074d5555..0000000000 --- a/deps/discord-rpc/examples/button-clicker/Assets/main.unity +++ /dev/null @@ -1,1278 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 8 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 3 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_TemporalCoherenceThreshold: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 0 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 9 - m_Resolution: 2 - m_BakeResolution: 40 - m_TextureWidth: 1024 - m_TextureHeight: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFiltering: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousColorSigma: 1 - m_PVRFilteringAtrousNormalSigma: 1 - m_PVRFilteringAtrousPositionSigma: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &134146651 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 134146656} - - component: {fileID: 134146655} - - component: {fileID: 134146654} - - component: {fileID: 134146653} - - component: {fileID: 134146652} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &134146652 -AudioListener: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 134146651} - m_Enabled: 1 ---- !u!124 &134146653 -Behaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 134146651} - m_Enabled: 1 ---- !u!92 &134146654 -Behaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 134146651} - m_Enabled: 1 ---- !u!20 &134146655 -Camera: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 134146651} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 1 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 - m_StereoMirrorMode: 0 ---- !u!4 &134146656 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 134146651} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &359174702 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 359174703} - - component: {fileID: 359174705} - - component: {fileID: 359174704} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &359174703 -RectTransform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 359174702} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1032248339} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &359174704 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 359174702} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 10 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Button ---- !u!222 &359174705 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 359174702} ---- !u!1 &520806049 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 520806050} - - component: {fileID: 520806052} - - component: {fileID: 520806051} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &520806050 -RectTransform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 520806049} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 806911717} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &520806051 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 520806049} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 10 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Yes ---- !u!222 &520806052 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 520806049} ---- !u!1 &657463235 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 657463238} - - component: {fileID: 657463237} - - component: {fileID: 657463236} - m_Layer: 5 - m_Name: IsConnectedLabel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &657463236 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 657463235} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.89518255, g: 0.9338235, b: 0.23345588, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 24 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 40 - m_Alignment: 0 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Discord Disconnected ---- !u!222 &657463237 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 657463235} ---- !u!224 &657463238 -RectTransform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 657463235} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1766020814} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 16, y: -19.00003} - m_SizeDelta: {x: 239.20001, y: 37.799988} - m_Pivot: {x: 0, y: 1} ---- !u!1 &806911716 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 806911717} - - component: {fileID: 806911720} - - component: {fileID: 806911719} - - component: {fileID: 806911718} - m_Layer: 5 - m_Name: ButtonRespondYes - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &806911717 -RectTransform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 806911716} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 520806050} - m_Father: {fileID: 1766020814} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -129.1, y: -116.3} - m_SizeDelta: {x: 160, y: 30} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &806911718 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 806911716} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_DisabledTrigger: Disabled - m_Interactable: 0 - m_TargetGraphic: {fileID: 806911719} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1929635629} - m_MethodName: RequestRespondYes - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, - Culture=neutral, PublicKeyToken=null ---- !u!114 &806911719 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 806911716} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 ---- !u!222 &806911720 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 806911716} ---- !u!1 &1032248338 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 1032248339} - - component: {fileID: 1032248342} - - component: {fileID: 1032248341} - - component: {fileID: 1032248340} - m_Layer: 5 - m_Name: Button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1032248339 -RectTransform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1032248338} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 359174703} - m_Father: {fileID: 1766020814} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 160, y: 30} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1032248340 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1032248338} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1032248341} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1929635629} - m_MethodName: OnClick - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, - Culture=neutral, PublicKeyToken=null ---- !u!114 &1032248341 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1032248338} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 ---- !u!222 &1032248342 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1032248338} ---- !u!1 &1238162986 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 1238162987} - - component: {fileID: 1238162989} - - component: {fileID: 1238162988} - m_Layer: 5 - m_Name: JoinRequestInfo - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1238162987 -RectTransform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1238162986} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1766020814} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -0.0000085831, y: -66.9} - m_SizeDelta: {x: 323.38, y: 55.29} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1238162988 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1238162986} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 0.88965523, b: 0, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 10 - m_MaxSize: 40 - m_Alignment: 1 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: No requests yet ---- !u!222 &1238162989 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1238162986} ---- !u!1 &1470895131 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 1470895134} - - component: {fileID: 1470895133} - - component: {fileID: 1470895132} - m_Layer: 0 - m_Name: EventSystem - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1470895132 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1470895131} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1077351063, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalAxis: Horizontal - m_VerticalAxis: Vertical - m_SubmitButton: Submit - m_CancelButton: Cancel - m_InputActionsPerSecond: 10 - m_RepeatDelay: 0.5 - m_ForceModuleActive: 0 ---- !u!114 &1470895133 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1470895131} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -619905303, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} - m_Name: - m_EditorClassIdentifier: - m_FirstSelected: {fileID: 0} - m_sendNavigationEvents: 1 - m_DragThreshold: 5 ---- !u!4 &1470895134 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1470895131} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1766020810 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 1766020814} - - component: {fileID: 1766020813} - - component: {fileID: 1766020812} - - component: {fileID: 1766020811} - m_Layer: 5 - m_Name: Canvas - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1766020811 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1766020810} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!114 &1766020812 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1766020810} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 0 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 800, y: 600} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 ---- !u!223 &1766020813 -Canvas: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1766020810} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 0 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 0 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!224 &1766020814 -RectTransform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1766020810} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0, y: 0, z: 0} - m_Children: - - {fileID: 1032248339} - - {fileID: 657463238} - - {fileID: 806911717} - - {fileID: 1858885002} - - {fileID: 1238162987} - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0, y: 0} ---- !u!1 &1858885001 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 1858885002} - - component: {fileID: 1858885005} - - component: {fileID: 1858885004} - - component: {fileID: 1858885003} - m_Layer: 5 - m_Name: ButtonRespondNo - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1858885002 -RectTransform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1858885001} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1958982062} - m_Father: {fileID: 1766020814} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 128.7, y: -116.3} - m_SizeDelta: {x: 160, y: 30} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1858885003 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1858885001} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_DisabledTrigger: Disabled - m_Interactable: 0 - m_TargetGraphic: {fileID: 1858885004} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1929635629} - m_MethodName: RequestRespondNo - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, - Culture=neutral, PublicKeyToken=null ---- !u!114 &1858885004 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1858885001} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 ---- !u!222 &1858885005 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1858885001} ---- !u!1 &1929635628 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 1929635630} - - component: {fileID: 1929635629} - m_Layer: 0 - m_Name: Discord - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1929635629 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1929635628} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 27f0a5f59ffffa84c86547736e2e730a, type: 3} - m_Name: - m_EditorClassIdentifier: - presence: - state: Button clicking - details: Best game ever - startTimestamp: 0 - endTimestamp: 0 - largeImageKey: stable-large - largeImageText: - smallImageKey: canary-small - smallImageText: - partyId: abcdefg - partySize: 1 - partyMax: 10 - matchSecret: match_secret - joinSecret: join_secret - spectateSecret: spectate_secret - instance: 1 - applicationId: 345229890980937739 - optionalSteamId: - callbackCalls: 0 - clickCounter: 0 - joinRequest: - userId: - username: - discriminator: - avatar: - onConnect: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 657463236} - m_MethodName: set_text - m_Mode: 5 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: Discord Connected - m_BoolArgument: 1 - m_CallState: 2 - m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine, Version=0.0.0.0, Culture=neutral, - PublicKeyToken=null - onDisconnect: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 657463236} - m_MethodName: set_text - m_Mode: 5 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: Discord Disconnected - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine, Version=0.0.0.0, Culture=neutral, - PublicKeyToken=null - hasResponded: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1238162988} - m_MethodName: set_text - m_Mode: 5 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: No requests yet - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 806911718} - m_MethodName: set_interactable - m_Mode: 6 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 1858885003} - m_MethodName: set_interactable - m_Mode: 6 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine, Version=0.0.0.0, Culture=neutral, - PublicKeyToken=null - onJoin: - m_PersistentCalls: - m_Calls: [] - m_TypeName: DiscordJoinEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, - PublicKeyToken=null - onSpectate: - m_PersistentCalls: - m_Calls: [] - m_TypeName: DiscordJoinEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, - PublicKeyToken=null - onJoinRequest: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1238162988} - m_MethodName: set_text - m_Mode: 5 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: Someone asked to join! - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 806911718} - m_MethodName: set_interactable - m_Mode: 6 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 1 - m_CallState: 2 - - m_Target: {fileID: 1858885003} - m_MethodName: set_interactable - m_Mode: 6 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 1 - m_CallState: 2 - m_TypeName: DiscordJoinRequestEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, - PublicKeyToken=null ---- !u!4 &1929635630 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1929635628} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1958982061 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 1958982062} - - component: {fileID: 1958982064} - - component: {fileID: 1958982063} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1958982062 -RectTransform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1958982061} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1858885002} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1958982063 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1958982061} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 10 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: No ---- !u!222 &1958982064 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1958982061} diff --git a/deps/discord-rpc/examples/button-clicker/Assets/main.unity.meta b/deps/discord-rpc/examples/button-clicker/Assets/main.unity.meta deleted file mode 100644 index 75654f195f..0000000000 --- a/deps/discord-rpc/examples/button-clicker/Assets/main.unity.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3b03d21bb25fa494e8694cd6e4b6d769 -timeCreated: 1501696924 -licenseType: Free -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/deps/discord-rpc/examples/button-clicker/ProjectSettings/AudioManager.asset b/deps/discord-rpc/examples/button-clicker/ProjectSettings/AudioManager.asset deleted file mode 100644 index da6112576a..0000000000 --- a/deps/discord-rpc/examples/button-clicker/ProjectSettings/AudioManager.asset +++ /dev/null @@ -1,17 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!11 &1 -AudioManager: - m_ObjectHideFlags: 0 - m_Volume: 1 - Rolloff Scale: 1 - Doppler Factor: 1 - Default Speaker Mode: 2 - m_SampleRate: 0 - m_DSPBufferSize: 0 - m_VirtualVoiceCount: 512 - m_RealVoiceCount: 32 - m_SpatializerPlugin: - m_AmbisonicDecoderPlugin: - m_DisableAudio: 0 - m_VirtualizeEffects: 1 diff --git a/deps/discord-rpc/examples/button-clicker/ProjectSettings/ClusterInputManager.asset b/deps/discord-rpc/examples/button-clicker/ProjectSettings/ClusterInputManager.asset deleted file mode 100644 index e7886b266a..0000000000 --- a/deps/discord-rpc/examples/button-clicker/ProjectSettings/ClusterInputManager.asset +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!236 &1 -ClusterInputManager: - m_ObjectHideFlags: 0 - m_Inputs: [] diff --git a/deps/discord-rpc/examples/button-clicker/ProjectSettings/DynamicsManager.asset b/deps/discord-rpc/examples/button-clicker/ProjectSettings/DynamicsManager.asset deleted file mode 100644 index 0be3d787c2..0000000000 --- a/deps/discord-rpc/examples/button-clicker/ProjectSettings/DynamicsManager.asset +++ /dev/null @@ -1,20 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!55 &1 -PhysicsManager: - m_ObjectHideFlags: 0 - serializedVersion: 3 - m_Gravity: {x: 0, y: -9.81, z: 0} - m_DefaultMaterial: {fileID: 0} - m_BounceThreshold: 2 - m_SleepThreshold: 0.005 - m_DefaultContactOffset: 0.01 - m_DefaultSolverIterations: 6 - m_DefaultSolverVelocityIterations: 1 - m_QueriesHitBackfaces: 0 - m_QueriesHitTriggers: 1 - m_EnableAdaptiveForce: 0 - m_EnablePCM: 1 - m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff - m_AutoSimulation: 1 - m_AutoSyncTransforms: 1 diff --git a/deps/discord-rpc/examples/button-clicker/ProjectSettings/EditorBuildSettings.asset b/deps/discord-rpc/examples/button-clicker/ProjectSettings/EditorBuildSettings.asset deleted file mode 100644 index d8fda84837..0000000000 --- a/deps/discord-rpc/examples/button-clicker/ProjectSettings/EditorBuildSettings.asset +++ /dev/null @@ -1,10 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1045 &1 -EditorBuildSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Scenes: - - enabled: 1 - path: Assets/main.unity - guid: 3b03d21bb25fa494e8694cd6e4b6d769 diff --git a/deps/discord-rpc/examples/button-clicker/ProjectSettings/EditorSettings.asset b/deps/discord-rpc/examples/button-clicker/ProjectSettings/EditorSettings.asset deleted file mode 100644 index c0c814fdf9..0000000000 --- a/deps/discord-rpc/examples/button-clicker/ProjectSettings/EditorSettings.asset +++ /dev/null @@ -1,16 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!159 &1 -EditorSettings: - m_ObjectHideFlags: 0 - serializedVersion: 4 - m_ExternalVersionControlSupport: Visible Meta Files - m_SerializationMode: 2 - m_DefaultBehaviorMode: 1 - m_SpritePackerMode: 4 - m_SpritePackerPaddingPower: 1 - m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd - m_ProjectGenerationRootNamespace: - m_UserGeneratedProjectSuffix: - m_CollabEditorSettings: - inProgressEnabled: 1 diff --git a/deps/discord-rpc/examples/button-clicker/ProjectSettings/GraphicsSettings.asset b/deps/discord-rpc/examples/button-clicker/ProjectSettings/GraphicsSettings.asset deleted file mode 100644 index 74d7b532b0..0000000000 --- a/deps/discord-rpc/examples/button-clicker/ProjectSettings/GraphicsSettings.asset +++ /dev/null @@ -1,61 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!30 &1 -GraphicsSettings: - m_ObjectHideFlags: 0 - serializedVersion: 12 - m_Deferred: - m_Mode: 1 - m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} - m_DeferredReflections: - m_Mode: 1 - m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} - m_ScreenSpaceShadows: - m_Mode: 1 - m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} - m_LegacyDeferred: - m_Mode: 1 - m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} - m_DepthNormals: - m_Mode: 1 - m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} - m_MotionVectors: - m_Mode: 1 - m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} - m_LightHalo: - m_Mode: 1 - m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} - m_LensFlare: - m_Mode: 1 - m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} - m_AlwaysIncludedShaders: - - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} - m_PreloadedShaders: [] - m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, - type: 0} - m_CustomRenderPipeline: {fileID: 0} - m_TransparencySortMode: 0 - m_TransparencySortAxis: {x: 0, y: 0, z: 1} - m_DefaultRenderingPath: 1 - m_DefaultMobileRenderingPath: 1 - m_TierSettings: [] - m_LightmapStripping: 0 - m_FogStripping: 0 - m_InstancingStripping: 0 - m_LightmapKeepPlain: 1 - m_LightmapKeepDirCombined: 1 - m_LightmapKeepDynamicPlain: 1 - m_LightmapKeepDynamicDirCombined: 1 - m_LightmapKeepShadowMask: 1 - m_LightmapKeepSubtractive: 1 - m_FogKeepLinear: 1 - m_FogKeepExp: 1 - m_FogKeepExp2: 1 - m_AlbedoSwatchInfos: [] - m_LightsUseLinearIntensity: 0 - m_LightsUseColorTemperature: 0 diff --git a/deps/discord-rpc/examples/button-clicker/ProjectSettings/InputManager.asset b/deps/discord-rpc/examples/button-clicker/ProjectSettings/InputManager.asset deleted file mode 100644 index 17c8f538e2..0000000000 --- a/deps/discord-rpc/examples/button-clicker/ProjectSettings/InputManager.asset +++ /dev/null @@ -1,295 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!13 &1 -InputManager: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Axes: - - serializedVersion: 3 - m_Name: Horizontal - descriptiveName: - descriptiveNegativeName: - negativeButton: left - positiveButton: right - altNegativeButton: a - altPositiveButton: d - gravity: 3 - dead: 0.001 - sensitivity: 3 - snap: 1 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Vertical - descriptiveName: - descriptiveNegativeName: - negativeButton: down - positiveButton: up - altNegativeButton: s - altPositiveButton: w - gravity: 3 - dead: 0.001 - sensitivity: 3 - snap: 1 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire1 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left ctrl - altNegativeButton: - altPositiveButton: mouse 0 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire2 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left alt - altNegativeButton: - altPositiveButton: mouse 1 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire3 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left shift - altNegativeButton: - altPositiveButton: mouse 2 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Jump - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: space - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse X - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse Y - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 1 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse ScrollWheel - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 2 - joyNum: 0 - - serializedVersion: 3 - m_Name: Horizontal - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0.19 - sensitivity: 1 - snap: 0 - invert: 0 - type: 2 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Vertical - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0.19 - sensitivity: 1 - snap: 0 - invert: 1 - type: 2 - axis: 1 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire1 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 0 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire2 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 1 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire3 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 2 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Jump - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 3 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Submit - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: return - altNegativeButton: - altPositiveButton: joystick button 0 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Submit - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: enter - altNegativeButton: - altPositiveButton: space - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Cancel - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: escape - altNegativeButton: - altPositiveButton: joystick button 1 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 diff --git a/deps/discord-rpc/examples/button-clicker/ProjectSettings/NavMeshAreas.asset b/deps/discord-rpc/examples/button-clicker/ProjectSettings/NavMeshAreas.asset deleted file mode 100644 index 6dd520f63a..0000000000 --- a/deps/discord-rpc/examples/button-clicker/ProjectSettings/NavMeshAreas.asset +++ /dev/null @@ -1,89 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!126 &1 -NavMeshProjectSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - areas: - - name: Walkable - cost: 1 - - name: Not Walkable - cost: 1 - - name: Jump - cost: 2 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - m_LastAgentTypeID: -887442657 - m_Settings: - - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.75 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - m_SettingNames: - - Humanoid diff --git a/deps/discord-rpc/examples/button-clicker/ProjectSettings/NetworkManager.asset b/deps/discord-rpc/examples/button-clicker/ProjectSettings/NetworkManager.asset deleted file mode 100644 index 5dc6a831d9..0000000000 --- a/deps/discord-rpc/examples/button-clicker/ProjectSettings/NetworkManager.asset +++ /dev/null @@ -1,8 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!149 &1 -NetworkManager: - m_ObjectHideFlags: 0 - m_DebugLevel: 0 - m_Sendrate: 15 - m_AssetToPrefab: {} diff --git a/deps/discord-rpc/examples/button-clicker/ProjectSettings/Physics2DSettings.asset b/deps/discord-rpc/examples/button-clicker/ProjectSettings/Physics2DSettings.asset deleted file mode 100644 index 132ee6bc86..0000000000 --- a/deps/discord-rpc/examples/button-clicker/ProjectSettings/Physics2DSettings.asset +++ /dev/null @@ -1,37 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!19 &1 -Physics2DSettings: - m_ObjectHideFlags: 0 - serializedVersion: 3 - m_Gravity: {x: 0, y: -9.81} - m_DefaultMaterial: {fileID: 0} - m_VelocityIterations: 8 - m_PositionIterations: 3 - m_VelocityThreshold: 1 - m_MaxLinearCorrection: 0.2 - m_MaxAngularCorrection: 8 - m_MaxTranslationSpeed: 100 - m_MaxRotationSpeed: 360 - m_BaumgarteScale: 0.2 - m_BaumgarteTimeOfImpactScale: 0.75 - m_TimeToSleep: 0.5 - m_LinearSleepTolerance: 0.01 - m_AngularSleepTolerance: 2 - m_DefaultContactOffset: 0.01 - m_AutoSimulation: 1 - m_QueriesHitTriggers: 1 - m_QueriesStartInColliders: 1 - m_ChangeStopsCallbacks: 0 - m_CallbacksOnDisable: 1 - m_AutoSyncTransforms: 1 - m_AlwaysShowColliders: 0 - m_ShowColliderSleep: 1 - m_ShowColliderContacts: 0 - m_ShowColliderAABB: 0 - m_ContactArrowScale: 0.2 - m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} - m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} - m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} - m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} - m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/deps/discord-rpc/examples/button-clicker/ProjectSettings/ProjectSettings.asset b/deps/discord-rpc/examples/button-clicker/ProjectSettings/ProjectSettings.asset deleted file mode 100644 index f60fe83aa9..0000000000 --- a/deps/discord-rpc/examples/button-clicker/ProjectSettings/ProjectSettings.asset +++ /dev/null @@ -1,610 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!129 &1 -PlayerSettings: - m_ObjectHideFlags: 0 - serializedVersion: 13 - productGUID: 5eccc60d3e382a346a65f512d6b81b84 - AndroidProfiler: 0 - AndroidFilterTouchesWhenObscured: 0 - defaultScreenOrientation: 4 - targetDevice: 2 - useOnDemandResources: 0 - accelerometerFrequency: 60 - companyName: Discord Inc. - productName: button-clicker - defaultCursor: {fileID: 0} - cursorHotspot: {x: 0, y: 0} - m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} - m_ShowUnitySplashScreen: 1 - m_ShowUnitySplashLogo: 1 - m_SplashScreenOverlayOpacity: 1 - m_SplashScreenAnimation: 1 - m_SplashScreenLogoStyle: 1 - m_SplashScreenDrawMode: 0 - m_SplashScreenBackgroundAnimationZoom: 1 - m_SplashScreenLogoAnimationZoom: 1 - m_SplashScreenBackgroundLandscapeAspect: 1 - m_SplashScreenBackgroundPortraitAspect: 1 - m_SplashScreenBackgroundLandscapeUvs: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - m_SplashScreenBackgroundPortraitUvs: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - m_SplashScreenLogos: [] - m_VirtualRealitySplashScreen: {fileID: 0} - m_HolographicTrackingLossScreen: {fileID: 0} - defaultScreenWidth: 1024 - defaultScreenHeight: 768 - defaultScreenWidthWeb: 960 - defaultScreenHeightWeb: 600 - m_StereoRenderingPath: 0 - m_ActiveColorSpace: 0 - m_MTRendering: 1 - m_StackTraceTypes: 010000000100000001000000010000000100000001000000 - iosShowActivityIndicatorOnLoading: -1 - androidShowActivityIndicatorOnLoading: -1 - tizenShowActivityIndicatorOnLoading: -1 - iosAppInBackgroundBehavior: 0 - displayResolutionDialog: 1 - iosAllowHTTPDownload: 1 - allowedAutorotateToPortrait: 1 - allowedAutorotateToPortraitUpsideDown: 1 - allowedAutorotateToLandscapeRight: 1 - allowedAutorotateToLandscapeLeft: 1 - useOSAutorotation: 1 - use32BitDisplayBuffer: 1 - disableDepthAndStencilBuffers: 0 - androidBlitType: 0 - defaultIsFullScreen: 1 - defaultIsNativeResolution: 1 - macRetinaSupport: 1 - runInBackground: 0 - captureSingleScreen: 0 - muteOtherAudioSources: 0 - Prepare IOS For Recording: 0 - Force IOS Speakers When Recording: 0 - submitAnalytics: 1 - usePlayerLog: 1 - bakeCollisionMeshes: 0 - forceSingleInstance: 0 - resizableWindow: 0 - useMacAppStoreValidation: 0 - macAppStoreCategory: public.app-category.games - gpuSkinning: 0 - graphicsJobs: 0 - xboxPIXTextureCapture: 0 - xboxEnableAvatar: 0 - xboxEnableKinect: 0 - xboxEnableKinectAutoTracking: 0 - xboxEnableFitness: 0 - visibleInBackground: 1 - allowFullscreenSwitch: 1 - graphicsJobMode: 0 - macFullscreenMode: 2 - d3d9FullscreenMode: 1 - d3d11FullscreenMode: 1 - xboxSpeechDB: 0 - xboxEnableHeadOrientation: 0 - xboxEnableGuest: 0 - xboxEnablePIXSampling: 0 - metalFramebufferOnly: 0 - n3dsDisableStereoscopicView: 0 - n3dsEnableSharedListOpt: 1 - n3dsEnableVSync: 0 - ignoreAlphaClear: 0 - xboxOneResolution: 0 - xboxOneMonoLoggingLevel: 0 - xboxOneLoggingLevel: 1 - xboxOneDisableEsram: 0 - xboxOnePresentImmediateThreshold: 0 - videoMemoryForVertexBuffers: 0 - psp2PowerMode: 0 - psp2AcquireBGM: 1 - wiiUTVResolution: 0 - wiiUGamePadMSAA: 1 - wiiUSupportsNunchuk: 0 - wiiUSupportsClassicController: 0 - wiiUSupportsBalanceBoard: 0 - wiiUSupportsMotionPlus: 0 - wiiUSupportsProController: 0 - wiiUAllowScreenCapture: 1 - wiiUControllerCount: 0 - m_SupportedAspectRatios: - 4:3: 1 - 5:4: 1 - 16:10: 1 - 16:9: 1 - Others: 1 - bundleVersion: 1.0 - preloadedAssets: [] - metroInputSource: 0 - m_HolographicPauseOnTrackingLoss: 1 - xboxOneDisableKinectGpuReservation: 0 - xboxOneEnable7thCore: 0 - vrSettings: - cardboard: - depthFormat: 0 - enableTransitionView: 0 - daydream: - depthFormat: 0 - useSustainedPerformanceMode: 0 - enableVideoLayer: 0 - useProtectedVideoMemory: 0 - hololens: - depthFormat: 1 - protectGraphicsMemory: 0 - useHDRDisplay: 0 - m_ColorGamuts: 00000000 - targetPixelDensity: 0 - resolutionScalingMode: 0 - androidSupportedAspectRatio: 1 - androidMaxAspectRatio: 2.1 - applicationIdentifier: {} - buildNumber: {} - AndroidBundleVersionCode: 1 - AndroidMinSdkVersion: 16 - AndroidTargetSdkVersion: 0 - AndroidPreferredInstallLocation: 1 - aotOptions: - stripEngineCode: 1 - iPhoneStrippingLevel: 0 - iPhoneScriptCallOptimization: 0 - ForceInternetPermission: 0 - ForceSDCardPermission: 0 - CreateWallpaper: 0 - APKExpansionFiles: 0 - keepLoadedShadersAlive: 0 - StripUnusedMeshComponents: 0 - VertexChannelCompressionMask: - serializedVersion: 2 - m_Bits: 238 - iPhoneSdkVersion: 988 - iOSTargetOSVersionString: 7.0 - tvOSSdkVersion: 0 - tvOSRequireExtendedGameController: 0 - tvOSTargetOSVersionString: 9.0 - uIPrerenderedIcon: 0 - uIRequiresPersistentWiFi: 0 - uIRequiresFullScreen: 1 - uIStatusBarHidden: 1 - uIExitOnSuspend: 0 - uIStatusBarStyle: 0 - iPhoneSplashScreen: {fileID: 0} - iPhoneHighResSplashScreen: {fileID: 0} - iPhoneTallHighResSplashScreen: {fileID: 0} - iPhone47inSplashScreen: {fileID: 0} - iPhone55inPortraitSplashScreen: {fileID: 0} - iPhone55inLandscapeSplashScreen: {fileID: 0} - iPadPortraitSplashScreen: {fileID: 0} - iPadHighResPortraitSplashScreen: {fileID: 0} - iPadLandscapeSplashScreen: {fileID: 0} - iPadHighResLandscapeSplashScreen: {fileID: 0} - appleTVSplashScreen: {fileID: 0} - tvOSSmallIconLayers: [] - tvOSLargeIconLayers: [] - tvOSTopShelfImageLayers: [] - tvOSTopShelfImageWideLayers: [] - iOSLaunchScreenType: 0 - iOSLaunchScreenPortrait: {fileID: 0} - iOSLaunchScreenLandscape: {fileID: 0} - iOSLaunchScreenBackgroundColor: - serializedVersion: 2 - rgba: 0 - iOSLaunchScreenFillPct: 100 - iOSLaunchScreenSize: 100 - iOSLaunchScreenCustomXibPath: - iOSLaunchScreeniPadType: 0 - iOSLaunchScreeniPadImage: {fileID: 0} - iOSLaunchScreeniPadBackgroundColor: - serializedVersion: 2 - rgba: 0 - iOSLaunchScreeniPadFillPct: 100 - iOSLaunchScreeniPadSize: 100 - iOSLaunchScreeniPadCustomXibPath: - iOSDeviceRequirements: [] - iOSURLSchemes: [] - iOSBackgroundModes: 0 - iOSMetalForceHardShadows: 0 - metalEditorSupport: 1 - metalAPIValidation: 1 - iOSRenderExtraFrameOnPause: 0 - appleDeveloperTeamID: - iOSManualSigningProvisioningProfileID: - tvOSManualSigningProvisioningProfileID: - appleEnableAutomaticSigning: 0 - AndroidTargetDevice: 0 - AndroidSplashScreenScale: 0 - androidSplashScreen: {fileID: 0} - AndroidKeystoreName: - AndroidKeyaliasName: - AndroidTVCompatibility: 1 - AndroidIsGame: 1 - AndroidEnableTango: 0 - androidEnableBanner: 1 - androidUseLowAccuracyLocation: 0 - m_AndroidBanners: - - width: 320 - height: 180 - banner: {fileID: 0} - androidGamepadSupportLevel: 0 - resolutionDialogBanner: {fileID: 0} - m_BuildTargetIcons: [] - m_BuildTargetBatching: [] - m_BuildTargetGraphicsAPIs: [] - m_BuildTargetVRSettings: [] - m_BuildTargetEnableVuforiaSettings: [] - openGLRequireES31: 0 - openGLRequireES31AEP: 0 - m_TemplateCustomTags: {} - mobileMTRendering: - Android: 1 - iPhone: 1 - tvOS: 1 - wiiUTitleID: 0005000011000000 - wiiUGroupID: 00010000 - wiiUCommonSaveSize: 4096 - wiiUAccountSaveSize: 2048 - wiiUOlvAccessKey: 0 - wiiUTinCode: 0 - wiiUJoinGameId: 0 - wiiUJoinGameModeMask: 0000000000000000 - wiiUCommonBossSize: 0 - wiiUAccountBossSize: 0 - wiiUAddOnUniqueIDs: [] - wiiUMainThreadStackSize: 3072 - wiiULoaderThreadStackSize: 1024 - wiiUSystemHeapSize: 128 - wiiUTVStartupScreen: {fileID: 0} - wiiUGamePadStartupScreen: {fileID: 0} - wiiUDrcBufferDisabled: 0 - wiiUProfilerLibPath: - playModeTestRunnerEnabled: 0 - actionOnDotNetUnhandledException: 1 - enableInternalProfiler: 0 - logObjCUncaughtExceptions: 1 - enableCrashReportAPI: 0 - cameraUsageDescription: - locationUsageDescription: - microphoneUsageDescription: - switchNetLibKey: - switchSocketMemoryPoolSize: 6144 - switchSocketAllocatorPoolSize: 128 - switchSocketConcurrencyLimit: 14 - switchScreenResolutionBehavior: 2 - switchUseCPUProfiler: 0 - switchApplicationID: 0x01004b9000490000 - switchNSODependencies: - switchTitleNames_0: - switchTitleNames_1: - switchTitleNames_2: - switchTitleNames_3: - switchTitleNames_4: - switchTitleNames_5: - switchTitleNames_6: - switchTitleNames_7: - switchTitleNames_8: - switchTitleNames_9: - switchTitleNames_10: - switchTitleNames_11: - switchPublisherNames_0: - switchPublisherNames_1: - switchPublisherNames_2: - switchPublisherNames_3: - switchPublisherNames_4: - switchPublisherNames_5: - switchPublisherNames_6: - switchPublisherNames_7: - switchPublisherNames_8: - switchPublisherNames_9: - switchPublisherNames_10: - switchPublisherNames_11: - switchIcons_0: {fileID: 0} - switchIcons_1: {fileID: 0} - switchIcons_2: {fileID: 0} - switchIcons_3: {fileID: 0} - switchIcons_4: {fileID: 0} - switchIcons_5: {fileID: 0} - switchIcons_6: {fileID: 0} - switchIcons_7: {fileID: 0} - switchIcons_8: {fileID: 0} - switchIcons_9: {fileID: 0} - switchIcons_10: {fileID: 0} - switchIcons_11: {fileID: 0} - switchSmallIcons_0: {fileID: 0} - switchSmallIcons_1: {fileID: 0} - switchSmallIcons_2: {fileID: 0} - switchSmallIcons_3: {fileID: 0} - switchSmallIcons_4: {fileID: 0} - switchSmallIcons_5: {fileID: 0} - switchSmallIcons_6: {fileID: 0} - switchSmallIcons_7: {fileID: 0} - switchSmallIcons_8: {fileID: 0} - switchSmallIcons_9: {fileID: 0} - switchSmallIcons_10: {fileID: 0} - switchSmallIcons_11: {fileID: 0} - switchManualHTML: - switchAccessibleURLs: - switchLegalInformation: - switchMainThreadStackSize: 1048576 - switchPresenceGroupId: 0x01004b9000490000 - switchLogoHandling: 0 - switchReleaseVersion: 0 - switchDisplayVersion: 1.0.0 - switchStartupUserAccount: 0 - switchTouchScreenUsage: 0 - switchSupportedLanguagesMask: 0 - switchLogoType: 0 - switchApplicationErrorCodeCategory: - switchUserAccountSaveDataSize: 0 - switchUserAccountSaveDataJournalSize: 0 - switchApplicationAttribute: 0 - switchCardSpecSize: 4 - switchCardSpecClock: 25 - switchRatingsMask: 0 - switchRatingsInt_0: 0 - switchRatingsInt_1: 0 - switchRatingsInt_2: 0 - switchRatingsInt_3: 0 - switchRatingsInt_4: 0 - switchRatingsInt_5: 0 - switchRatingsInt_6: 0 - switchRatingsInt_7: 0 - switchRatingsInt_8: 0 - switchRatingsInt_9: 0 - switchRatingsInt_10: 0 - switchRatingsInt_11: 0 - switchLocalCommunicationIds_0: 0x01004b9000490000 - switchLocalCommunicationIds_1: - switchLocalCommunicationIds_2: - switchLocalCommunicationIds_3: - switchLocalCommunicationIds_4: - switchLocalCommunicationIds_5: - switchLocalCommunicationIds_6: - switchLocalCommunicationIds_7: - switchParentalControl: 0 - switchAllowsScreenshot: 1 - switchDataLossConfirmation: 0 - switchSupportedNpadStyles: 3 - switchSocketConfigEnabled: 0 - switchTcpInitialSendBufferSize: 32 - switchTcpInitialReceiveBufferSize: 64 - switchTcpAutoSendBufferSizeMax: 256 - switchTcpAutoReceiveBufferSizeMax: 256 - switchUdpSendBufferSize: 9 - switchUdpReceiveBufferSize: 42 - switchSocketBufferEfficiency: 4 - switchSocketInitializeEnabled: 1 - switchNetworkInterfaceManagerInitializeEnabled: 1 - switchPlayerConnectionEnabled: 1 - ps4NPAgeRating: 12 - ps4NPTitleSecret: - ps4NPTrophyPackPath: - ps4ParentalLevel: 11 - ps4ContentID: ED1633-NPXX51362_00-0000000000000000 - ps4Category: 0 - ps4MasterVersion: 01.00 - ps4AppVersion: 01.00 - ps4AppType: 0 - ps4ParamSfxPath: - ps4VideoOutPixelFormat: 0 - ps4VideoOutInitialWidth: 1920 - ps4VideoOutBaseModeInitialWidth: 1920 - ps4VideoOutReprojectionRate: 120 - ps4PronunciationXMLPath: - ps4PronunciationSIGPath: - ps4BackgroundImagePath: - ps4StartupImagePath: - ps4SaveDataImagePath: - ps4SdkOverride: - ps4BGMPath: - ps4ShareFilePath: - ps4ShareOverlayImagePath: - ps4PrivacyGuardImagePath: - ps4NPtitleDatPath: - ps4RemotePlayKeyAssignment: -1 - ps4RemotePlayKeyMappingDir: - ps4PlayTogetherPlayerCount: 0 - ps4EnterButtonAssignment: 1 - ps4ApplicationParam1: 0 - ps4ApplicationParam2: 0 - ps4ApplicationParam3: 0 - ps4ApplicationParam4: 0 - ps4DownloadDataSize: 0 - ps4GarlicHeapSize: 2048 - ps4ProGarlicHeapSize: 2560 - ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ - ps4pnSessions: 1 - ps4pnPresence: 1 - ps4pnFriends: 1 - ps4pnGameCustomData: 1 - playerPrefsSupport: 0 - restrictedAudioUsageRights: 0 - ps4UseResolutionFallback: 0 - ps4ReprojectionSupport: 0 - ps4UseAudio3dBackend: 0 - ps4SocialScreenEnabled: 0 - ps4ScriptOptimizationLevel: 0 - ps4Audio3dVirtualSpeakerCount: 14 - ps4attribCpuUsage: 0 - ps4PatchPkgPath: - ps4PatchLatestPkgPath: - ps4PatchChangeinfoPath: - ps4PatchDayOne: 0 - ps4attribUserManagement: 0 - ps4attribMoveSupport: 0 - ps4attrib3DSupport: 0 - ps4attribShareSupport: 0 - ps4attribExclusiveVR: 0 - ps4disableAutoHideSplash: 0 - ps4videoRecordingFeaturesUsed: 0 - ps4contentSearchFeaturesUsed: 0 - ps4attribEyeToEyeDistanceSettingVR: 0 - ps4IncludedModules: [] - monoEnv: - psp2Splashimage: {fileID: 0} - psp2NPTrophyPackPath: - psp2NPSupportGBMorGJP: 0 - psp2NPAgeRating: 12 - psp2NPTitleDatPath: - psp2NPCommsID: - psp2NPCommunicationsID: - psp2NPCommsPassphrase: - psp2NPCommsSig: - psp2ParamSfxPath: - psp2ManualPath: - psp2LiveAreaGatePath: - psp2LiveAreaBackroundPath: - psp2LiveAreaPath: - psp2LiveAreaTrialPath: - psp2PatchChangeInfoPath: - psp2PatchOriginalPackage: - psp2PackagePassword: F69AzBlax3CF3EDNhm3soLBPh71Yexui - psp2KeystoneFile: - psp2MemoryExpansionMode: 0 - psp2DRMType: 0 - psp2StorageType: 0 - psp2MediaCapacity: 0 - psp2DLCConfigPath: - psp2ThumbnailPath: - psp2BackgroundPath: - psp2SoundPath: - psp2TrophyCommId: - psp2TrophyPackagePath: - psp2PackagedResourcesPath: - psp2SaveDataQuota: 10240 - psp2ParentalLevel: 1 - psp2ShortTitle: Not Set - psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF - psp2Category: 0 - psp2MasterVersion: 01.00 - psp2AppVersion: 01.00 - psp2TVBootMode: 0 - psp2EnterButtonAssignment: 2 - psp2TVDisableEmu: 0 - psp2AllowTwitterDialog: 1 - psp2Upgradable: 0 - psp2HealthWarning: 0 - psp2UseLibLocation: 0 - psp2InfoBarOnStartup: 0 - psp2InfoBarColor: 0 - psp2ScriptOptimizationLevel: 0 - psmSplashimage: {fileID: 0} - splashScreenBackgroundSourceLandscape: {fileID: 0} - splashScreenBackgroundSourcePortrait: {fileID: 0} - spritePackerPolicy: - webGLMemorySize: 256 - webGLExceptionSupport: 1 - webGLNameFilesAsHashes: 0 - webGLDataCaching: 0 - webGLDebugSymbols: 0 - webGLEmscriptenArgs: - webGLModulesDirectory: - webGLTemplate: APPLICATION:Default - webGLAnalyzeBuildSize: 0 - webGLUseEmbeddedResources: 0 - webGLUseWasm: 0 - webGLCompressionFormat: 1 - scriptingDefineSymbols: {} - platformArchitecture: {} - scriptingBackend: {} - incrementalIl2cppBuild: {} - additionalIl2CppArgs: - scriptingRuntimeVersion: 0 - apiCompatibilityLevelPerPlatform: {} - m_RenderingPath: 1 - m_MobileRenderingPath: 1 - metroPackageName: button-clicker - metroPackageVersion: - metroCertificatePath: - metroCertificatePassword: - metroCertificateSubject: - metroCertificateIssuer: - metroCertificateNotAfter: 0000000000000000 - metroApplicationDescription: button-clicker - wsaImages: {} - metroTileShortName: - metroCommandLineArgsFile: - metroTileShowName: 0 - metroMediumTileShowName: 0 - metroLargeTileShowName: 0 - metroWideTileShowName: 0 - metroDefaultTileSize: 1 - metroTileForegroundText: 2 - metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} - metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, - a: 1} - metroSplashScreenUseBackgroundColor: 0 - platformCapabilities: {} - metroFTAName: - metroFTAFileTypes: [] - metroProtocolName: - metroCompilationOverrides: 1 - tizenProductDescription: - tizenProductURL: - tizenSigningProfileName: - tizenGPSPermissions: 0 - tizenMicrophonePermissions: 0 - tizenDeploymentTarget: - tizenDeploymentTargetType: -1 - tizenMinOSVersion: 1 - n3dsUseExtSaveData: 0 - n3dsCompressStaticMem: 1 - n3dsExtSaveDataNumber: 0x12345 - n3dsStackSize: 131072 - n3dsTargetPlatform: 2 - n3dsRegion: 7 - n3dsMediaSize: 0 - n3dsLogoStyle: 3 - n3dsTitle: GameName - n3dsProductCode: - n3dsApplicationId: 0xFF3FF - stvDeviceAddress: - stvProductDescription: - stvProductAuthor: - stvProductAuthorEmail: - stvProductLink: - stvProductCategory: 0 - XboxOneProductId: - XboxOneUpdateKey: - XboxOneSandboxId: - XboxOneContentId: - XboxOneTitleId: - XboxOneSCId: - XboxOneGameOsOverridePath: - XboxOnePackagingOverridePath: - XboxOneAppManifestOverridePath: - XboxOnePackageEncryption: 0 - XboxOnePackageUpdateGranularity: 2 - XboxOneDescription: - XboxOneLanguage: - - enus - XboxOneCapability: [] - XboxOneGameRating: {} - XboxOneIsContentPackage: 0 - XboxOneEnableGPUVariability: 0 - XboxOneSockets: {} - XboxOneSplashScreen: {fileID: 0} - XboxOneAllowedProductIds: [] - XboxOnePersistentLocalStorageSize: 0 - xboxOneScriptCompiler: 0 - vrEditorSettings: - daydream: - daydreamIconForeground: {fileID: 0} - daydreamIconBackground: {fileID: 0} - cloudServicesEnabled: {} - facebookSdkVersion: 7.9.4 - apiCompatibilityLevel: 2 - cloudProjectId: - projectName: - organizationId: - cloudEnabled: 0 - enableNativePlatformBackendsForNewInputSystem: 0 - disableOldInputManagerSupport: 0 diff --git a/deps/discord-rpc/examples/button-clicker/ProjectSettings/ProjectVersion.txt b/deps/discord-rpc/examples/button-clicker/ProjectSettings/ProjectVersion.txt deleted file mode 100644 index 7a6fffb8be..0000000000 --- a/deps/discord-rpc/examples/button-clicker/ProjectSettings/ProjectVersion.txt +++ /dev/null @@ -1 +0,0 @@ -m_EditorVersion: 2017.2.0f3 diff --git a/deps/discord-rpc/examples/button-clicker/ProjectSettings/QualitySettings.asset b/deps/discord-rpc/examples/button-clicker/ProjectSettings/QualitySettings.asset deleted file mode 100644 index 86c047f26e..0000000000 --- a/deps/discord-rpc/examples/button-clicker/ProjectSettings/QualitySettings.asset +++ /dev/null @@ -1,193 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!47 &1 -QualitySettings: - m_ObjectHideFlags: 0 - serializedVersion: 5 - m_CurrentQuality: 5 - m_QualitySettings: - - serializedVersion: 2 - name: Very Low - pixelLightCount: 0 - shadows: 0 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 15 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - blendWeights: 1 - textureQuality: 1 - anisotropicTextures: 0 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 0 - lodBias: 0.3 - maximumLODLevel: 0 - particleRaycastBudget: 4 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Low - pixelLightCount: 0 - shadows: 0 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 20 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - blendWeights: 2 - textureQuality: 0 - anisotropicTextures: 0 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 0 - lodBias: 0.4 - maximumLODLevel: 0 - particleRaycastBudget: 16 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Medium - pixelLightCount: 1 - shadows: 1 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 20 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - blendWeights: 2 - textureQuality: 0 - anisotropicTextures: 1 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 1 - lodBias: 0.7 - maximumLODLevel: 0 - particleRaycastBudget: 64 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: High - pixelLightCount: 2 - shadows: 2 - shadowResolution: 1 - shadowProjection: 1 - shadowCascades: 2 - shadowDistance: 40 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - blendWeights: 2 - textureQuality: 0 - anisotropicTextures: 1 - antiAliasing: 0 - softParticles: 0 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 1 - maximumLODLevel: 0 - particleRaycastBudget: 256 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Very High - pixelLightCount: 3 - shadows: 2 - shadowResolution: 2 - shadowProjection: 1 - shadowCascades: 2 - shadowDistance: 70 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - blendWeights: 4 - textureQuality: 0 - anisotropicTextures: 2 - antiAliasing: 2 - softParticles: 1 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 1.5 - maximumLODLevel: 0 - particleRaycastBudget: 1024 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Ultra - pixelLightCount: 4 - shadows: 2 - shadowResolution: 2 - shadowProjection: 1 - shadowCascades: 4 - shadowDistance: 150 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - blendWeights: 4 - textureQuality: 0 - anisotropicTextures: 2 - antiAliasing: 2 - softParticles: 1 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 2 - maximumLODLevel: 0 - particleRaycastBudget: 4096 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - m_PerPlatformDefaultQuality: - Android: 2 - Nintendo 3DS: 5 - Nintendo Switch: 5 - PS4: 5 - PSM: 5 - PSP2: 2 - Samsung TV: 2 - Standalone: 5 - Tizen: 2 - Web: 5 - WebGL: 3 - WiiU: 5 - Windows Store Apps: 5 - XboxOne: 5 - iPhone: 2 - tvOS: 2 diff --git a/deps/discord-rpc/examples/button-clicker/ProjectSettings/TagManager.asset b/deps/discord-rpc/examples/button-clicker/ProjectSettings/TagManager.asset deleted file mode 100644 index 1c92a7840e..0000000000 --- a/deps/discord-rpc/examples/button-clicker/ProjectSettings/TagManager.asset +++ /dev/null @@ -1,43 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!78 &1 -TagManager: - serializedVersion: 2 - tags: [] - layers: - - Default - - TransparentFX - - Ignore Raycast - - - - Water - - UI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - m_SortingLayers: - - name: Default - uniqueID: 0 - locked: 0 diff --git a/deps/discord-rpc/examples/button-clicker/ProjectSettings/TimeManager.asset b/deps/discord-rpc/examples/button-clicker/ProjectSettings/TimeManager.asset deleted file mode 100644 index 558a017e1f..0000000000 --- a/deps/discord-rpc/examples/button-clicker/ProjectSettings/TimeManager.asset +++ /dev/null @@ -1,9 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!5 &1 -TimeManager: - m_ObjectHideFlags: 0 - Fixed Timestep: 0.02 - Maximum Allowed Timestep: 0.33333334 - m_TimeScale: 1 - Maximum Particle Timestep: 0.03 diff --git a/deps/discord-rpc/examples/button-clicker/ProjectSettings/UnityConnectSettings.asset b/deps/discord-rpc/examples/button-clicker/ProjectSettings/UnityConnectSettings.asset deleted file mode 100644 index 1cc5485b8a..0000000000 --- a/deps/discord-rpc/examples/button-clicker/ProjectSettings/UnityConnectSettings.asset +++ /dev/null @@ -1,34 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!310 &1 -UnityConnectSettings: - m_ObjectHideFlags: 0 - m_Enabled: 0 - m_TestMode: 0 - m_TestEventUrl: - m_TestConfigUrl: - m_TestInitMode: 0 - CrashReportingSettings: - m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes - m_Enabled: 0 - m_CaptureEditorExceptions: 1 - UnityPurchasingSettings: - m_Enabled: 0 - m_TestMode: 0 - UnityAnalyticsSettings: - m_Enabled: 0 - m_InitializeOnStartup: 1 - m_TestMode: 0 - m_TestEventUrl: - m_TestConfigUrl: - UnityAdsSettings: - m_Enabled: 0 - m_InitializeOnStartup: 1 - m_TestMode: 0 - m_EnabledPlatforms: 4294967295 - m_IosGameId: - m_AndroidGameId: - m_GameIds: {} - m_GameId: - PerformanceReportingSettings: - m_Enabled: 0 diff --git a/deps/discord-rpc/examples/button-clicker/UnityPackageManager/manifest.json b/deps/discord-rpc/examples/button-clicker/UnityPackageManager/manifest.json deleted file mode 100644 index 526aca6057..0000000000 --- a/deps/discord-rpc/examples/button-clicker/UnityPackageManager/manifest.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "dependencies": { - } -} diff --git a/deps/discord-rpc/examples/send-presence/CMakeLists.txt b/deps/discord-rpc/examples/send-presence/CMakeLists.txt deleted file mode 100644 index 8a67d472ee..0000000000 --- a/deps/discord-rpc/examples/send-presence/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -include_directories(${PROJECT_SOURCE_DIR}/include) -add_executable( - send-presence - MACOSX_BUNDLE - send-presence.c -) -set_target_properties(send-presence PROPERTIES - MACOSX_BUNDLE_BUNDLE_NAME "Send Presence" - MACOSX_BUNDLE_GUI_IDENTIFIER "com.discordapp.examples.send-presence" -) -target_link_libraries(send-presence discord-rpc) - -install( - TARGETS send-presence - RUNTIME - DESTINATION "bin" - CONFIGURATIONS Release - BUNDLE - DESTINATION "bin" - CONFIGURATIONS Release -) \ No newline at end of file diff --git a/deps/discord-rpc/examples/send-presence/send-presence.c b/deps/discord-rpc/examples/send-presence/send-presence.c deleted file mode 100644 index 5449cf86fc..0000000000 --- a/deps/discord-rpc/examples/send-presence/send-presence.c +++ /dev/null @@ -1,205 +0,0 @@ -/* - This is a simple example in C of using the rich presence API asynchronously. -*/ - -#define _CRT_SECURE_NO_WARNINGS /* thanks Microsoft */ - -#include -#include -#include -#include - -#include "discord_rpc.h" - -static const char* APPLICATION_ID = "345229890980937739"; -static int FrustrationLevel = 0; -static int64_t StartTime; -static int SendPresence = 1; - -static int prompt(char* line, size_t size) -{ - int res; - char* nl; - printf("\n> "); - fflush(stdout); - res = fgets(line, (int)size, stdin) ? 1 : 0; - line[size - 1] = 0; - nl = strchr(line, '\n'); - if (nl) { - *nl = 0; - } - return res; -} - -static void updateDiscordPresence() -{ - if (SendPresence) { - char buffer[256]; - DiscordRichPresence discordPresence; - memset(&discordPresence, 0, sizeof(discordPresence)); - discordPresence.state = "West of House"; - sprintf(buffer, "Frustration level: %d", FrustrationLevel); - discordPresence.details = buffer; - discordPresence.startTimestamp = StartTime; - discordPresence.endTimestamp = time(0) + 5 * 60; - discordPresence.largeImageKey = "canary-large"; - discordPresence.smallImageKey = "ptb-small"; - discordPresence.partyId = "party1234"; - discordPresence.partySize = 1; - discordPresence.partyMax = 6; - discordPresence.matchSecret = "xyzzy"; - discordPresence.joinSecret = "join"; - discordPresence.spectateSecret = "look"; - discordPresence.instance = 0; - Discord_UpdatePresence(&discordPresence); - } - else { - Discord_ClearPresence(); - } -} - -static void handleDiscordReady(const DiscordUser* connectedUser) -{ - printf("\nDiscord: connected to user %s#%s - %s\n", - connectedUser->username, - connectedUser->discriminator, - connectedUser->userId); -} - -static void handleDiscordDisconnected(int errcode, const char* message) -{ - printf("\nDiscord: disconnected (%d: %s)\n", errcode, message); -} - -static void handleDiscordError(int errcode, const char* message) -{ - printf("\nDiscord: error (%d: %s)\n", errcode, message); -} - -static void handleDiscordJoin(const char* secret) -{ - printf("\nDiscord: join (%s)\n", secret); -} - -static void handleDiscordSpectate(const char* secret) -{ - printf("\nDiscord: spectate (%s)\n", secret); -} - -static void handleDiscordJoinRequest(const DiscordUser* request) -{ - int response = -1; - char yn[4]; - printf("\nDiscord: join request from %s#%s - %s\n", - request->username, - request->discriminator, - request->userId); - do { - printf("Accept? (y/n)"); - if (!prompt(yn, sizeof(yn))) { - break; - } - - if (!yn[0]) { - continue; - } - - if (yn[0] == 'y') { - response = DISCORD_REPLY_YES; - break; - } - - if (yn[0] == 'n') { - response = DISCORD_REPLY_NO; - break; - } - } while (1); - if (response != -1) { - Discord_Respond(request->userId, response); - } -} - -static void discordInit() -{ - DiscordEventHandlers handlers; - memset(&handlers, 0, sizeof(handlers)); - handlers.ready = handleDiscordReady; - handlers.disconnected = handleDiscordDisconnected; - handlers.errored = handleDiscordError; - handlers.joinGame = handleDiscordJoin; - handlers.spectateGame = handleDiscordSpectate; - handlers.joinRequest = handleDiscordJoinRequest; - Discord_Initialize(APPLICATION_ID, &handlers, 1, NULL); -} - -static void gameLoop() -{ - char line[512]; - char* space; - - StartTime = time(0); - - printf("You are standing in an open field west of a white house.\n"); - while (prompt(line, sizeof(line))) { - if (line[0]) { - if (line[0] == 'q') { - break; - } - - if (line[0] == 't') { - printf("Shutting off Discord.\n"); - Discord_Shutdown(); - continue; - } - - if (line[0] == 'c') { - if (SendPresence) { - printf("Clearing presence information.\n"); - SendPresence = 0; - } - else { - printf("Restoring presence information.\n"); - SendPresence = 1; - } - updateDiscordPresence(); - continue; - } - - if (line[0] == 'y') { - printf("Reinit Discord.\n"); - discordInit(); - continue; - } - - if (time(NULL) & 1) { - printf("I don't understand that.\n"); - } - else { - space = strchr(line, ' '); - if (space) { - *space = 0; - } - printf("I don't know the word \"%s\".\n", line); - } - - ++FrustrationLevel; - - updateDiscordPresence(); - } - -#ifdef DISCORD_DISABLE_IO_THREAD - Discord_UpdateConnection(); -#endif - Discord_RunCallbacks(); - } -} - -int main(int argc, char* argv[]) -{ - discordInit(); - - gameLoop(); - - Discord_Shutdown(); - return 0; -} diff --git a/deps/discord-rpc/examples/unrealstatus/.gitignore b/deps/discord-rpc/examples/unrealstatus/.gitignore deleted file mode 100644 index bd472d50ae..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/.gitignore +++ /dev/null @@ -1,78 +0,0 @@ -# Visual Studio 2015 user specific files -.vs/ - -# Visual Studio 2015 database file -*.VC.db - -# Compiled Object files -*.slo -*.lo -*.o -*.obj - -# Precompiled Headers -*.gch -*.pch - -# Compiled Dynamic libraries -*.so -*.dylib -*.dll - -# Fortran module files -*.mod - -# Compiled Static libraries -*.lai -*.la -*.a -*.lib - -# Executables -*.exe -*.out -*.app -*.ipa - -# These project files can be generated by the engine -*.xcodeproj -*.xcworkspace -*.sln -*.suo -*.opensdf -*.sdf -*.VC.db -*.VC.opendb - -# Precompiled Assets -SourceArt/**/*.png -SourceArt/**/*.tga - -# Binary Files -Binaries/ - -# Builds -Build/* - -# Whitelist PakBlacklist-.txt files -!Build/*/ -Build/*/** -!Build/*/PakBlacklist*.txt - -# Don't ignore icon files in Build -!Build/**/*.ico - -# Built data for maps -*_BuiltData.uasset - -# Configuration files generated by the Editor -Saved/* - -# Compiled source files for the engine to use -Intermediate/ - -# Cache files for the editor to use -DerivedDataCache/ - -# Library headers must be copied automatically by the build script (build.py unreal) -Plugins/DiscordRpc/Source/ThirdParty/DiscordRpcLibrary/Include diff --git a/deps/discord-rpc/examples/unrealstatus/Config/DefaultEditor.ini b/deps/discord-rpc/examples/unrealstatus/Config/DefaultEditor.ini deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/deps/discord-rpc/examples/unrealstatus/Config/DefaultEngine.ini b/deps/discord-rpc/examples/unrealstatus/Config/DefaultEngine.ini deleted file mode 100644 index 84c38f3531..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/Config/DefaultEngine.ini +++ /dev/null @@ -1,54 +0,0 @@ -[URL] - -[/Script/HardwareTargeting.HardwareTargetingSettings] -TargetedHardwareClass=Desktop -AppliedTargetedHardwareClass=Desktop -DefaultGraphicsPerformance=Maximum -AppliedDefaultGraphicsPerformance=Maximum - -[/Script/Engine.EndUserSettings] -bSendAnonymousUsageDataToEpic=False - -[/Script/Engine.PhysicsSettings] -DefaultGravityZ=-980.000000 -DefaultTerminalVelocity=4000.000000 -DefaultFluidFriction=0.300000 -SimulateScratchMemorySize=262144 -RagdollAggregateThreshold=4 -TriangleMeshTriangleMinAreaThreshold=5.000000 -bEnableAsyncScene=False -bEnableShapeSharing=False -bEnablePCM=False -bEnableStabilization=False -bWarnMissingLocks=True -bEnable2DPhysics=False -LockedAxis=Invalid -DefaultDegreesOfFreedom=Full3D -BounceThresholdVelocity=200.000000 -FrictionCombineMode=Average -RestitutionCombineMode=Average -MaxAngularVelocity=3600.000000 -MaxDepenetrationVelocity=0.000000 -ContactOffsetMultiplier=0.010000 -MinContactOffset=0.000100 -MaxContactOffset=1.000000 -bSimulateSkeletalMeshOnDedicatedServer=True -DefaultShapeComplexity=CTF_UseSimpleAndComplex -bDefaultHasComplexCollision=True -bSuppressFaceRemapTable=False -bSupportUVFromHitResults=False -bDisableActiveActors=False -bDisableCCD=False -MaxPhysicsDeltaTime=0.033333 -bSubstepping=False -bSubsteppingAsync=False -MaxSubstepDeltaTime=0.016667 -MaxSubsteps=6 -SyncSceneSmoothingFactor=0.000000 -AsyncSceneSmoothingFactor=0.990000 -InitialAverageFrameRate=0.016667 - -[/Script/EngineSettings.GameMapsSettings] -EditorStartupMap=/Game/ShowTheUILevel.ShowTheUILevel -GameDefaultMap=/Game/ShowTheUILevel.ShowTheUILevel - diff --git a/deps/discord-rpc/examples/unrealstatus/Config/DefaultGame.ini b/deps/discord-rpc/examples/unrealstatus/Config/DefaultGame.ini deleted file mode 100644 index 7b5e2dc2f6..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/Config/DefaultGame.ini +++ /dev/null @@ -1,7 +0,0 @@ -[/Script/EngineSettings.GeneralProjectSettings] -ProjectID=E5977A24492699DF20B8ADBF736AF6C6 -ProjectName=Discord RPC Example -CompanyName=Discord Inc. -Homepage="https://discordapp.com/" -CopyrightNotice= - diff --git a/deps/discord-rpc/examples/unrealstatus/Content/MainScreenBP.uasset b/deps/discord-rpc/examples/unrealstatus/Content/MainScreenBP.uasset deleted file mode 100644 index e903b53830516d653b92961bd231de061b13a941..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50332 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 K-+%7>YyKBy7s4?B diff --git a/deps/discord-rpc/examples/unrealstatus/Content/MousePlayerControllerBP.uasset b/deps/discord-rpc/examples/unrealstatus/Content/MousePlayerControllerBP.uasset deleted file mode 100644 index 0aaf50ba76c5e797c1dc13c21ac4f5fb024152b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16981 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 S;l^pn?RK!?0~as4@&5rBF)zpf diff --git a/deps/discord-rpc/examples/unrealstatus/Content/ShowTheUILevel.umap b/deps/discord-rpc/examples/unrealstatus/Content/ShowTheUILevel.umap deleted file mode 100644 index bc0e5b7c48b63147cfe9504cc3781c0afdb048f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 806708 zcmeEP2Yggj)<1)Yup(dq7DWkIQA!8_La;z80RoXEh$w`YnU`c>GH;jy1W{BJ3y2MS zS;4+`L9usit76-=_uh8x6@B0DfA2l>-pst2H;}~jb9wwoGPj+3&pG$Bd+wVDm+pV* zPo`o({+Nx|ubJ@c$iEQL=Yf6Zo<8xhJzjZ#`^&f6RMf>oM13l|7KbWo=J_x3pY*}a zXS}sN5q;5g^ZTC^t@?KRSBI?`cX!#4-b55!>Y;6kXtEL1iKr75bRfFkLj+*?x#LQ5 z%ZiHf^NU9f8&+D7KfGjgLH_7*xkaN#6cvpeC6`G=tB7c61<@r$bXWn=QIv&)@kg?Q^)M**sfAEtI~o&f3UHxIAFwl zkvv-S&A%Q#z}CJ}3)Se&p@0_EBSWhz>-a-mr536y3m8V2V&`A;BM>#TTx-^cR%-rW zwKuHm!J;Z!yGNH_dRbLQETW@PrQy?ys%X*$4=?H&udQw}7SuH9wH1@}`Fel`cYCe_ zSYc?jH|!5ZhZY55dMNAHVMWur0?m*ZcKg zbc)v-h(-KHu-FJjqFOLYzwGj_Rec>A)aVPNv9Mn4U!>E-Y4w}BpiL;G2YodLEjato zwU~w$3I+ULE$TOd6+XIqLV=uIIIOi)g^iFNj!~h%qh_ zF}!{;C%WO}5jkS$XtNOk$NRlyMkD<+$a~&j(KMmBI1YN}M-Ti&AkDcxm&|wGTmS($ zE*jOmO;uVL6CPq-^F9i-Sk#!RH~J${JxsB;mmRqs3g>H4EllV4K6M+Ax`_Hr{QDH} ze!ZY>X;7;V=*31L;0JYR*vZ#TfRrrKeAS__KdRI1UG{ne%dQ_62p9{-`Q~U|J?L$r z=Q@<^iY3bO5>YX>;{ydN`^t1omr;N;g zAQg&@a9H<7Crv5At`1P)3}1t(T^mtKBk%89B+wH}?O1!DFd)1H0*y}i+6lHRC!TX@aB;(!*3R7A$bqD@BFAJwA% z`8q`}j%fnVvhieH_th9xv2deaJy#D*)f*yo`VB{p0ZNM|l};|Hn-bFI#dKQO@bdM7 ztpj?{2Zo@Zf9S9VBgN%+aah-)x`n3*4JkRgGj?mdN#fjS;6cJFo~B)=@LYHEr2y%8aremJ}PZGycj^{5sI_`Tq{m&%tsA%>Z( zN5}bmVLcLo44@GYAJhT~SwGnbH){bjJvHyrTLk4M8__Z&TpSRhJY21Z=j&nW+5hHs z0@H@Cr9wz`uTEp%zvgKe0QFOXfjBXX12G7tNSP6yW&~o*dW62c@}q6B-Rlh_Kts0o zeJV#X0&)4>qvOq|3RapD(!Bm?3nuj4Ip=p2bB~ur=A!(dA71%Zpn%Z^#uGcU$MWb;0XLtEr3|8fzZ$zsMe=s^OIztZ|bkmYgPZCqA zg2t~gCK-)%%Ch5*6LL_MNh5>mC+s;}ppMs55h;#EqDHfSk?y0Wk6!hN?O9cGcvWeg zFfF82K*w&pPVAPVs%cu-56YD25n*dUye{dvPglW{@mi1;#4Zg+!!7juxuIi0#G$w)M%#FCE_Dwc{Ix)4wI0yD zQNe?~*Y>_vFl@CRXec&Q>fc#>3#@>8m|_ri>t6r%ATh&ge{(3{Z)g!Z;EG8X zzbN~Lbm)LEroCt7E@Y?`chN zU~NQK#!Zo5ShuwLi}P<4o252l(`jW!xJaAp4>rcF>hs?_v_@=}mZ(mjzI*xu0{1OZ zotcY1oILme==Wl}aoWcHAWw_6Kmfa-E@_!{Q}t*p928=hUi{CA&+ch&TxN`Sfy(nN;ukN%rJ~*njb#s4lsGK)?8&o{6bKyFYa}sDw}FR zdm2F+@b;sA2!~>=xi;j3wj+y7rn$B>|21=-#h09SPsQgCYRI+zkl5ic>~4T zj94&ARkh>phn+3CfV$mt#gUMK;-lXPR_f6v!$&7A2-ji*7su*#THkkaomf_^UT4|) zO5>dS#e9X1VC^MvtX;q2D{So&x~|jw9x(DC?kDOkw8Q~%4PNs`=<=2OKh)3OfGq@{a$=RMdETqv!tjZYGtnPu)}vA?Px9A?wQvjF ze&O8noEizkD&A)!ovzHQ>l!jqO1?dw?@!@g9#Bp>v6^xNUsy*@plH)>Ixe)#3W(@_9FO%;rvDuKxY zW;xna<6lj$m_UgeX;u|HNO9z3CeR@>$2O_lHqibFk zWBD5zVsR}hjJUe-f4@!a0p?IzQW_p2c%DnNKu!QITaG588>@f3=|QnTt6uW-IZcON zB3K})!V-#))ec-DwwH|D(9=0jt%crDpNoxPQ1?c4UtJv|soLKd)DX|0@V6WH-PdX> zx@2hH?}WTYv413}35GxDG^+RJJ`47-Mn$u!`n;GPi8{3&bI-!-VD_m&r~183Rbf3M zhbu*{3ox}(%YA$4s}oEJ zuG0AK5`L7i!(JP}S*3BBB?;m#Uq`zP&(NT-P}r2Z2vdb)Lgp#My!&OopFsRlpA7YN zG}g@&Q;?sl{6R5=w-%gH3ieXP)!rt(S*x3vM|V7U{tjSbMCEi}iQ$bQ)KC#@FzD{O z9=~7%$to2tEV^BL8%UB-JjC20bm8IsL|mz~H0Xo$nyPCNBS`%&>+w9C+0taAv?{E7 zWnkyd2Xg)a3nP7#!ouoR5+qy)!Lvw z8~4EQTverowPro4hwWi8@3ny%I7Oupnv*4@O8ou4{kDk(3%>SVU)D zTG#lHVAJHjg@sT%LAs^*5#iE{1_={hHukk|uqRV$3JXgRpf*C_DmdRXs^Nu?#kPTG zDBM`OY5Mki!VW17#+qr`!zUUNA+hGTlt1*POU6Q;>fx{vE{66wZ18_h5y(JEC87n5 zI)&c&>I5_^MWNt;=T9)D4e^1>0Ff_6HjUQ16;=e}-m^R~fOeS1&^VBT5S{?>1O$p!s?*nj<&u zhd=eZN#F!!vS{X&9=VTEWGS_)*SvEbP^B-_y|nn#O}k?6<3lW}lmEQ;{|;4ODnHlO z>)}SI>m;jzWq0v6^1Yw=gk*whoGNVe)Od%CF}Gf#?yE$ckJ2D{P0&7nDG-S|&2 zRKTd$EU`cx8*f_)N|YN0hnhA0g+?%ypo<8mtvUW5^Fajhp}6YjCeX7y7LDrR>X7Eu zY3YLSZ1Bc-E$kZ?Yz*i%O<_IKWCVP4%`^Yp2Xh_o_vy+%@#_)lHSyyIz%t|gdRPm4 zoBUoaAVg6#7NTJV-)sv(YOhp526fy(ks)vF4Qh-x!u~}@P&qJ@&wHaUR>`FeS|DIF zG|=wGOg{)Q{?IyMWHf7`T5coW@o7D0=5F4QMM5 z9CV*BdS>o$Zw+W)5%lQ`Y4+;#UzeW{#aOy@_LabEMbIDhYXKaieD>vwH)3)X!9oOastvQ3yWqD(LDw5}&;R}qZr!3cut z#>P%-Wpf!rqhn$fe*yg}f)*EF`NGHva%$38t})6CZ!AJxiW|J3Yehs^6mi>%-g(g2 zNsJrSn}y}@Tlp)()tzG*KXi!J?O|X6W!1VjtVijaXy7IcIWZ4Xw{D!z$3_}mS~zBi ztx817s)hQeU4J?71+cd2#SXggr++x_il@LzTo=%_aD2?me|V%|kgd{aZjQ+)c3dOQ zM<7TGw@e8k%x{FL_o79|A$G$9ijXvqST`jW4aK7Tkp|rS-d!;LvS~bw`rKSul5Oie zdf?p4Kg+iDa9XhZ(G}UY&ZqEeOV(xEdIW8Fbk_v@3zSG+q4EP?USK1e^qqwmr?l9LW;z^QF?vnO%L0s z$WiZdJxU|PXRUIms@9_ver8AEE=<&078qe)go+1GUMDuHLjYm@zlIFA)g{CY*83_} z0T1a-=l3_w`UMg{poJUtie{}*NAP8r-YY(Uda+7jp3n!!cRL55CTWpqqNN|9u6uNN z7J_;bB7wAG**_Ygvc;zeJzr%sh)R)WFlW%2t6)uuPa;SJcdEii7Yv#=JzgO_6B&KD zr`Gry!pIi(i2Ft~dB;`vK+}s#KE4;$S#|xLVq{%vzEzCniSoENMT2r< zlj6#Dh z&+Y*GdrO^n|39nA~3jC-fptzqWxM{*w z`y7x^8#WfURO?YNK!lcl-TNmHi2KGX_MGtU-ylEZ716M+HT#2&Q}uv2_$@LP>JeJq zTki#>Ua2?N>tVrA-%p*lomC{vfffDM-Y$qCTB#g~V?H_hK=7?Bv<%&2Zol&oFo8f5 zXDiUP$M`RmL*QgtPM$*1TFMPQz9ld z?y1ccWL1ZE^!~By&X$AA(>#&NLQ@-ddPyKm9pA>2XL5h2`iF!n&vh-&NT(mqeEc~G z+)96Natw%?(jX*6q{a};Nu&EN{YWseKUA&<AD9 zmwlmQZRirAJAb<_=(>D*k51|k*(S5Y^{C@|4qAAF>@~Vb?9(_?z)n2Ik=!lie z_m?9IS6%nfIZMZO7c&VWT1fZIAJ`F`CqJs-A^r2snX|C3;Ihi7AAL0QuFJ56)X{sK z7auRHzZht;9m&V*F5Yw5sYr&f)!8vTevju%z+|f0UiH)33yy)Dn-Y@84pshOS=g}R z6a%~OA~FFCRbL&|wdM*Roi%boS5SIN3|UZzcKBXovPsh!$8c2cYrarmKGB-)+I&_e z*nranSQJI*o!eh~SYUerG7{yP0o{1zn;(PzRhoA$;vtdplY7FPRG%jqUbtQ&kO}UN z2xoPtXv@jKplTG~{Fe;6LI-S=>ptFVMaDv^3kN;}aT29$hv$}_izUQMWzfHO^<#rT zSS9kteD=Z$aE|;a&))v}#+654+953*ZK?3l;c9iR!_qv`~)jFyJZ3rsQ)?%73w69|2b!cuE)bl#5PYW0lDhm&2Cd{RSv3 zB2#*}#y}KBxc+4b9a7Dj124o>aAq$9K|k;Q_WqzPN+R@Jr1(v-+_2u@Ur5sqTK2dA zfz%A;puYN?IZvQZ!SBK-LH~NFX5FK}P{gWW3s!;YdJ-90P zC6=R#Yy951H1W_)&&V;PRs@#`NA%>Xo`dWa@e|*>?|EY&mO53B=Sy1QT;u+eRsfx0 zJrro6+lJpKk}9U^p~*(n-_U}n5N&tSi)Vphrs|Q95%kf>AMTzlr)4D(Tpk^8D%P8D zobc>6yPgI-PBje6PNZGdYhv>yl;+a%x%I~jC^)G$!gQ+t&X=(v;u$D$fzo|D?PRea z&P}n)j6;q-{SYycSP*`Cz2==8q1wft&jppLwfVXartg%7hKL@e#gBhp5--Ow`nYCs zpj+4Lv?l$N$w=2S$}g0c762 zT%2aeL?N-qPO5+VUQArt^D6Q%vF8aVLrX>UKm*mSIZeb#Z1GZIaNS#Q*3n`@dQ@m8 zDDS%33dDa)7t)vm^ZxO)w&YU<)k#cYwcqbJ*9r~mNUf54AG z$#i=B%>D19-O=ViA9)X`^phk6mKR;-Kjx=e;h=bg#d`@5L!b&WG>T2@r|?`j7_Jx+!04OX?!Hn?6ldkuk;s*KKYsukMZ{UkUgd8*37f$>7pI*L zA6p}!imU+ZsC@A@GoKU-iI-b53Vu~OKy1L&x?I|H?O|(S+**|-de}c-7w$3Ka{a}* z55NSCyATRT!t@neChztS-jL%fCquOm=amoLxu!rcN>Zg%1N)tF-E!bKB9g{vpBpCj z6eNxEE@`1L4~F+rO%U8z)&Jb-f)zzHaY`&ohb=6>MQkEb!n%WU>EcaR!>M`$y|Z@C zHxiu~NgQ`9UDEw%LE~5hRNnlh8zW+uKoUV=j3S|5Wz%yU$KgTv!wLgCLGw18ur{F+cjb+u; z)kgGczc>uA-6eSF?v)QgA#s`9spI!uawbA;T*_nzB5;%>>At?(wEeJ2qD^{`j=Sag zW5qyCvF7@q<_`$2x^>dy{J0>4-I2hR^UXEnAXY=jzrh;I9I zyZgX|HDL|Wa=)Q2rwDa0KtEo10X5ZSbw%Y<#}!bgYd`G+N++2}d-%^O!0Z!?l|dCJ z$5F9@_kcpH6(`4zHs2L7EYyhet17KgkI=4rt{Dz0)fQJ*8a{u6U-#Lxz}y9k^Tk{$ zg3;l5aVT#NDwx2$=9N%wZlDWj zD+`h=h_`S2wj*%sR2iWz+m&AeY{?4_6+xeHCBHj;;58CLI4TNWnepg5*mc$wh6*3u zxpc%S*ql~^v;XdmH(;U)13#Btc?Y;fevAhPlg{$yKXq9jFmh5WPG0g{Ij0yRUtIm7 z{xgs01xrGFQu(^d!(BIZtq1r`y(6|;Nr%-~q^OC9A3C0L?ql(x68F{@L-OWgxij>j zKiZ^D+`jv8`n_1(j45FxAJ^>sSrb-|2N7vJn@rP0JPS{9-E|r27Mi9B*=X;F@D!e- zP1C$o{mo+{rjG~kz}0xTZnXN0x=(S7&!GRzK*-%3@-b2(Lg zKGrnNjT!3pN}8v=-`*MO_Q_DUZ-%=4GSuZ}s4K`&Hzq^fff?!!%20Q3nz|*XX-3oF z6Lq&_sQV>DotdF-j|_8}m!a;I40WewsQWoX-LGltjxkO1p)_j%U&Bhplgyu}V|n6K zhoDcoek?Pb`mxM#s$-eqRLA?B^fb9u!y%{$WcL*1Pj>h4NY z_Yc!Fx5-fVL7KWJP19^ngHP0*m8R|q=>9Zg-fo&EOm#dgCm7f3Ow&9kL){B%Oy(t) z-{6VWsvkTtJiJ%2Z`Y_YhQ~Gp?9Z!{=4r3HCJ7$v1i-sojmdLioq)P4lImFQqwdP2 zx;h18nQ5BC6;JS(Tz7(LnujONbCLQCzV4gEOI!!OUXi9B>Q-i`J3T|)85!!%%ush$ zQr)HMv;AQj+3UEOQ=MA6V;#R_#Hk;03Gq19A^eiA4sKw&Iv$IE+t&b}I$b}ew^Kjn zXQw*EuhNYPA2wYb9AZ2Sm-ROI^Qxpe*3CbdrqI*CH}~VZb4=5GB#E}qs?YEPYSYv~ zA3dnx@%p$Q>K;i`hk4$h#^kwtr9Lk;P4n%fI<^zg@0z6bv7LbR;cwuL$K<+@X`0_A zt%3al$dElV)XmCJcU6YEk22JKnWipcn&yTiobfzS*Dpy<*z0nV>e#n|oOnpVV}27? zWr*l_(==x!)v-MTyXRUpm)Fd=ODFiJr-Fs9xP*ZRum9Pc2d@lDZvTR5nvdDaUsgk6 z@13pwKC2DjsOiU_tJPn_kbV>rj8fpbP1!&#CB&gE?Y=U+B{n?oexw~!IgX*Ve5 zy1fnH{L=;p@_^&N*gvNzINp<(V>3V8%4z?+m;{I8#rA#rxeX4+;_;FnE_Z_idEf-6 z=gB<6mdgYCdH{!G-1hYx+y-!9L-6{+2XCpVgAW?i-;FjnnI2xX6W*S;!I?`$h{bVx z)(cN_z|#e9{5ZjR&ISkTL0pgdx}O60eU@-|eok% zu))DP?onf7WVS=jvBAmaaazyYHaN&S`_Kl5W3hL(0i1ViaIl{5ZE%{Dqw-1{z{92;0!K2CUh-3AA7aJGQ~hw-Mj0i0yKv0n-}lhyoBYy&v<^+1=hpI~3l z3vB==c|Gi(+t>3=8^E#K@i=c7003$~^8OjON)=}LIPpR9dN`(FUyt4faO~@WE_GVZ z+BSfbydK_?_Vv8f25{_h2luw|5?4Hc!~19NbK0Ih9DlN}r?d^=*w=%rik~>F=j=9s zlT4q}6pHZcNCk6k8^O6u$vDVsj^*0%*8N-sJj=&v|Jda-_5sd5IJWnM3gkU$gM+bnyyS<=o#4D@g9AM`P&LLc z#@pE!@d(*H*}&P~0nYk%fOCKYoY&d`&L9UkW;?(c>;Pxai&bHkPd4-!;sB?-4d6Uu z<2TsXH3|;=h11mh=Vl3qSM9W(r)_W$-?7ftI?`_n&W~*X=P4T;_$6Pfv9TV%n&9`B z@Jut?@%%Wg=Up2d?9_wSNAsyPBxDd9O#9=DOix#e7=T}*-l*225{`_$tR+< zYQpyQJlzIxu%6Yn_3$|(;2f-Ae$fVS*4yX${vt(F(ob1c%o%UG1L>o@t-;;LIQE@!|&& zef50%z(M{1KyU(b&1>xghxbn(g|~Y+Nu-VGgSZIRbC%+Re}2+F>p?O);2fnKhsOW3 z4;;ir0LQD~yvv8rZHza3K?&d-s}8G6zi*%Q-0zWaRxA2!5IagffM`K=ew_4=(>_HW zsvU0)ov?G|)0S}HmjX_OTF(<*S`X**B>9G%Z_F8RRw_Q&seAjtVfn^zF59Vn;IKSk zI75214;)-(0p8{-yxr5Mec(W>+3AzV$$_odr%rqTHnYQdfDX4&hvg{ih1IpKhx2g~ z-f(w{@m8$(y7%F&hx1Vq9NfcVyxppjY-Y@CA2`S#1$}nF0SXayJ*xF^K1^BTs+zpC|cK1jkF?$t5BiSLsjqVuk8A2@L5 zv7R%P-Mjv#_JM=EB)~aC!5M#B`@q4qVZhN9oR{xvJ)FmF^ugT*4ov~hCu;bE#8=cr&^}+HuibA_3PPSgM+8L$2vFbp@t7UX~D_#WLi%$oE}QP z;bAz7pK5zJhuPM%zZ!nUGi?uNx@|oS=k{k?59g62`tV&oJfmRv5YgMuw;s;JHaJU( z2=@Y+o?WqFiKsU-xXZ)+ocQ`J8yq|ws>TXVQ5PWg{N7p*#^UkPJx*{Qw87!LG(6a+ zdXh1335E)`PF4w(baZjNc_$+Nt&HvBSaLLc9u{ zpDF5()7t>fJ+}4W!QEt*G8{H|vz_2DmKe^?Yyi7FnfQR`jt6oS_hlFk=Mj(Jo=Y-6 znc&=Q!yDjiQbU2S{p#;|Z2;#k8=T`{yQ@hdkGM!J|!0EJ0>-W!{HvNN#{d&aULU@rG5$&HP983}ao#gc$ zHaO6ycxMT8IrQnp%AdP%*X-7#P~iyY78@MILtuNLJ>c+N;F0^a9u6M7cn@QP4@P25 zL?U+?{D)k2k%x)< zVpwyNT0?|LoPWahLVtYz8u!v|a|AvR`+|<%A9-}j-W^OtLvSufMEKG{*b2B`8$*61 z5v?Gi0wOvAF+ku+<(T4~OUsDpB;pv4Cch2@l7+BD<0q;vfy;vI?xAii zJ7D0>9pIuIpHYW1F_Z%~%JCU>SOdy2ACzMZ|og@fmAI8DIe}a*F{2W%wKA;2|!<-zW!9@!Y^Gc;_OwK^@xJ%kVeK(U#i*ADAof z13UpH)`2q23v)ynaEUVD7B~i7fOqT{&;T@LIsrGp3-}N`fiW-^%F!R?;3JH~Gy>0{ z9K3@4gSMCx%D^X>8|I3+fR9iP{=$AkTi_aHpds)K8sIbLhk4>}&<-@j-=HmUjq$)& zm^)|zJ%{ly2F3*4us1Ot+Jc|a4zN*<^ef;J<6=CgJr8^Xrr>>rE0z3^rfD8Pg4D-Rh0sXLk)HAN2-|=oo z=vTz=LU@M;k+^>YISHQ%F&)eizBc?|z(C$I#=(0QFc-)j#Fp?Ib_0GR6pY`%9p->{ zC*XYph zyk|=Ny}&e0*2A#V&<<Co1YN3=$@dXsf z%NmNW=p32^6UefE?FSUI_yUl9hsv)Q7%IQSc8KlE!o+t3?JH&ye>Jdp-7&bPsH*1h zs#5z`steUM!4V6(2dVZeOQW3`ty6UGcuc5S<)r z=5Mn|cr7&umMbP}TRDF{3#OB}bg?-mYf=Av-PV3{Fa_+#*Hfb7`>n-y(TMefZ3V{V zSB_wJ4a+OYA2FgJU({7Z@Va^NHND`1GA$6%#a=A)7l{|qf3*xYu}A!Cpi$y?Z|a~* zWOsGgdrfgu}tb`G7?9Hvk`1*w5N4ke6-9pmej>$iULEJ|q(Maf4YijYno>Zsaqy=MzC z#rxIAO>@H%;IMGOm2clha2Y> z&MEWY9g(W1ESiCTEW9L3UzSt@<9xP1d1#juNL#jImXw%-u5_YPSx*IzB~S+&u6c%& zXn1@aCyLFEQ`tkk)JPUR`_p17r}<)!Lq7xKtS^rtPh1x>ucd42iSIGYmFGPzLDovC znaq2z2N;V*LL)%Kju8?Fa%Ya<%wnO5uoDkeyz8-18Coi_j#t`R-egX)^ax|eg6~w< zTVa}aEmP3?%^0=Q&%O^Wth9Cwte2SE#?yS7BW#%THGN#?KR~q@PGvNLifI%Lry?q* z5tL6OX&8;9QItm|R7|BblFDfWmD6Y{pb?_BkVa84mC$JN(5`Bv)~=KF4`emVK#N+L zYj<;9FH5^J(rt3X4r{icrHA^q(Rx@SjHhN=B&4^;v5cjBdR}90wB#LDF^6JeuMM@y zgV~fvqo{>Ev_~7Qf_1I6iW-X1B5I}vsu4QN(#M(F^mC;U>k<3fELa}OX`>Y}Ct0&C z5tcjTmL-9mYx}#dVyJ2{kgDlm%A=t)%=T|Ejdv_9b}TJ&D1{#5z1!Ly$NjPXps+v; zVbP~6-?NPjpOZIZbH1C%xnolvBCw}%9Rt9*pN%=n>+PjTr%@RMo_3PeZ zAJ~t%(3VA1MEO)q!^k7{FQ~!X%apNx zv&03TA)ZiA{e`4O>;e%S?3V*ndyaotz4TCOur%SB=z6A+dWrG+6aw ziD21@(`Yh{w^=zQ!oQL+hv~vTK`bdov#D5k@C^drF~QT8#<2J5pU}@kLtJOfc50#x zW*^f&6Hi<=r^f-)xrFkC4U{ja2x^y50hLj{pf+rxBFdv;%A;XaNF{ml^;3E7>zY3JP(szVwf0odQkHly`MaZE32@#Buu4C~2tfGZv2*0I?`p5km z89$X#*-SKIdzAel^n)IT21d-aS?m;8Bn4_lyt6moKjWQb$5yIuT}gAuDz7r(FCd@L)f)t!rEjHP+EljZN2)(`}G(7`p0{Eg!hn{lhf^RM4Xya zyjhRfd6`G#9X?D*?J}{4N6|>(-xN`aC@-UtR4gPwAq}HqvBOJggpls2D;3eBF^VGT z_aR%X_6W~VDiU+I_9mhxLsQl=LCJd$9q0-t(dLB2hxUOFH=IT)n-irYX*A{2Xey-9 zGk4|c@``%01%v*X@FTt{X5!oFMk zr`fM#T}R_M6lRyG_4*5+u0NGihzP~+Gctor>b03cLmf2>{b7y(wp)xgd zj3xiET*)@V#W4;iy)%Z2NGDyyAP*B~WD9AY@FsCO!qP#uVfv=FD_1k)_B>PTH%l(q zmU&d9jCgr!n0xB_+?{-uY-Ixf@7DqKflzO1Es ziYR-~Lld&@cLY_5(>keBC#rtw`HyR0Ax(0H!WJ?jkDyeg>S1AgbGd{)O}3vnR*EQw zly*Lf(ij>qtPi^^an}4S%VhgR8zY_cne4i5=A#m!AEbr@Pa(1gUk0`>xM`Tsi_mw7 z{FRA_UonlQ;Z!W5gC3gV3M*AJjYx@xKr@XNev*uoNX>*&8Hwc5bkUG1*I6(fv&H+N zt|PJ?X{VvIdf>Ms{x(&O!QAv`^}IP!pWgE>6J9H0$~tG2WgJ@X`usxZ+;ebBI+#B7(=tgxrL8QsWAXrDO6u`wQ;@r_%C#t5%J~(uXN- z{kHTXY&~h;FQNt!!=L6l4@<`-ViG=#HH*Vs$6;v#s{^s)Il_vbLq`dXFQW@Mk;SRL zJW2AsR3X8oz zrxkc;hHHPuWD(61vKbK}DVIS>>|bPt9HGWZPfxa+@`cPCF4hLC8oY+JA@T!`L-fEy zN4n07^`ztt=%Xg`&`j5UmX<~YG^98aXK5HoYRy@$tKn!tqu>YFe;%rHg>6}DGVjGh zvt9eJ67d40%g0C}=$ScRL1ux?~5Ylo4jiM5@Q?XCs`{vPbaWV)S z6fFxyd<=UYJ_qLdYwe@Ob=cYvYPA^aLTA^R--ZXtuz14i;1vaLa$<) zEWCqyDiyk^UU*N?2MlEZ4T!fyHdN4cO&r-xjroDEuuhz~Gp|*M=soOMLqzxB#XwWS zX7GrNp3E5J-HmkwRYugI0t!aN7$Mgga~#M%2F~hbE~-alSZ1CD+Y0s(EO`)ioq~o$iJWbfrkRZN<6Dd1X4;|%-OV-Qq$O~ws$k7=k zqCU{gi076GkEc+aK8_ZrPmtxqgp4m0`WYU)hZZYX%$XAV_Me=ikt_BZ=ketxX*HQI z3kh$}sOBu%qg_|T`a2O5(7>57&339h@0Zr?64fjHnm8t7Kh=W81xvA3SWh_3sH6rF ziEgH$8EZXstb)jR%ic2K=mYF~OA@hV!ZDuT%Q87mtsuQ6k)35C=k1~6UB_ci9<8E1 z;N0ONvkY1r_O|pHhY8;amh?zriIj_I=WvmS2LAWZ(m3`d72IjS`b5Sv<;l7|M})Jb ziUoCa>Tk=b;+QQcW4{ey<=@(^N0y)I+TsK~JD1;nz+!kvdsb{)kTZzbYf1Ri!UVOFQOj>mXIBm_|bSmg!6Q_2@V;ZKdCVN^!t z!rw%m0pvO&Ca~IpU3gm_I@J{x>$-IL1kS6l@(Px_LSWub$DJNp;W`G}Rb}F41aj_V zBpddohfZ_t&vdr;hmD6jBJ%!{hgPalHeW{ncf3bFiQxMUr@LZ-`AWt*u^(mj5iA18 z)FQz_h)I-)>=cy2tA|~H7Lc@%x*j^i6&A-?EW60^@|@1YJane(m>m0%Sw!|M&$HrG z%T~5CNBwtb#}Wg#ZY-&TJ7&`6Y}Ym$#qRr+VhFtE30P9+S2I z_Dis4)7^2(oTG)z&*U~RsP|L@r0$uj=ptZ^k{tjIA%#v#u8WtLLD$Vr6tfD;Hve&7$-LKF`+ z82;e|;*vO)vX!ZJVb3XDkGRPaZn`JE5Za-tUS>E;UVMVjG4?D$43Sa7q zdzKZ6UVSEP{LOVt=6yuT5mSd8#|b7P?8qjC>_*NOK7;F#vw<=x>2ZDu+Cpbv_CH3? z?7X7YSyMosSztfq36BL)a?qk&$fS|NDu<>;&M&fRAct`N1CJDKJ+$V3i~@XujU8oK z-qNPIJZro|R>`wp$R%(-&LNOB4?hQfB2J%xYn-FP0+M;whWd=>8 zkdU$-x-x5wBQ^*x68OfsJZ>%&iqAN&hc^J31AT#0Kj0a(fTf8Zh#Fq?KZbGkCcx=6 z;>{Pxhmbayhpx^V^N4@s32sNWl#FeS7FdSl$1M^_cjQBWB9J!Vdf66o$3xd_Hs)FH zrHk|YQKDRIT}-2Sq$}J)x5^tjQmR~=HKrj|5H*1Z3@HJNQhH3Voa7A+{LT~BWPv&- zgw2E#Yup+5yDKc#K=v8SlLGskuX7#8vH?JO#OM(b!kiKD!PzY2o{W{reTrxs)`x67 z{Knl}NW$w~VP%8m8(c@>XdLV)+%v}s(2cIW7&d%z+*#_c&VP_y!tbNF$#oP9TR7)n zoq%iv-~%OyF(TT5Tm^Yw8RsN8As#L6CnH`Af9qyfSWXm13>T3lYtFZ*akBS1{=e)= zo@Y9n`Bqm9GPPhu!DmNI3VRZEEJ~0=iri5d6UL52+yd>8=PA8C^!3nMS6Fr_o$R}N zXq{_+o-6z&aFVpHu^(}V3$YZ$%8=0piw~b+r9gf|YD_EZ%|8OnO4A*&;I#IN>Y~=XU*RpcpqMZe!l%iU;Nv*iyLd2Y!Ye zhSUaMKmvh-@Sk)4Pzr8`g$t>Tc&mr*c7??_cb>Vm!h2jtV!o5vjx2}qrW6m|t9qx8 zY;lA(Q7_~E`+csEnct-RY@|8jtpEP3`^kGT_z7A*kafQrnoo^!cn`X+k>`mMzB%Il zJ2EvMQvH~l-A@-;8vS=7ODrL(g)QQD&{_|>Vvso;+7vN}QXvHqb(YzEh(5!*k{P== z1B6{7tt?1#>;}k94?W@vD>WLN7~#bm5)ciB<;MT4XfUiG{x>*nGbAa`51`uKJE(Bor9iGV>s;z zmbHnoGDM{V;vFF}HZI>4$JsLStOogRxZ{pH?bz*7;>+9~e%lRh>GQ2|KH-$T`->gR z8D@wwLRa98NQvXfw+GtK=y|_7waa`yzq#~&(iQi7vn&yN?)dT0KU~M=U5))xPWd9* z1uqj(0N7kOPeKhmAw(kOTMDp`We&g0;>SCFo^pldgi~p&AeZ;)E$lCIeLVDxYk&4r zKvVYCH>zGvT+6cGj(6)_W&dA1XjtoP86rc~ZWli5iZkX9*eCFy^MoY>pLn#8>EH+O z1@gyWzd-hKb^`bbyaT_>L(jRwV!H-2?jN6Xsx|w(>qtCnM6}=wLs!8!gq@DNCh!H3 zkq_GpypCuKyh7M+csml-f%SRl1y@+CB{JdpMKua@+2&in{8phv>vxg5#Su)gexX+& z>+rrn%SQIZ<+xQZZ&t7s?V*3Vu9&eaBZH6>@Oj`TAyR?6Er?a23>GdvA&VSbf_N9K z1?ks$=wGg|*ypt7o4B5rTt{FVS6YmTyOIl;8@3u;J zHvfj}Dwq@C=i$^FIqC3~c^z-Mj==s(sd%dgGyvaWd&?CE+;@0V4uXf?R(*MIyZZtx zF*2PM{&7!EdG?v)-8-(dU>PFsz(GDB0*<(y^b;UOkkuxmDu@w5LPH1PR6?G4!l&@i zyK&4*3b^B+Iq8qC!P)+>W7l*lB? z6I6js_x_(2w=5HZ+tf3h53;uEY4*g>!~aAyv!5jTV- z;-L>+Ve#z;%+<1sJoJ%kPu^vKiU0DxDeNUd@|(=yX(P7tY1Si1{G?LzGuIIqPso5oWJ8|1fL^d_aQ2Bv1G12$ z^g(7WS|U1)cc04pkT?td+!a=4&ilf(Kid|`>rBSmzg|=hEk>6#fwV&Q zg@?XWuvp)2zAepn-4bnS%Suj;B+H1ryq7dvS&-6>wC*F>Bd8ww$`v2{);zm!iT9$( zw`}6BwzN<1?xP}+xs12{;I=2M7L>|+2(W?{iQCe+?Sfiq)qU+c1E#*b(J9~53r+@2 zpnbvZ&>7$j#03z^!;Zk22TGv1(b7ZTxWZzaArmIQRimW0#aY6zq!=T-qVHUx^Gd-% zIJ3cu;ge#e(1qY~lp}u*@)a}`-O0OC&h>|^=L%lOeBq-a z{~vRe9xBe5@b(qRY4}oz$w>JPiox$f_JD_ebe$`oXEHwf3z=)h2jrZ8avg^$hWD}l z?7Bj34XyHv>)5Ov`qL2cb~v20M#Nhf`rKN zEUw?;w#&z*6E?K z|89qd$T9AQcFYI#eTowy3b zc->~nJ^7@YcV9Qxo*YpEOx&Btp6jl9@gB4Lu$*6?Xeks6S&j1(X^F@a5$n4zta_(Y z5+2iP)xKvUOzp%oFvgvgCD6kadpz^(u(6}-c+73!B-owOH-^-gIi}G3(5rak87v;@ zF+&qeSuf)eu!44Sg~ex6>2BXy)Ueakx_!5^D+E4gOT;tYsw(v+?zBKE;Vn12xQ@p1 zfqUcIzvQ=U^>ppa79Y<9@#Ub z9u1&DG=PSy&-v=}2=#fS`aDW~E>NFGi_Z;W$5zCq(Y#JhtK(H}DeoWh(W6Rk{By`Z0eoCgJ;K z#~Y~>#C@}53PMY8nZ?1@j$pV>6oi$+ecN`I@I2dslM^LfdydR|%RXz~GmOU(@!i3) z1~G{2D4MtuoLkC%c6hRcp)nm9R<=?*nKuzb++0|&WV2gWDyJe^Ap2VK9FaCIV@^d> zkIQ(?PMnIU54X$2sfZlPcB%4wq@Wz+HR9vk3TsT(lH^hJ~|&wt5zc^hDkja})1eoN&l8#w7BwWC_b>oZZNh&EH?h36*^_@2`S5 z)VA4Q*;yBe(#Y94dytG9Yj<%8W9yG+U2KVbW-PeTH<_O->BRgrIxdkIL%4649rq-T zj+{!SjWs%Rur)eUWb@{ZGnwSkc_eG>Y-gS-%W&c^$Is07I6dcf4A)7PwXI!(SUImA ztNt@s)$PgmPV{Bo&rDy$2051XdrCIIW$xW7+Ysq-lMksh1`b&USyVv8^q zh#zcF*sz$1H4n*4>Bo@uh#_LX$~S6Y&)Mn1lt`qu1w+=SQe1LEdf3T)4VV~J_K>v3 z>MYH|9Dq`m`*!JM_oFh|8C&Dbb{yjzm+d6UQ=qiOD|Q)UGBwhSRxEFlsVVoT-1WIB zblnoKn`gOskT6HA0Q0eAB1&1_^7{BQ%iqmeos(Y0%^nHYu2=2;x}{g8j>H`Qn|ihV zbktVeVaZFWTej*BX!Q2g9hSXm-+}V9UG6n&2U;iZnRnn;-C@@q?dgvuTLRKMNR;EO zeOQKPm+1gY%}HWQZ$om1WouX&7Is@h>XK|Ewl$~Bo{+_XseX_ZEr-p>n$X!hvgT{) zyDh_0s@~>tGL6i$+gv?u<%6UjJ^NFTWbU!DNYamVh zMItQ+nWtpsXIR{WQ+JCJ7N`Dic+&RVGPYM48;r|TTaH_79#?X&^gOfWkp6$$M3M@Y zRns;e^bb`38FE4tVE(9M9UGsb!ZTpk%Uj1S)VT@3D09%JO>TUUSZLly8ue zW2WjmXU*om8!g?~*86-*N5(oamqfb-+|6+f#wTtu$#$)sJKjetM{4cZTVmg3pA*(T z5)hcSB98c5X2e+%KyrI}3BbDn^sstm8)=l1%igoCWFx#7cqj6$!>|FiL^jG;A?ym^ z1sQMF8ncs)$fyQaL%zv3_>H!Wk)3RWq(|%&{jnG1J7zauI$D`-)+*%wNl)M8{pB2a z+#LC6)*;qA7s=h!~hjJ3ns+iC&kEog0Jv*28Ft3M|#()NvZ+wU{5 z1uN}4=?mDSm-bAnOgl1LYb8_c^3UVTZHd0mHX7;_QMB?q?K0MWM@8;ZaF>h_yT_xq zQq*pJ{@xU|Zu(?H(d=TxTPgbArKn}GxJg~>&QWGBaVtgtyA*{+l#3GdO843_1U?X64n zxA;)TAf3-fGFj91OaQl=m)3l(=oiPs*y^|DlpGb!OmQA3)5zJ{zRC2>hMTg_1aPvf ztvi>N9cK5R?9}CzW|jwbk17*wEt@{|)GLv;%xhcyCvc)0cREwq(#~#jAMfgBtlB<_ zvR91#%I|VwA1srUNSF0z-43>>?yL)}JHl3_SYhd9;SQy&ftf?I z&u~lLeR%hvkG?9XG7gVFXUKlW@n zN$d10koEQ++2x_wdq`@ghav0H!@?0LpXu(PtZ%Oj6J$4X4w$v4QOdH)+S4dyS=Cm1 zI+K^_yrX&Vrr*t5nkCnMBLj169i*RkYow68_i49^0n>d&Z4VRsC{f4pELhrZjt-KN z>Hp_#UuedyGR;X_w7*Pa{c6cH_(0Awjjh(qGHt8RZI>?XY2zeXQ=pr>?948L=u8iS-6-t8`SCZ*!28l=dy|nOl;B zJq%zzJG-ZC`*SfhY1B_$~4&(6-V7S(uKsN}fkpzs! zoGszW7@AX75!y19GE3a88v6Ir(9RSEXCz9~bT*g$OoRE!UMBryL=$+IS(&)jefrkC zv7R}~+FM-0^ZDaR&OevU<@{z6XB*ufVPyJjq)2IA)34I{Ies zZCSp2X6kPBw%ose1+tRqXzg5-G9Pa~b(44QR&VQ%?rm+(-ea$G>)zv?v8A5C*1hNS z&26cg9}$eyh{K;H(qX+(%CcJ#(ct)u-EOtNy@|Qc$G z)c;?o%(1rrB`T*%A*Pxog|LrVL$w8N7|#|2mItjJ9W!M)WQ`8~V{OxV2-Y|ISrE2- z{!WqP&B;izBzxvvmVK6?J<`D^fV@6upWmtl@8BeZOBmZ*YC-Zi=`p>fBg13icuV@x zoz9kEmoW!tI{En{XC#4Fc=b%9Ewx-QRw|uPijiT@v;_nwsbrm&F@)^zBPGf`%$6mb z#SJKBY0`QK*1G}h5UjiC3}MUZVBfjC6Jb5GZQB+QoakVE^JD8FShuq+EVb_Bx_vT+ zt^8G)IU!@YPPty3S%E!b^#V;YWxdLJWFq4)tDls}>7fBirg3GxJ!eY-rfW9GSjSN{U0kY*!qr9%Wrkgjt8VFg2S^M(u?IXHLNkP*2< z@(XCGhvJX;GbcxU=JK#l9k~ZS_fA*&S0Y-cddyV63sld=>hrJaw|Fqn zj;dg%Pl{LmqkBc=t!ppY*l^{ohuot&e)MDKju)Tfn{u6b$%KFJ@UPu@ns^>FO%vY|Pa^71ME!_pcOu%2NKCL75iL|>G`z195ijJ5WpFW;;E|R;3oG}FM!IOeMpyzW%iImFj zMD%dFN+3R&me}Ls=|M!}qRmDm)TD>~-kdU{F##8Mt5KOsT~)t*6jx<*hA8C5SEh6L0~!YY!7KL zwPtLifY4%mq=zEE2nmJfZ&RIm%YsRcP4@?BnbjGai ze$zCI@S~3??g9=pP1A!P{i>r{IO-2JQun!Nh96GN0(vx37t+Gf7V3UB8sdjT!`*@B z?yJxOKb%^0LW=-e;D&N=emJ!X7{*-MrRZDd z>V0QuYzYbZ*?ZQJ)*vf@CHxRoGc>l11mP1}E=NoJ5LGiYwzLFWB(yvkE%8HC&Cu9B z6U>v)@)Weh4^cHkW2;WESVGH_&=NmH)eMd8Il-KwC9Flz{WP@14^cH^mRu`rKsb@M9 z`;a{Sa-#lbJwm-QO9V0Aj830-ByxnlFGKJ2NGIUFJEWHoVR90%LQvHAB1~d};Sc77 z^?5Np5-rT3q6UxQ6$@=XHjE(@L7Fw&NNN)Aap^S z3&E$N`M&!OjhUw4V8N<;JpA2$hwMRgto)IS!m-#DLj1-z+m(=7@$rS=WS*VT9cn@7 z201fm9TbU~38WV0Nd1v!UTB=uF!?Ocy^j~OqKr1j$gL@<{fBKFpJ6xtzv(E}X3zW$?upJwoFD;}6N-`22X0`n!aza{P_*5?g!zo6EU9 z%0>H|fMFFL!?OXA6QcM8305aJ;#r@e8UC8l?2b!*t4OUYHB!1m_H^|D((cbHSY8jR7}*lzCw;n3E#FA7);l zA?Ad+0dId4eBl9)fu6q;9m~?~9*$7(2C;7zJWNx2`Atb0)v3+ZS+u!1i#9i8(dNc1 z+FWm%!WP7n5?TU-OjfH%sYFydZ6pYl$-y1|EKX%6`5T*}In_oi?9~&H928SYjpBHy zO3j3Ytq81wh3$B@Kd~M=bvXU6JuA;V?}|4U#Bz`6s~V<64`1tEF?I{o9hArThw0dE zCHEvvjZLBr>82LC`{xH2T(x7-8NDkXva{GTszVC4zcfwrcvZ=Y^bxgKZY+YUGhvnz z(KH0V;cyU9DG}8XQ5oWMFs_KGfk-G>gw)`I98N@jA`y{9Bn?r+O3+;;-hztYx=aiaIwQKYhgwmF%%B-c%75$#v@Wkak$6qn~jJglIfAa-T0S`|e zo8+TyF8R;6s{9En&K$XB%CYOdb}IYMh6%wG^sOqfkDBnLt#EjR7l8)?VACfrUEO6> z(Ufz)zh}YG`Ypnh#oE>S9UshjQ;$cq--3sZzx25)zIycRb$y)5x+}96k64GNebxbC zbK|b3K126?HsPjUx=g&c`$)*Htk!XF^9$<-oKsb?cE7GSmQ_D}1lEyU_MAe7*m^LX zCgx2xe7e|FMOs9!EH2RldZQNAtMx!bl|MLHYt}`>8ZF$YMkJzSB^ z6Q>~r`jgA_=Vo@ATe7Uj)l)i7AGIC>WJALVU3Z^+{13MkpEItdaKQ4p8?pA}vYXUw zlGhHev&tVV3;Xq;FVMmWh>E4dlq;RD2i3}NRAVG8kQwY4(=;DQvt({#f8r~Lx>+}8 z(dxC|9ag&X3wm=R|uXt|mQ$PGP_Wm<3+Hqm; zOFcXVJS>Nt_KQ>5?Kx z{$ksTi+&z>)(=k%J>046cacN)3${vqGRh&CxcmNg+j||a**JFH%IQP*8h;0@s?{a$j&Np`qV z5)bA)e#v#my#M9$%1h>4`B=e-)o(kM{a$hi?DxxwxA;TrOUB<^arm^;&ZI}PUB`FN zf4yHfrMRPH~2Ex%yM%?F-*;vKHs`#ae~E7inV2&9!m8U3;^X$$P3{RU4z zbEjoBMQd9&yn1$@4_ELM@UR?$A9QZbPsS}hb0(~szQ>U}oqtV_Ifti zp-C*^#0aF%4&nS}n&*ek)uBGuj(gB-bD5WuKD)K4LP$U$b_n(U_TiR2Kc5>Our{&C z{XcxW{>q2TE<1!1w5Acq2fjbkK)>#T+D)J>eKED3MBuYue7NkgL#RJo`|fNzOn>yh z-um3Z7R!Cx?ilPHa|_$S#eIu*2-`WSO`po~O-iX_Cni??(5=!DK3ulgp(IAE>>))v zgi92w&kPPfT5@>62Em*qP0QR{lUlEH?GTe&machfOks35PfZdlL)Zp5J?o^LyEuQ<&DLO5WwytX-LIMIYWPAe< zK3sMgGQPoBYNCLEG&lTr)15zuR@W^pT=(GpBk^&3xa=}yxNLGix=VqEi_ZB^-|{>% ztoO9X&bFh@+_lBV#~#te8sEOTQ)#Ogwu6hy8bgMvz_62mwaBCfmaqa>CP(?*ZZSI9 zQ@v!r@`~neSzM@2F|0tqcE&$%`LJsIHtodw3h9kg{8S z`ObV?|3SF6qAEp0hU>0fRU0e0m+@@2qSLH1O+F^zP$jSDp;9Q-N{LXfq;0As7Tk_7vW$+a-w5`c!c9y3 zPtdjSKao3lVqPKVd&fMD&G*EGal-sh(4z4_AKCBN4cY#qAQD zBeMnU60u4ymrK+Vp^g?x)e4D5Emg@C3WY)?mq>Lgxow>}eZtDQWi9_G%TlhE6d|m} zErHt5=%A?3@X!bYF4uEA2D2z^0Xs${5@~3STp`xeDq16ziq#UCUaOX>L}H;rr|0X}FqjPX-NI!3+5lt16f(I+t)sOPS}K&urAmcRqE@QJ8o5NI zQt0%|;xSv}|J(i`uHP;P1asIOM!duGr4aG<$d!(v``Hh#)+Pk{F5g>v;Ni{Z;wBOc zi@<~+Yz~v#`chBt<_o+yby0BQS-qb3;=I-7B$DQTN&L0-(FAi-RhwF{JKF;g^Kd$#NVW?<`#uIVRJVW$K>(p5(7*|6#l<{_K7IO2XR zfNYYAMG}ozub1d)S}s(JRSKnECQ~bES})V1u3?@M>p^hw!2GL)G3=8}792uhiY;fQ ziwrH&p9;7=r74!n>}QCfaOf|3xToMRF#k5qQ@zG5p9?-MxS_?uym_|Wc^Z3#kbuCB zqnI4s?OWdD{=IEkUBaTk0Wm*#Ji)wOE-t%fNN^N1s+Kt9ukho#3CFs7?Au?F*^ilG zPqMkj?~nJ}mS^?@-)UiQ4^CYFX&SbJi_5MV65K#!obu>s_>sweal5wV?$oG*Q>jEq zbBIeXX~?4c{!`Zda%|z;-uw7)j%G+u+t_43t6v%5=KZ1AnxC*>Egy~mH%a3&%bSim zh826JK@Do|KHF%Lrum4EPK5qHvd)3a$?j4uEa~+HA;NnW!wF6K3Kpj=$e_NQzX+r%Qw*?lW!!A6K)_l)QUi;< zOs}26Mh!ear(@SVb(&3EJOAipmpRdVI5`;K{V>+k`)fltV6<0G@CPWURT zGqN(luAEHCu595n&Y@jFq8w&IF7c!&r|rsJwy$5XKgnd@6ZUWFDf>&B4N$oyfukNb z4f9zk(I*M&)~RLPF*tdPfQMEkUi>@vwzDr=%!v&-*iOHrBOfli3=n3?7LB+YP&saS zi?Q{V4!*ee`}0UA_6yrLynr+heidG9d-X=D(RtMFXA%rY`EXfnfCzEU(A(yEz?>6( zpR`!3Uyy5Re@!yd%f)4ap+SKsWHDeZ2aW*G9>HgpHyt&IbP5umXHj5Or8%+M3Aau^ zKI8xT2_H^uXHd9-Bp&Z*LzXl260p4K483LcKCj+&@lyTHCy$$4@3pfR(#yq_Aq})J zBSVu;II#0EhJ{61{YJoI)N%J?1MP`+QN8~T*zu&mS4Y1#~TDJR5{Wq>t5^-|LIg7#n$Gd3x2M3 zq1&;&$O|rxnH^-oT>0PZUk;n>@Bw?$n3!!c^wUc$r8or7@e{f7e>uw?;2IkP2mKGF;1{!oD!WP!a{osCQKAcU6fp*eMH^>;2 zRhwGT2IlH}ZnJy!z!u|b_Z_Z#^3kcJW2F4q@D9z&4j8A}PRq$*?_|bnG-uIUX1OAy_Q8!QhK^if5%L6`~O;9%j z=aXZi45rY?2rqqDq`~CH7?*hk>LzF zC^Di~XzzN|R}p98HUk9vOv22IKu@PM$>qidy2LIyoaE}4(&RawrJ3d_sf&5PJG$m@ z6J1>QZn@gm-rbjwfI#NNaS3Q;V($mflP>trtTInmX~T%&e7Lm5DhzO^8jwxqCoEXg z;|TC9Y6bU;BqZ4GIn zx7Fj#onwtp{bqhV^Zc+@J^|_F;?`Sz#awyz&kYkm`nc& z6+dr9f-SHQGClxJ@${n->}QCqJ5>J^Q{*0`C*>h2F!M#bfNS?$%GVfsnoPyN-d zCxm=Bymo+XI9J8U81#{&Y zn&?Fp?PUmyHd_5gAWgJi-=f~y_VjZ9yH{g;mE3={b+?;mEy`GFAPxTR%P+`a@*ib=DS{J+7EJ6tY&eE1h=E4iA`GZQ6-X z$CrJ;gCe=O?6SysSml9!-A?BpP+PsSY@653sxEnj-J6<4Mw*u%mWjr^yxVMP!;{c3 z`k!HZxU9CwM6mGyP4!RthYRwq&@ZerZpJG4t#A1=F856_N$eX@(L z;?9fe3Hgl67Pv<K3v)q`#-Y~ zhD|Np%J3w-YA)T(Do4X36&pYC;cTX&{woV%*pPx%pKp1;{2%|M(}|z&zB}895BD`M zgyCMQ^elv7JCAH^q`kA@H~r588}3+>r}i8^+_$_ChVA`xoOW;j)nm1z`cDdQdv~%M zAMV>+2*Z}X%XM_~tZ737Mzniwn%;6&5k6ebLKp(xZfb^9V?vVMgv{*T!uV$PlQp^x zr5l}nrth$w50|qL=ET|vGBrCE!cL{M5Ejmg014t84*mrBQ;1C8xTj+wtmV*!j|ctz zqWP48GX_mPs;Ny#Kp->Wn5Pg`I`-Z18dLmdpZl#_pKh!C`EY5ART$tddLWz3Pgt;~ z#}VKikoe5$U&hE-cEg1TRZ#wm>PYnNni5eHj|cGxRN2lxsWD$-*0I0WO@Uc@8mHT%D(Ni zV+_*E#TB=sH}hBU$S3f4qD$waYJ4hoAz;i-ynUxejmuLT_65!O!m8Tp<%9{X=@Ty0LdC)qohM5BMb(DL4+W}}9b`{U)OZogqWxHy}E zJX3Mzwu51flk^6C3j7p$@R}yReZ+!3&*~bGUM?;Z+~5CjK{9((>;U^2BHs>G>`h84 zb|DunGY9Yf;!gGO;cWEp z%LG&wX(2}b+-Wgqq#7wN*yfkty1Z|;ecGF#wc!zed-36HwD3!7{ztlq6xR4X?$YSz zs?hb3RZFaRJpTnBE^WGqCzi1J<9Gr~WK^)AbxVyCiPir@ePu7BOLKWc|=t=6&F@^uH+W3#xpeZ&!Akc$V-wKnz( z8|>v9VKVkMMo}3LAw_B3AdJ90l9x$`NY|0PDJD-jeKh#ylyWB@q-UxAWKx))$Ht}l zjm_rkA52)?nAmaz607hnDf8iMY$a1e=K6RdB7Dp1_&Iz|%J2cwyf1uQlOq9LRI3(u zuBdEyV-g?E#!503XH7fsp375J-Of*xJ@j3^ujs@Hogy&B*{OC!{5iI5eDQ<2eOKtW z3m5jNhV9_u9NA4g&+C7EbzFK@@3To8oxU&xkFa*QUB5?q&bPi*c=7DwpYQ0V9B+SC z_lMSvPaFB9h7Xrr+Q_Ft&PXxRd`_Id*ZUv6efOR6FS6p+i#&X|?9xVbXE){^KG`k) zjc!u}m3ZiIS!U8THLHR&zpLr#IdO)zdm>9?hpAjhV*c43FxI2?fdwwBO7r1zv@Ts*=k%4nDQaE6 z^vq@79xVQK*U;&z*l^eUiwD*n$ES6Cwwe!@U0TQIx15n;qWBU0!Q>TntuAk)xWqYiB*bv*n z#pP&Yy0p>hi)~ZX#y9EF#x8kFE!aP4vhOTIe2wE>76kKYBl;Y!)bQc5OB?w#$Qdc- z^PPOS?9xW`XWZDr*>)_O_

@xz_2|ZP0glxqJO0YzG(jt!d-`JP~I)_KwvN8V*N} z!&6Gc5#~w93h*=WoN{vte9$hH^-R7zb8;DLJtb>fcsj|m4r5~eY;>V%Vo=ApCq;sf z@ZlWEh1F5dR=+avze&VF;uE{Y9Z(dm5g6Opw_M|XrK|DbaM6N*Il|0Paspn2(x#s= z$Yd}X8wg0n3^*OXBAMLF2KaE*tg6oh(z#&q{FqRCT3LBGbu89*?fSu6qq;0*4l_$F z4o8}~iN1We?8*$J)0=Bl_;6`6Dm*(8%;z~de+H=n$Kl_Tle z%psi%mcHP-5eN&X0XCHz5%A%%H6pK65zxAmm&c?zM6X^d}?;i;p|1B^rU@> zlpcrwkqix3Sg7o+wbzDKwYD52MHX)X**c`)?=ySQs@Q0^;b$(#Jmg9^<;Nm7=Wh|H{DVWnVtY*T}bxRDnN!{s56{L-OTNNM9Mstx&yVLW?r!8PDuBkyX zN!8%HatB}LyU`2rc->F;pd*IXPlMGXT6LU%#5E4H)|`?zb;JHOH;r!MH@EJln(}fd z24TCoxJ6`OfI%%WDY;YlTVFN0#k^= zB&ZQNFe17JGq4#L8r<7xs%L*TcE(O3L|PG2vfA_5GIm!PljH%1rmRQa6y{8D2V>^$ z6PSC~Wl^nq71V3?&-`^nt`bUXsUkvylCZtckfq!H=%9HYGRZ$9$F4$Ump;0Bc^_I2ti8@_`&_;A@}1eu)< zoa0Qey(tM60@BRATbK`5*{(mhH)CYZUB@_(OCaf4YpAVN^ z>ed^hxsufreO`Mt+c!fTIim9PADwMS-Ovp?bG;L_h>yCnWlizNQ?VUf+)Jj_W-vz^ z8QNmc1*gJ11f=cKf8BE)7UJf1^Z!$=3>F0pvVuuXzD! z=3eB)hs!R5f=gT6>#m$_2RD%bU*zJRTQMUm6qHoYmsF8jJMdjXUlyv{M3zQ}>XxGa zPSU(Q#rm#DRu0`#Ht^}_O)8u2q z8$Mh*)QYf!O9rrt*bXjkrWF^=YL%f_ zjtiFl;5*nVwRT`X5&AMj71QDGSlTjvPSVYkj;q_vN*7TQ9AP71in2AhP$KqE`zL8$ zxL)7Wzh1faEj43XbWb|bH;;~d9Dy|^%yQ4W$Ag|W&a2YQrQ1*+3ni__B_J*?jT(x~ zAZ>OAoHDcse9KdOxa`tITyo$p-yxmY-)x`rLN>|WUZ>^Gp^XHi8eg&5C=;#V`fU7-ljE z+8Bc(BZ8yN*9}rG8M;y$XWfMLgqEKKobHosQq4V1tENNk!?S2ISH~L83tRB~`mn&+ z2aJN>Vaz~29m6|ZP6RKED}G{*MFLZ3{FjGkmleyBY#`pxp1@ndB;X~$-8_BA1=FuA2YDZ6|H&U z*_nCG){Sj@$-QnwlC$mj>1|R);fOl^v0G$Y|7zK6Gq!_^OFb>e>5Dk6ft*_Bv^XPe zYgbh6aDCxD-x2m8P-1?LU>U>p1MZ}umXNQZ!jLbk!Jbkt7v zktaJKQ`md~p%U6wjaIMJ(F&=GR_io6F|82EbaI7Gu2%|$8kx+h!m(@xc0?UyA7H{2 zf<2dn4xixE8-o2iatBW+CWnUa9g11*=X>J9OndS_VfJwFQb5$fVQ(;*B6z_fr#CRm zp8?#~r8Sxip<&T>{ehW4wt)R1R)}Ou2`v*#Xo-TRC1R0Wq!p{QVx>|=>!b>sD%0H~ z)VJCrzp*{R?GYRhFo0vuHYP)qNzgVl+!$>#g!i-S86zod0qhyQR;Q9FR7#nGrWHD+ zN~Du$)mpVqPwQkdwNg$=aE&K2II@oUgmA1nT40DW3S@N8P*WX2aHJ78Eg4J#;{aoX zAlzUw8KauybfTR-xzF;Q+lfU;f8hC|7Q5-gBK6rPOYTnGKreeUT)PnJ;d!Ht%DvaPB@NB=+<>mp1! zvjyxTgG_8>i5WQ~J9vFy;q17FO2 z(k66>{Wz6u2>t@tD@vJOEtDx#Iyo(pO5{qpOhOB_YK=;zR?Bo6np9kU*P;OsuPTz3*hHN_Ejzh`akIXy|b25yBu3_$eu>tHFxmYXGN!1#uoR&*9T8Uhu zQ;9T6nM|(LDMccwU9~wq!|fT8PRi{W+vu4+RLoKD@Q*>25|LJ@&P7iT=sFVY{W)qqDMnszo5kdAb0DokrSIUG^kwmYO(L$v} zCsIk|N{vpfRtmLRv6>b$k(s5=|F?ZYR%YzZ={F@OCp%mW?UB-XXPD!e<|HxS^6#jE zF;Z31@{@JvUP-D;rqdC~Vklp_As;Tg7DM?`FOgo9W>%tk0cqx5zsHBmuEkKks|cNK zhmZFC`QtT{^pmfaOD#stlF|F1dDgMww-gNs5mh@RjAmeIk|Pf+HR-*V@?2 z7-ftIGU8Edc{Bs_>vq_QS+-)Ulqtk2rB*Li;{u>gM=ND=kxHeL z(Nc*{A(7;)*t(?NJ6X75D_7HUy-uzbt7y4aft{q33&l#MTBuRWMN;!xll4*~E(WLD zEq$|TD_OZ>D^=1Wr9!9Ci*booF44;6La{q68v0^Kd$z?RHRO?iI zuTrZu3W-{+Rchs8npUZW^2}PX{bqY5t5$5aTB%+p*UEKLS|$|Ci7NozuBJ2!WCOB zt)kVmOs>_?B85(*ROt0`jZ7`3r3#Il)=D#X#rB)+p{!W36|1DQUa8Z{6tqwwlIRsW zu~;HfD`>e;NYg@nCau{1*ZYL5bfj&?_CT%_wy)x8scBxZ{dDW^F0;Gs^_!h29=$BC z>EZ z;l8dFTR!gdHjnMSt7oql^f=H>zj$K-ZIpPyd3>LX<6W^;NmOFJMkiBfX^BuF*Q<0A zjZCiAE3`_HLM9SftpsMxiY;bWGn?r`Bk;u3FJQBZ?P!S>0o&TK{D;F)Wmfu3@Ee-1 zPn*yKd^j>~U;$jQro|GSUZIuB6*MhXNM$0KS}av7H7bcxuhr_!`9PNJ?=qJ3R^MRD zy0ztL#+I%zr8&%KitgSIbImP8BBY5GKaCEWSt;_EZcFiUqH-@i_aG~{I5Jwd0K*Ec zP9;*y#40&0m1${(Mj??(#A=~Xu9oR_5*c@}UD3h}%)$2ZjW8K|8>75felU6289M?C zHyw+Z|C7DHX=KHW-np(!e>|z_-W@w0yq~psC9;BxBLid$AS*O-sa7S?$rUnMB%wtL zy-+UIDb*^GM2j0@^qc{1c?%~34THFhz(nYb^FfvoJ{-7M@Vi$*x3v?0ow+0FMq(c1 z0~bezq!vIvNOWScP$buArL;&dlPI)O8LgJ7b$YExrqhbV_T$OQoK$0rme}MUXG~Mj zWQ1cnbF`7UjKczH(v!aXSBbsGkJH7*yq}#gu*qIz3KvJlf)+rgh_wohMk!UOMYKky zm&-)7Ois(xa-mGG7wMI1yOA7TNNbhiYhj5ME`uDwjg@^OLnAW8kf`N>30>CI@fme# z=```v4#$uoTpSsKS%5JdGL=#%riEHDO>49ol}07fXlRvOE!Rl(v{1u4c&dqZ-!=u- z!Wa%dgUrD^!LZ24z80Dh(j+R^f6DXfk~FbJY_|`cbHDm`5ORi#BSRkxAZN5BN=OYdQP07@LR4jt_^8_btsm{iyI%%U5dmVE$=&J$CP(}=eou32v*&b^jGTGYLk;^9jo_Bt(b^3K1^j%)=UcU(IX^9uC7=u>C{Ife? ztVitw3tU!}Mm!3NBVj>6-rjxD^uVLd*ZkwQy*hEW%t2p1T-xqEWPp2q4C!JESoeQw zkg5V=BQs9{3$r{+vjP@*sfjyX&^K`FwngWAt=!rq0}A*crHe2gxTa&`VfWj}j{_PN z3|Kdzs_Wo^#z)p2KzavH{~G0YyT#~aPxX@h$}5_?Wj*+CghL4Y3Ya<9ks$-Cym}Lr>I)m3O8#8+lfU_tF=sqXhndbko zObP!rm;FjN)7-)1Jee~TRPmz5XX$(T4Ry~fzVk_T7V)?(Ea+3m z7fm{|_+a{@|Mk}A4z^hC+jhrb@0eSN=d;C#$Fu8_!Y}WtJgcSewwn1i>D!!T4)Vj1 zz}SJMA3ZBw+;^Vfhsy1?m)(oy@$i5@F8yA!K;#7dmX51(ZTj$$aVf~=8o$R~8vR@q zx<0aMi4~9MzrgaT`3>y9Uw^1uuin!NK6Bo+OI8e9H-itC34VjPJ_}geuGAo1g9DNt zo%War16zkNk${!&G&_$|0-q7>rtZ>D?Cak%q1~qWgaH{3s#@kxVI<$fEgg;~VdlfG zr#H>_*`yR!IkQGSgwTpW91Y*)ZhW}xax{Dw-66fHDFM>_Z@aFqXUc|ZcSnxj`L^O9 zIUg>o9Sub+^KS&wM7vfWQDFb|i9VAL3hs5Br~eyi=i;)~iF_S=;0|t)4_sU(7~YJH(ph82 zJ8OWwpOUb01NIz)%)s#UjB=lsj&FCNZ%p9&b!!{DUGb}Lt*OKyV@SchZIcg|T?QFL z8SYhQsmTli(#$o;e7LX0AR}#D65n<`_5=XU~_or4aPuI$E03_FmMf`TW+V`aa|9AIeAhj_k*0WASYExdr+( zy%K+{`Fx+7`gQk4`SRhi%f{m2OK)$@F4F6Hy})^6hRVw~oIb!A8;dlLswEEjEBv@_ z!m;ii`}S9i<-=vQjV18~4!5^&d6WD1wq-dfI$~)3G*~^NRmb^9 zT;qbU9b6odSOjyl%AH-woHz+@8>_x3>QRBhpx#jHt+GtM`hA>j$G`2qk1bLm$bXk= z!H@Lt?w;5VE-q^gapv-bVRkApA_BH^=poPUBk8iu*WRi0GPL@vU3|DqFuqwo3o($D zXuE|LTr=@^^biv>3b4eHD==bM{*l}O=DsXah#<)U?G6(LCMx146q|Lp`MBVbl5HQl zv|n^adv}=oSlgR~$;S@#v#Xck?Ggm{R)UtRcMj?d=5?8Vj9Fn|p?7OS$+qP~NJFEK2>UG+duGaDI zK94s|^PSl6?(18ll%Ih-YMa~vgnR()2>w5-Ng|P`eF7Y+ii9o zK7%vT#v|JhhdHE}%!m1ncsU2+N8sc#%NJ`vCVNs86%!F7gh)zm%p~|Ici#@`_Skjo2*$^1!qd5A9Mu!_s zZGu9K;Rf@o#$JY)Fq6&iTiG5d%T`0W&N3d|&la#_E(xrX*aFUX$pe4!e$WwY`srAZ8iv+SuV0p(4=e^5}9IvD`*593Yt^WF^;W< z7`Srm-$Xi@8&sK8Fbw(GheWhU{znB?Q7rO@x~b!6&t~>zOQY~PDMXMzu!SzLKkeWm ziyU~PpRJnbpg4f$!N_7wZ#KWqt0trXR?327~}?n+S>R*~8X zDNKXVPr9M-19HnDz1lkL-z2mQqn6A3=dthLmmdjSI@n2_GSIN zf%|>meShS+LwP`Q9LfVeOrJa;t1?d>&}Mu^^58+~@>5i3kqpa2_SuI-?dMtQj|~FW z73#14_j%(!4&~uLVIPq3Q&|3AmC%e5D!C4J8~Ma(PfKwQpS2$UVK6&(IUE7fw-B zBwG$)!_gXY@{gi+H>IfIO}_lweSkc}pX_U7s5bmy#MH*t&+&J!>s1<&fA;k=VDmmj zeQHcmKjJqrMXC|fi4HlYP!ZQDrHThmo3rBHz!>3BX6FT`EbF+fV2O&d`A1n|qJ>=* zhnCNC)g>P9J-u81iYEy_a0VvAss`)!{BQX2rZGkJLw+FtydCjl7(=sd*|hKj%W@~h z5QqOfs3Auv{5RbFhzm7D>q-sLQk1LtC`J@LoY&gCZq?z9>sDzfYLfbFr7N1B{C9X8 z+zK_)#_dj867@X6il-JB=D))`$gNN#UEJ=ZSq{ozJy-_oaa88>&|%3aq+e)QqCpxq zxtI5@`#!EwZK+Sv2rrxbOABC`dhg>J)tCAtjZCFXy%fq28Yqg|W6cL+@BQ98e$h61 zFHcC?-Qc3q@?k6J#g_R)o{%&$f(m@$Q1NH?)^-~aeDE|0>_s~g?8?;)Rl$5J-73*AB z3zU3(zGEP^mS%G+-IQ z=86p)4>2VjaZu*_5>31-Y_8bQJB2cYh862pX{_Zz6Sv2^WoY?EcSr3_I#;KP{bf~MM)y)F(>%0%qx+-wCY^Oqk39`$J_HmkMy=dL;tVJFM^gZqUwn*uQ#dhvbYNOxGs~3a%p7wrM zq;$igJNG9Qc2H&@TThXl`;)pkC}U59nGfDCdU>CT^=a_3%FLwQ#q#j#MdKH}yzj>P zGEX420N%3wVw*fQ%Jlp!>rUaVtu!)zxH4czJNdBZbt%+B3O>zBCm%H%P&Ol%5e zjtt!Cotv#E-a$R~G?@8t?_mY+$xHhuu8a*#>S!9lO9PgfxU_%bs@TA!&MB0cl1dpu z!>VE@t}Jq>0) z_y+5|^|O~Jt~vZeQrt^DuU=popV`Y3S0DZ%X=(~(NIl~mlp!>rJXrGq{@Lzrxc({O zgK|%j=uoo#Jx3Hpz5Zvrcf0GK68=)|Nm8UxrW0F+c2LHi1~VVZm@0dBtT83Ad*$Xy z<@!zFm4~vX%HEx8Oi47PPzLM4GCe9cPb%-A9zsJ-EJay(krPXOiEDFWso^=X6e|xo zvD6p6u=W`_v6MNc%!#GUe8`EV%zXI&8cSh}h!a@c$wS01T$;DRxXyR>9GPDj_h?du zKAlxo>0Z3S!_(K8v1tG3I0j$2`<*@bymGKhlYf(w8&7)uxiQW);c6pZ2#uSDsYdu; zPlfp>{{N+{r=pmW{QXJ#<*&cQ_}4M^Ss$yv;_HyV1~s4>ZMOVXt0C4yp7H%PMPjZK z-=i7@(bnIin6DE`s767u9`Y}LS^Y*))Cy!4-_mMaa&qz+_94k$=)_zvXq5?wf0IIF z^}H%u=rsGX9V}xXkQc~Ybg-ireqbMvqzRH4Kowvg;5~#0+=bp7ES_>_3l<|Uusa)DnKYBCc zgRhWN6IqjyH9o*;?YpqIW0SV|HBACnG|gO@YQ^ddmlB8DkoqLd8DzYoEiub==fcE) zw}z5%9Krf`JP;kF4D0t|KT;PD(2fiX3yltqj1aUoMg$w9LL+($+L=PbLQSE@=pWlg z86u*4MMi}iOrenx%nlWNcRkw+md)LmRL=VVAw!=;z+}{8%x@Hv*Q7S~4vlCTW*AHj zVq1dZpb0ZXM;oK-H#3AA^-+d!rpTyzAyg4o#cE&{`2b^tNiZpDwO~!PPgV#@($uUI=A|g$p zy#@<|xapi4ICAXs-S^Nh3i$GSY(?qZR-Z2#DQw@?08Qf%G7n2?x_ii>JOb{nATo7L)n zNYMYP5B|GSi`|wjmSj*G%vOnvnyu>W;bf#`{~ha2Q|8^>gmRRu?C^&&4$HIAlHhRN z-jX0@G3$q!YZZhltx&I4)3in|66qAQM5|QLN|jKpl&aM-xlJI(1#<J=8 zzgSmyg|&9vIezArM1;p|fi!PTMx%~Wn)O?g&$nLQGG)eWUiceIJrPH^e3~Buu zwxZ&#chlIOvhU<<-kQ8&ohwz!oudA#WW8-H>x2daAG{na>xHJqnBAXSK5p+bJ*xJM zyZ7&wcPKO|?pH-x(uv$^v+QLHZrB? z3?Fho!Q2FcfI*f%EHX06=0k5CeW-tOa`FfEAsGz3GZSi=FlI*0q!5`!-p3aDlYQ9^ zma-4Zu(PCAOh``7%_8lROb|TShjz&&tu-gqgnj9&9%*u_`af9eNf#1Ym^s5XZB=c3 zHG#S|KHVjFFST4DlgdPDS}av5rDBOjNlR&=P9;?;wcRCBr9miGDrmV;LCYn=o(8E% zCYLFLg}p>dS}bo98s0B#aPP>7?$Ykk?qZQt)?K9Nr4TBDBtgC8V%jJ*D3x?CsXW*y z4N^#gg6N*zWeTB0q|i%frBtm|YjtWJtr3aT5~W5CobH2&U1Cm075OSDFCMyXx%b^r^K3r2z z+LS&e!5PggtR4-4Q`I{yZwnm=CK(Yk{n{U|&vGP~SOF14@|MM5{ggSeXleH2M1shE zG9oMt5u^}7lB2_Ku}!oChxc0@O6e{K!m%`;W6K31Y2+t@nN;ppa^{hJF*6W6`H5iN zVuB|>bDlfLpP3A&zF0~w|A>Jk_-LNlD!wv>Sfrh<;0HIbAGLdkz)Tlf9bxq^PWf87 z1IDY6LPQHru!RDwWx^UTBtjrBr0M|*`R~?TTm1SkzBJ1GuHDN=9evFj@Bm8$5+GQt z2Gz8jo*Xpo*mdO)jzGHWtK>L=&eQ|-e@axWA^Qpca{O1CW!xHa2uETl zIX;|)b?i?&m-1(Fa&lhQPLsf@I-cZe7h4;l znhfp80LC7$Mt6$J%f85+RQ-*-k&i8qoBgyMJ1J^-Q@mRmf!j9yJpU&Euf5%{>@gt?o> zN?)Ar{Lw5iX_gvOdS5)A-WOk{`9&1WK}+3kGkp6J96HUM*=hbFt5UPl`(p9*l4@YT z$W`L&Y=u-1TYxNiaSNIUcN9g|P%U=6K3jvmLWQwa@=0XVJdPhOQInY$JA;XKUgGeB z%srJnCc(wBxz3(QwFAa5cM~IAWj}`t<_Pvx)N=TQ__}cRBSeetv4fpR7H)1y#v=yQdAVnb?y@vW|kO%`-Gy}vt)2{4sNn_QOt$Mm?F#;v^T<5hl<+Q zPu#(Fwmu%m__ub4zM+Q{h20-O+0#rc_P=$SfDjEn> ziB{lJx;?m*?F=pzx`S(_AaJeP8{BGyfm`i<;9k!J9^yfeOZp>tDu+XE?@^Ga=~&3C zoe24S;-EmlbSTtv78Gea4~lhI2qn5KhEm;^LD`^{P`>vX5cFLSRU$V*_2@0|-N0>7 zXUI+v4&4KikqID=-3JZEAArV_4}p5x5zx;(4t{e_Lh}Wuq4nak&|%qm=(6%6bYFWJ zf;U`+kofBmzV!w~?YIR4_S}IV67RzB{r6$?!3Qw@$Rmh5{sd;6dJ1#TK7&OUUcj|6-uL zQ2!eOmA@%a1+_pG_64dK>VIpq{+H_lE)`M#gTb|02)NZ`^}jx=|1zTgqrpox4)W?I zLVlkqP#|Ci6lyu!tp6PsL5c5|K56~kM z8U1fK;Q%z5d>GWzj)H!cS^rxsJPmD#{;#?SJy`t@Mg8A)6QXwBf`N?w-(&QD%%O)c z;piiXJ3;jSxmo`&Tj~F8R{tO5=>PwFJ^2>xgiCRtTuTGxRvsw#%0PKk2P#)BpgijX zl}7@UmjbAKjeshk0;-T6s3Lwq6>9-h$u{6prX#qN`yN~>8o;%(5nQWVcH6{2JL`)Kkfq2@V!8fN(9B&{m^LQL1+?p7&Oz5LbF*X zz<=H;XtD4Nv|VxzIxfEe->2VViQ!0+5$BPY=hcEc0&E1_JDXq0?5WBfpXjd@Sb!CR8x-*b+OKJ4|U9Eh7A8@M~0dCg5UxvPaB;;-! z3tp=6kXMJke;O39`2Gb@tkcg>0)2mv6;L*KHB<;$2bID$LY01-p*rjP>;AACgu~GH zCxLwIerPzs?EBTzj)8vG3GkbH3YsrG18o+cgAU6sK$lgQp!?b@U&j91ZbJW^x0$j3 zki>g1j2ZhsgmFh6!Q|slVEU=2Fz4)ZSa|*gEV=X&R$h4p>#o0s_*=ig_B+4A?)z^b z>ET;Al%xMS_U~J;7cPZ?aw!JPxZjmC?$1>ZC>;0akz0-Xb>?w@(dNv!pDNV>T*`I< zmkK?=1;_nWL%_90IJnj75AOA1z(X_`a!G#zPsIqx-DnKtX*v$Pw38s8&s50oKLZN3 zm;;5|%!i^K7D4eYOQ2NuJLTVp9r!s z`#?D!eg9!lO+5kbTJegB99 z4r1o_qz)Rfd~B~GtXhc`4_PG62|_oVD0tSu+b{^H;?^)hoev5<;Z`! z%Y_{RLK?&p>P<<-DS_kGN|U#yi`_e*yMmvY^~rD71cRt^Ez zYG&Pct79_jzJ%5N2BRT&<8hEjJ<+231yJ`}&4VKC7D2I2OQ1y8f`H?*{FJx67{)xw)z?753 z_rI|C{#93B!TKA&K>V#=Vf)?RV2@Soe=JA;zXCbVp&{+I#DVU+RRzkuCRqGF(fzzl zfXc50svyz*); z-7g=y0R-XkP^I4%sBS{t-vxD0_lG4ix-T1h02)j{-9HMdX~#h~>m>NjJq>{i&qAxk z=b_!Qi_mH1CFr*13iRA?4SL1jfIeGqLgbFyY}|hjeoVR#!w)=!F^3<)_@j>@?!;4= ze(D)B?q6`>B`moFcD{e-J)HM{3;Q4a4o9B6gA>o*r-S!7@|t#e&EZ+*@GK8d81plJ zzZg(1rM|@cjP8F2ln45KF_?9~Ay9dnvbxX4{EY5*0Lr5K!K~j82e+F2!L3dVe9`?8 z;Mrgd>-SOjr?R>~Cw1NLztu+f>)Yu5;Z$|M>zXTISbq(AZMp${w%mk>?YALn*BuzR z_a6L^bRUN8e+Z)wJ%VvZG46i~(@s5O;{N&PU%<~70hV8R1*@;Uh7C7pJL~!A#p*sg*JsiFNr>j5qmjo?~26kJjFzl#F5Is?GH{t)nx424|sk*w~Ihdk=ZX5IIj z2?d(ZfkLepK#}%8L$S_Fp+vV8P|C0x${N=}h0u*42;U5h?#Jwa?*{LNIzR3O;qXL| zjNT9Ou?L~SL{|5wJM#ONozneLtnN=b{uHL3dIq!3JcoH0_g}<0zgMv8>T6hc;}_U; z>sQ!z=Qr4O?~R@BKl9>`Z0NTf-N<^~_?CH`8z?F-P*edh&+``t%B3_=uH}Jps|?H< zpGR$=a@7aQlLjic0w^zUpz^7JDxe3dkUvmGS^!n7El?#pf=ijM;8M;2E){!$Yvn%R zT0H{XzKaI8Is?I7_yc&*!yuP@6nHj_h1^XhKpssTJ9>T(U0Ik4~JZe(csx= z9OP~~5xlfhAg|91$R98p3bvdNh1)KIq8*n&@$Z*I$?mJ5bkJHT*Lwq0>>Cf2BDX@- z=H(Dt$NF-h@~~t5d|IFi_ySe9IZ#Dg168~OP^G$nOW7XaQXv>zDuse;)o^gF(I4Du z$AEjiA>b|^3LdhNkV`oRa(j=5JgUjyrJDx%d}l)bz`0Pc)dDEo?q?|4X(<%%YL55I z7}r60Hr}t?e;ZUY?SPtt%<+ExVM!n!wI5_-4}x;SVepPS22H1(0PU<(;4}9O1S~iU zEq^`_ZI@nzjw>(2_iL^|kM-9ec;gKS*?beiw%vw)JMVyL&s`Xla36l$_kfw}8-4gO zj63=SCZ8~m_nDagJjVP0OE15&@%yOzINy)CK8X+C!hy%X!;z=vIlt2{{($rF2V8!g zqyIVjpOt!?p1Q5#eF}5>N&w|j1}N7G=6K(&I#BMlf%345_w#rIl~)Z^emzhH{eddX z#``5Y0aY5~{hmy`?^3xhxK@h#`h5us*+R?+s9a@%b3fY~T6G1wuDuF|4cEaKe*;3d+=B4!x1s;8yAZSY9t=sm4@37qgpmgy zLF|#oFyYt}^F06Q=P>*13z&cYrBk}U|MBl|_{lps{_H)Rdhwo#`!Buv6R!U9AxHkx zC8Oz)>zsE|=5;QhnE8FOw#UxzyOaa7&u7>6aDG3R2q;gP+2?yT0khBd0jf|SP({$^ zw+E_Z7jP-l9bC!>gNq;pT&u7?zg7&m)f)`%qMyJ+I)d@}o+9*C1%)4d}i3CiLBQ z8zOg-c>lg7-p8^2*dtG1;_;_2<>WJ%ar!yTIs1ZHfana${s!XukqQzIN##)*>yd}=ZnogKX*g;;`4p2e0~Sk=l5WJJ{jjn zfm`hX;ATC}Zx9QfjVC}JRowrvcOBqSRBQX&P4Ans$!@Y`&g{(W%8sxpdtu@AR-nzA|eV(5dmqUAkqoF_ZHfaUPws6|2eZWo5>~{g5_TCy(iCe z9(=f5^*Hm+*WT}arSLYNNRjtXkfPg7kz%~P{ja3N9^Xi&-rq_oedkNIXTO)w3yUR( z-(3GU3FrDPd~*G^pYN^o zYM=k-(}kXTUz78z{XUHS139JA;k+{GSU$l&!R5c>o1xA1Vji8^$rOFoDu}O zB?!upAowN;LYqnu)wB872ka`koZhe6$pL$A?mQ>yM>~8vVU5r1&~>{U0R9%S$EhwPlhpXr<(qXL`R# z|2JZ-T;n&BXL_5YyFS?>-92%ebl;RrsjWKGo3%&j@9md*%{wUdS$Ih5_rnoQfA56c z-&1@0YOX(K<2h;Emh%#>^CxV-C{0o7{F!?%OSAWTcs=TD{|6lNm3$v_`|ykp_xW+J zPp$W5>|gf8eHr_?r84$U7F;Fo|G(w^|94>SpYYENlAz99Uzz87bA8d%-wXaf2|{j_ zAgs9r;de?9dA9`7_j~$#@efOo_^1S??vgI$2}x(`E9sEZ-_z#$c&6vg^~Xx#t;b6d z_kJctJvd2<=`c--?KDG*e-!uieQSJ-`z1ASpFY%s`iFiDE;FjX?BxPSa>DXCX=Z_obx4{~o$8}Do5ev^Xx+VTFeulGrh z`-}Hl+^?;P`wwg2-c#da+~fY<*BJK)bL3qA`=ix$KA!FUbh?h1f1y~)yyThj;XePq z>{7YjS95+9`)7*?{t5p7PW%V@;NBns`1JMlj06F^B;!6v>FbAL9#2aNB3elhb*}_5 zxUc_^1PPwLKGdl3Uy$@ljgN63*!UeO=;q;4NHgs`5BK&aNzu5s=Lh%H_40h*`hM#6 z2G#d3sr9`w$5(NWd-`&oUjz5m@m|Kg!sDBN*t5SU_xF5qeLUCq^!SQu#C)~Shi80; zay`91T<_zYAIE)+{d2|Tco83_r&{Y)wr)K&mXW<;$B}a2{mT;ze=}^_Vo2+-k#FW$GC4dW2e;d z%iU6!*?SeR5d`lR&sFQ=uUYtMN3J8EA~o#W&Be)?{yW}dIcd$q5x!M)nw z!??$MKAh|0xjwG*F|WrH^OZhdZmD!MuS_~#1N-GN_AizY{1g2D)!&hZ;JzWfJvH8I zaj(wt>%hIt-@$qQcqszs`P%wk)7QiOeCxB{OVkUCHQb$53SU>5_w_Ju zAJ_NlJWtN^agBe*)7SUnUg7hoxjwG*)&9OV=AS4ilTH<0mCh7im9mP;rSrw*GWMk_ z73BT@%isUM8c+WTe?Oe(-ze_!9KWufeqFfN#(PhFA1L$os_Xmez8>c5PM2bFKVRO_ zQRaAF&K~CJd$_tTFK=h9bn__Ro*u64>&fxIKU|Zq=QG0_zV56i$KT}X<$sKO`EpOs z!`+c z|Id71{s`{1vpluFSN3%L)%UocFXLX}?#Mej)pNYa`zAAou9D+>IXhdWdnRQ{4@}!3wV$z5dicxT(j&9?O5Ntv!PQe^{ZBrze!YjY zbG=xv_VV%kUd{2B9?zGSpY-hNVa`70?y0jp%-{3P^VN9o#l26iuZ{V**1u3vE?p|A zkmEkaeh$Gu!T%q^|BdwZaDCrMnc+8+AWYNO^YV2ucgLrnk9qq1s|siDZAqTrH+@eE zxn0ZK!5n>suZL%NxRsI{baK;x33-RYw`4! z9;;Q?W1gP6ms4k5zspnCtNlD}tj9Y#-WeW_^~(Gn$9i>+hiCYBUk~r>cF3us$9q@;qdLFu?U~=>{T#fL>*ehzdwIB*-$LEZ(bV<|X9sij%$Tbub95I;^hw3JGkF~hvSf5oS^LDhc9@q9eB+ss{wy%fld*3|28uvAGecza$TUIIMmsLsyR|)fzB#{Jio_#d6>6@cXBar2k+#nyqz`@L@RrFUXH%X*YoM= z;TfK`wpX}%a*p3_ie%`h?&Hmtl6uXl-pP64hiZPVCe~Ni^_o3AdH3Ga!}put%ey!l zo{rDFUY*;i`}bIL5AWk(Ztm>;*|PRltzMp={Jus%56|u|mdLyvJj1Jz<73{gW|pV+ z^s902>FeWoug&#+V}AZs5B3WQ{t5p5;{Qf!d%TZ}dAfdjdfpjcH)VFOa&~ZzukPij z`*815e|D+N*;9M@YEKXM^VK>2 znIcb5AJ_NZJYT8tRovq`ALsgN%*VJdDzB7^%d5!y@Av)xU;Q?y99^up=O@RPIXh~O zuX1+qUXBk}4|8<2Ilh;h|FRSysyjLFNI|mR7S`Os{9Me-pCD;tz437z>lKckth1%` z@ZVUW^zcc4l`Ym{)WAI%ak_x7YUZ)Hq)s z<}p_f^K`ZOJ?8DGn6HlY)w4Vt>+vif*Y|j)r^P+a^=0g9V!n#~k_v)@HO)~%*EZGU89Gm*7JDx&O4_+ zU8wZ#)q38eyQ9tRcWQHcf0$P|I~emSXAjTs)mX3Mz82<{c<&eYB%!Yg`a~t_#R!Ix-nlfw^#OVH2ZdV$KK1oS22IsvuCer zYhldS)wjpHceQ$WiryaX;mNsu&h_JbeVDH|)+@a|+~3pY`Z(XmF(2c;R5>L6{jYrk z)Y+XzOTSKTF6QXfRoAOCdzF)~&hE53crQtM0qbhw-CNwlA1=u~eC_^STdbw)>E+4! zy)w6xckN$XT&<_4?Av;3`s$gTtfw_~yLV3S(b20L^O%q4yJM^N?X?_StfQxL@oLQH zRW6=S|4!YttuL>~d$(%eUY*nXtLJ@ld*3);C+15l>df)|;a$;U@LyMc zulDehrJDJ@wui6Xy;ZgKG&}cNKE9v)UY^@|^LvGxhxN0&edX!j_fa&p)S6z_(8Rjg zSVvFM)ES5OY&~;&m4A=9IsP#3(ahCi{;V`=Lv0N$t)51Wp8XNbzs>V%YShT82?u*uMzzJSL5F| zzmHSq_1d`|ThF{+*|#^emuk)JYH;x}Cs){Rk zYK+IdJDG#4%;}Eidv#ONqYE7?d=40J#MNdoC&c%B99!(vYpQH5gt_BU`NO=*!NqZ2?crg}t6G_|Zq`qDzwT5WdU@5_Ie52j<{rn9P zd^Oj{m{)O+u}|>--;(>QnAdn@`Q5Yk;p57C_N^s|QuQ_JpV{GETd%eT?&HZ?`B+2G z!^M^Lbd))LotT$*ZZw!za(it(k9X{_jt0iOI-gfH@$sGw-l?sri(RdkrRrjuDo8`yOVXY z6m3j3#^an`jq!M&uEFzoWxoc;_ZzC=ZxHX^7_abj)Oy};ZjXEUn!4Uo+t-hKjQ>iK z|NjSl{{kfNV*YybIzM_ke<-*2Xl7RD_KI$vzj|KTt=0DJu^ztcd#89`JvdGEyz}^8 zVI6#|jfwp)Ucg$|vgehmhwH0@U7gpf{d!M~&-U)ndSZO_E}hD+$2&D@PG57U#>2Vu zSHr7#mv?I#(z9y--nFy&+IaVH^XiK6-g^E9Fpu+mHQuYZ$Ji(M|EJ?$?c4is@8zAF z`g(Y`NFJSR%*VUY9-g9;i}&m>2Uq3gU=J*9-yVBmU|nowR)@85G5=Q9!dG_bJ-Rs_ z9v;@j#TxjSZ!gd0=V8wq&ukuZ?QtzHYvpMDZnT~kK0F*X#%t?%bsq2Ax5Ivy>h7#> z4Uc^=e0z3(2i~>$d_(YFtAFPg?{&v{U(EaBzVg~N`H=kopY{#V&gT{HOL;zD7Z=Z; zPVSA)>ah3SNM*-P(Z|KUcUTYq5$tz~J@2s3t;hEYbMCP|rl{fJseV`3=gz~o_vmD) zb2{Hz9_wRy^Llx=#^Y^=`}Nq%9&2UP)V;1*$NOsG`D)|foZh#FSL3@nhgW;_b>h9g z`rU_TTivg#*`rtM_u6>(%;&W6y-vLQ^zVH0df%G9F3kJGebu#V@*(*DC*U8~@;>^w z-dbMqyRBCfU(3nqD1pk!QFXCp-#c}$R`t8Y9@o{Jd%Ry4-45^4V;-Jo&qnsQ#rheT zd+XD)_xRd+ye+G1d4+55C$GnId3A?Y_P3Ee?L56Z+1IL$7+<|ZS3R54_U+W1-nWKt z@a~+N&ujYg^8TEnk>!t9FZb&dZoS%{SMiSP_UhUl&*p059p~}tkz;!u@%@kD-5=(0 z%vW)*{z~xw@4&yB*JBQz8sqV79>@6l^7@+_me<$Vsr5gb$J&_M**wB zkNfp_pAPTP`u6U8W4!8X;q|W6#CWadCHAkY%gaX9y_4s1K03F)yYcD_z6Rcv-5DI; z>*Uw@>(yN+m&bEB{TwRrc&_B!JGRk?PruHWm*=l$WmR*b&^%oF_oD==SIjK><- z+B#nGy$BE`2vof6<=!3E&G;j|JIuvV_;RPMXSAKOa6+esm@O~qF+FG&Q zmtW_d!~MmvUE$zijH?IZ+TT%o_TFDLG5&gSUW@r_*RFXFiT{7qw?M_a+N;Mic`e^o z@v-*h-pP8HsxBVp;b?uV6`vbz9gp>~WDjdx$7^@zKa@QCbQ7w5F1$RPZ#_Dg+B#n0 z;m90&WhU=CpX>6~9;w@$eNwM^2PEuSiM?tu*H-P-%N!hyKlS*n=jD0)lpWQ+^eX>G z*15!o*kJed7C#;9bSO7We936a4>C{QH~7YdJV}sdnGak4BDWZ(h#nRgE0qoF4b; zz1}v}y?W0soks(+x>xVnpRLiWmwhWeKGkxse&RNHrv`Ivv2PvL$f(J|sX33weY?7H zdaoxn_NP>4@v5$^){|PRbEo#~w7WB&9)0z0Y(w!b_vw^eUgpkgd3B1`rP`;%I9IV= z9oscn_uw|aMtGcJgqh7`P z8&Y5f-k}>Nd3CP6d$W_Iy7@PMu21i+;c=gSmC~nQds?pHM{mfIYj|}(Ufz{e{3z8O z8h<@It!BN-v(xHdXf>|titk>$E1Gty&W-Qfz2TgBO>Dn`JpP}Kb&Pp`xNhk06Z~uO zkMWM{ci%ml2I4*9E(!h=-ZgwXta+($Y~{I}vL}zUd-5vZZsf1k8d(1LcJmKfzU3cMk8%ul=j=F7M0Lk9XhtUG2|n`E~04ySfWo=PXXquB=(R*Usf@@@xFZcJJ)X zXE)~0%-I{7zyA}lUe`C_e+U0J+MoB?nG0*-<428ob{;=!|1)^3bE)*}WdDllex1s# zO~Bf=So^B)yn5?*>_1&^{XXBLW38RZshU@KCRZz;*XY|dG@q|gziV}>vF3%MO^-FI zaeux(ylZ=PYVBTEF0bv=-AHW5_|_gzZ1?QG|LGa~Us$WFG5xQ|{Fw1=~bOOc`qLK z=f72VWDm_NDRV)vEovd51h&ma50B?>tWJ*U21u#aFrp z-v;~7X#D0>-zi_s%6e<}I&%3x8{7Xt-2#qV-Dvhm-p4L@|nN+%j5q}tZQTQ zANlM0F!xXT-~Kc4uf}$jYomBl)!2)rq}p5?%%4}eHpLJ}vg5 z^OMUfJ{5J&;@$Qy}PkBYWHIv4*hD6pFH-RtHGh)?%9)5^=`0M^|uFA4|#=O zr})gNx))fl_J(?Of530Xp9X!M^LC$}yoz^i4)0sD*Ttv#yLof|z61XxJm2WQ%YO#` z>x%6-msk4ob^23a4>}+HTG@lHgXD?rk4d0<(AA}7DeKz#XkYl%yYbzTTP39r{kdA# zPNQ*!`Sa~(?DE64Ia*Wu;#be?{hyG_tDbWH_TkiBIPJ_`&gK7t*xpdAdwH?AMputd z4(|`c4f*{W#nykqpa19KUybd!ZpS(|b;WihfnKfKQ$7CD-rYFtFWp*#Xsw=|A0Dmj zGppT)9VK}+>J?AW%GZ>WuAJ=LYY`)fwAQs2;K& zO)F1q_vl@yp3!(0wys=W?$aqAGyeMWz8srceY$$MbiR4Kcm8&R{kgj0x)sqNEH1|x} zR$JF;Ei zoj9K!U4!(gaUOp?t=hUc^GBr)8QVS>NPV9=kW*p_vq9e*c;8`y?V6Xo_uXST`f-ut#_2q&Z}qM?%~$> zV!a`GJi+>(%gg^&-;}=&|MlhZzPqnJ+#0oJZ;%H4Yf^xB_jQD#VWsT8YV(saK znY9ncSYIda#^71IXE$bh?cEp+x26VnR?(xbs~_)Mv*Z0&*;DFxp6oA!HLS2Mt*UQ< zb*O#kZ+PCW>Qkz_?rI+IJAd=bmG?7$yWu>(o|^sNf%ShCKK|SPIe!fQIFHAAbq(>5 z#8}UeJbUh{mW_{IoxlE^7VGu!YW|s6&y_INam}v9y1MIL7uKq(DG-Z{Hgn^KMI4aWKcMYn2+ zr1gbYb9i44UAq~6c3$h!vGLi7QRnP`M_m6av99gM*W%3nEBbSP0_*=y9Q?2Tv*9{F zIsnk?eun^kB?RlrAQXxr{PzNgtjvSx@*IdM%Z8ZJ%U~#xz)*Y%3`G~gPh&_hsA z0E7ewLRd&3M1%%HWLO|XhXsKlJP2aLgCIU42ofTKz!(_}iIKsO6d4Srs9-Qh1w(RF zFr-8WgGD*k=wPr#hk!lCbEudQ`Jk8(pbehmFoej5F@yjU8v?9yxY$tdamIxLuN)yR z6omLt5akmFVtg35@JR>*x8|fKgh8q?ydl^3{OCaW@1TPKd;)Y37@&io06hc;>LElq zp@Dh`3-X-sAieiQ1nD6nSPzk!6BQibJ<-7d-V+lNP~#Xv0&1MtkbvqF8US&c6CWDr zIbnf-PlC@eh6Q>~cpw^>Nc~5EOH7Kp{oGTUAYMhdaYqd^s#WlaDsNxzFm0#!JKXU`8 zAwT%;^1Z9BL1kqXlvh;2)ru-8E3bkpS1Y09Y9$nxRYFl&B@~ubLP2RIQauarZ6Njc<}ltWH&Ib1F-2dStWE)`vc3q@Dq zeBo6%S9le&@F}vnS!fuS~;ikufoavGWndyFO$#l{4zM6R|dzFb2P6^K1cG( z;7G3L9L_ECoTmdQn3S7*)0_So|;B0OQoXIJHQ#mDYBD(~RXBWe<%f)cyaxom1is6t{ z3-j?1dae+*XwK$yh2FF2T!Hs&%qpmHHe?mZ$M269@7JJ8e(n`eR#pxrSFXx;&n+y4 z%lO{8SKwSu37p9;fs>a@;J8!_N2Ovoe5n`?UMzpZuFB6I z;~l^A@^i;`zfcT&mFJy#wh%U-DFpnC<>!l^tMW|oeerYjJVVc2zdxE^>yC2{=Xvkv zxmPZHc`(;=mjgNQ`TiW3zCQ=1?azU!`*L8)zHFGhFB>N9^_+=&vth!XZ1`-?W%v}I z-Iw8$-Iw9x-IrlJKD#9NXqN=zcKJ{Lf5-R#-ShsJS5!i2SveGyT!q|%Qn;kN_a`nD z!{G}>un*ros}Q!GErd;{3*om@1+eyH0sMTT09N5=jPHCb9~K|Yhei0lNAh5v@;v7p z^4t|a!&wJ&VdepR&)n)e%J<8G$$PUk_sWJ(_hftT^U?0hFmBgn_;A-{7`sz~4|Ym0 z2A>@gjNT!^`#U5Uwfz!|+ zIWTQ+4ot!C?VfCyusd6RS3ll$89u_#Q@tyGhTHKolmOomKfiaksdv02-|y|M_-+^B z%`F$bcN@6r0=&NI0=%~AJiNN`JiM~;JPg=y9$wyX9$s314qjY;?gs9E6$*+<;c{LH zWL++X;}?tI;JHHBb*2Eeo+^M1C-Y(L@qGB{XdWy(k_U?q=fc86xiIfwF3dTQ1GD$% zz?b`SV8-5Tn7%g~rtHavNxQS*GmOn$mtp+Q%P?-I1Y>tdFlM{wz9Y4F-KyMEeunst z7v<;Yz2n9U@*REe_xx|?p#N{@;JJ0@;MsLq@XW7S(C^nQc>32Y=)3l;-}?hJhW-H1 z3=(wT=>ROc+XBo%02lQWL-NA_LPN?TnneTbiufXCZ!ADw%!asv1c1wNlZ@+<01}LM zm{yqqmRS2(qAc&5-Bc_4bZd9ZW2hI}Xy0t@LAQ21j&$}GjwwtVM=%A<2kb6p5cLT2 z8rPURPJP96ajtd#A3Dz@@~in_h-KgA=Ls87FZLuqUks!tu`Pw4T+QjN>@?v8_sjG( zwp<8JokeGGoy7&IyXdF5#bWogD*AIS!IhlubR6e~xN_4wINZ)+*Gm}#9bY+HxeGI< zIsE?zK=2U&w1qo$H|YTe>M8k6c|v7ZUu+|B7A z?y6Acewl8`brWZ%&Y}l%zlxpGcF`+1m&=r1MOSgtT)F8^$3xC2_e&Wa96viBaaUyw zbO`(c_k>3E-Cu-G0PrMC(M{3=oYonG^q~NQg4%@djRaT}zBJk#3(zFygSg!Z0H4LJ zG+Imm_ZughUPuP$m9#5)g$3XlTZ-*V+h^vFsU_4%s<&kW`ieHwnb!SuS0;uDvj6Pp z$F^fbsJodLxlC>_^(FJX^A7$5Rm3#n|4(RwTC#Ka+r(k$UDhOYacw{w*^xqPcOV_i z6$-}DZaT{Ott%_Nitg@AaQDk_I(~I_bLVAr za4`I0_xMHw9bQvFKLxl%)vqj!JrmHP|tS zna%{;iyW)jayFFe&1~Z)Ip3t#GP|A2_!Cq-+m~M{G(o-DQ~X|W82XOwBIw*3Q7*e# znB@+nGq_vCwyDkOSGYN1K-$an3eN1>m^O?4o%_%=IejA3rp8Pd)d?xBnCX&VfbWIsoAHfT_V7LjgVyZ5eqw3Lq}( z6$2LsaK(_8u*L|`B7sgiWdazGIMF;g1)!@b*7BhhV7INrw$A>Ac_VcbYK5M*RH9oQ z;f~$b7{@|pHWO;Ea;#_dTo~1l*~`szzDaFh4mnrxCn+=gEdR4`6MCA>;tz=LqVL(R zLV$ZCDrUC|v)w`TEnIW4ed_J>Aa0%*oc1#P3ukd{PMbvsIX`htP2WvF>cz@JKdRkTAZBvGChIYE4ELYMIYwwbQ#lk)5y8hbveC? ze#M#Wem=wLIOu%RU7XRuk-@KaPpbF*M}Poe8cc)L0I*xPUVmN>zy);=*%ksYDNG;v zNhHAVsN*qn3;;U~;qh$}0OrSUGTM>=W*YmM-ZBFWPkJD^GzH)-+al{&>v!f!R9|YG zy}xBMx}CP5{nmYS3Ui!}w6Atp+0jfm)rv85$Jw{2&zWdvKj$ebhbeQ8=Wj+gv(NLx zgm=+E_6R>p+=y1PcL`s(g6JZ4uF%JQJDtWwiTc!+>1Vl@#d)c-=&!j$V$ZbQbQX7) zi%qYh1?P{higc%Ah%?zeFr$OxlC!TnxRL+wUo&V1W&k)0@w#0AFhcJL*r*4%9Q0&J zXb1p=&yV;u0$@OtJ7#_izz2qmI4KSwJ-#Gii4kCg@vWpDCV=v!ZsvB$02MZ5?PFPF zE~iYC-u9xUJ)Mi})IsYYM~>qw6m4(8lrvKt5!Clg8LMO8rsCOrt{-=bdYV1r1pa2U znC;G=;)kOmb`!r>*o0i1DC`%5=tsFR!Ufmu^ib}cFv9&Z{Uz62w586Xf8jn6*QM^J z4{_(km(r@}0t25PvSp`|0MpC_)qG8 zQvZ|spVa@P{wMW6ssBm+Px}9)|4;h=r2kL)|D^v<`v0W=Pv-w*{!ixrWd2X)|78A8 z=Ko~=Pxya?|3~_HJ? zAEN(5^#6$dAJP9K`hP_KkLdpq{Xe4rNA!P*{x8x0CHlWa|Ci|h68&GI|4a1$iT*#) z|0nwYME{@Y{}cUxqW@3)e~AAN@&6(IKg9os`2P_9AL9Q*{QrpmAMyVq{(r>(kNE!) z|G(?|-xB{n;{Qkd|A_w|@&6(kNE!)|3BjY zNBsYY{~z)HBmRHH|Bv|p5&u8p|401)i2on)|0Di?#Q%@@{}KN`;{Qkd|A_w|@&6(kNE!)|3BjYNBsYY{~z)HBmRHH|Bv|p5&u8p z|401)i2on)|0Di?#Q%@@{}KN`;{Qkd|A_w|@&6(kNE!)|3BjYNBsYY{~z)HBmRHH|Bv|p5&u8p|401)i2on)|0Di?#Q%@@{}KN` z;{Qkd|A_w|@&6(kNE$!au;SybAaC;MEw7V z{~z)HBmRHH|Bv|p5&u8p|401)i2on)|0Di?#Q%@@{}KN`;{Qkd|A_w|@&6(kNE!)|3BjYNBsYY{~z)HBmRHH|Bv|p5&u8p|401) zi2on)|0Di?#Q%@@{}KN`;{Qkd|A_w|@&6( zkNE!)|3BjYNBsYY{~z)HBmRHH|Bv|p5&u8p|401)i2on)|0Di?#Q%@@{}KN`;{Qkd z|A_w|@&6(kNE%nh5mmLx-WGA@j6F9ULe3B z{o^6Oh5_skUJ(%%4KOj{$(T8@0E=QijoY38uq5tz;${%BQwBAYb(pKl*i2x zRHXeCYcoq4x&?h;pJH{8p2qdBb{Mr zEtBJ%%y&YS%wzmeVIpe6uHpxYd(ks&k}%8_PETiF656_Nr?<0Pg){E{^zW=g9F{tT zZp;l4-D&ITXSm~HR$2}{him0poNja!azDD-Wi)s6b<*zb89f@L|8La;Jg++!&^#F6 ze88H}9uWZRLyb}UVgT-lI&bJ54-gdFDdFx!0Cz%EQnm@8*m#e*WeUI{YnV0J+S`09 zrK5EA=9XS)3))0Yw?0At=y;XhYHR7($2`Dnw*#}8{gmxYbzy$w49;cLEM}6k2Oo|u zF-`e4LTBV;zvS;0C!wdhE2w)I8Z z)8_uvM^qoGrDYO&iN1_xSU;zmF{d4wws#yYSf1TsXP6e;6s`;P7SqH@@yn=8CYFy7 z!chYIE*~LwMvt%sJms2%CbL}y#=Q^iV}BFYy2I&MP86R`y`65)eJYyM`qLkA*TlnV zQ|W!&3$Aa|*V7K?1=l?pIrIo;Q}@;kqeIV+bN6l3-0?Jj&24F1-~AgwZ}8~<7wQ3K z>aPU79SYDQq+i7AQ2_Tu=EZD}1!!;hJpNT9z|{DOiE~W=g~n#)Rw)4SrUfYvSpi1a zX4qb}_cu?Zu2BYbr)51Vpf}Sqtvl%9%wT4RZHZ$XyMx_jzk`{?b$32OO=BiFKjD{C zmzmc5I3WVv!v4g6A$CS@v2J0#YZ6++P8Hs9??b<{p(2|aPT$GBA|6P+oqm@)Eq%f$ZX9w`7# zO=nX2SOKQkezA?T4=~T9B9R5Pwroe>*iX;09-_xE!v{h6O7c0t3~bYY8Y5?arGE(~+;LqS}G=uC~E@8;eR52oHu zkK)dW6Vjfiw{wrUo=Bfco1HsdRK|MxWhd{RmXSjrcfRW88yOu<`F-xa4Y-0 zfVtP{;#W{dm}EXth(HWGmQNJBpr_e#-sPH%=CV%-qI(}Y$8Hxkx+7=@cazvZ^>(@! zH$$|gJx|Z#!dxfPrqbuRL9RvV>*-saC9eB3a_A|}JKZ}ojE-o2lDmJs?>_kPWo@h!dA_LifV>C5c1Q_LlH zG5aVrh&jlmIag2{m{rc_`A8JS-p@ZObU|&|CHy1eWHg2~3s1TBq4n(B!d>nNx{5t6 z9CP1J-^AS^zLWYq{UZ03n2|P>p3jB3a?;k*1>8W_n)Dp{E@z3WONP<$owK$3R6XCn zX3z}G0B{&0bejR-RegBCGCjbGATeZnFu;zm{t?3>0NO+qMZXdQ@U#Kqmc;>FiQAbl z+6eHN@vfxiCV*8*jm)-WfOWQV%Uzat&3mYP`+n;K77M)={cfLYZQ)qp7>M@UEX*FJ zmt((uG_#dG!aPP@Vpejuax1CZ*%{8?oRR1~_BMVM-v#}~e#L(+Oh#8(z3`>DA8}ky z;X79Z-IiM>Jn6ojex8dI%iPb??{huHNvTumFS#GYJJZ(FKXJjX(zG1#wO+-@6%dr5xV%o*c zNC0>-u8HxEB!CqOmy^1h0oqv;EuW;Y=Job}dWraT03Gp5dFi zGEr}~so-!|qVeoFVToI$e`T|TwyB-zLbkbBm^y^!xJlwyY2VPjxiYa|dM5oH*Vn~l z6wqd8u4_g{Tm$02sEgAB^wup5Fa!gv4;UM2hyeH`^i<@i7=ZAo#Rf|}z)piRAv_TP z5`Ihk*#xlMXfT&215C5-w@4Pz97X+LUt^24IMFyXh3aj!(|sJb(j#m|^el#E-m))n ze8Bc#1xjFE;4-=Qs8^VKolW=y)G{WDPY`UVh#A0#iQSQ#-NQ$_CZQ+UMnbGR6HQ@1 z6lS|C(RNl6?o1WwAntxqO6^Ry;O2=l(}vJPxOi9J^l#|x+-Mh@kx6Gb!`$Cy6ws@k z-P|`fs_*`4{C`{bydGe^ZgJp<5P*=NV`0N00osJOh~8iTSQ?!aH#7mj7T3u*KMCM+ z!aXK^GQjb~N0Ohl0F+w4w>Gw=n_E!5sAg2Wr8{!di%}ozV{{ZV!7MRD!Klc^&80Jlt>nAVy8kVCE>=|kv4+ys{`;~V-WXS92IMkf7(v!}apqXN1q zzs-HB-utWZf0b^J9$=_`Y0%@L0NKG@#9dJU$&oW+CdC3c4DI9ZFaorX@0d8)1n{FV z$Xt~SuqUZUiroruhpn5fb-nTvJ=)z89-?7It z9l1oONIlEk;Rd;K(}&O&XQ}J?jBn@>&erbYj7&O=pW&X;sDOT( zx25)K?Em?z@qa&5>f!?cnglq5-wFk26?!>hXcWM*NQdF)Sb!OZ4e>pU0B7T8C5|%z zTr)N?C#C>InLbWQw*qvw4YIYcH#NUR9ik*E$?^$WL4QI&Z5>Z{WjZsXZT%gOv(wq3 z_9W&}&gK-U7nyd>XZcao&rAycxNwjPW^@4)QX!Sc1{!Nkz9l;IlVKzlY85hmp+7MoE5GYGQOe5I`45`$;hOm`C0C1 z4YR zlMFB?>1^_+7Jw$UYu4Vj7Ur(hXsQd9Y#EHY(0kA`)>mo7EOUHdYwJj1!`NZ=5GICu zo^w&%m`YC1kD|V1PCC!=2dO-!JAYiTqYQQ-xL2o zf{*0*|GjRqex)8@M_^{~Js|+MhP@JTXCwd>)jp<+0brnEOk8O^02SZUI6D!bnK9X9 zGXqp49y7m~0uW-m-5gBS=FD(=wqrg! zm~~P2G2^+*-22pL%(KqB_(Rko#>TUP9VN2Ed9&C9J;Y}5HrHe{nr$s4yED;R_Df-b zy9!-lLA*azq*J+`Vo7Rex*zweI4^AoJ(qL2UQPdozQTRwa%W`Hk2y{5AL{x3HCE#P zF3`*IzpMVDeu5rgNYIJkVZi|7!)y^ZM*u`eeHYEg05miF8vAM-z`VHW2_209$XJ>f zZvyC-RAD-626)r9(PFmTYo19>w|{Q6S&pF*XtDiyYa!jk(F%>TopF50m>eVQU72z0 ze8x>JV+L@Q?E6$O+s^rh^APnQ8^e#~?dW~>W&TB>2U^YU;-3&FqYErA^mb*UNbW7+ zR(BN=xb4Dbw@A02ftF{xya^ z0MHo9VW1A60uJhj2Lg=MFAZ)T25@t5WWk8zx1?qbf^ zzjiEP-(v5h5}Co=F>V6Yk-5d$h(An?X0n}uf)V}9wB^qWZBY(0i$5&BgOb@|{*Y?{ zx`(}6c*T7Py~a)wf>U+$ELIY}Oy%jl>>c8LX>I8!?sG9HeE{8&3v?Y$pFpqXM!9-r zET#S0{{ey#0B{%Bb?0>e59)>mtOx>lH=up!ig19=pUsyYW$zZAaxXwb*%?B)`w&{nmI_l-b@XNSVX;jbPxIVzF)+O?J%Hm}N74t-ySZ;& z&t*)YyEtigUcLAC#Q#q4qOO%5V2*BZV0;Mv4vY-DFA_is%Z+-^0Pslkrr6dA0GY8- z#@0yy-zLPE7MTHtB?cv@Speo(pR%5?UN!|&9HpaHr6i$as1LGO1Lz+d>5g>UUV0<5 zgh{rKax7#6xh%Vp8PAP$-cLQwJnfvqPo%zJQuyJ*5$YK84nI^(L`m!^eypo4YRk41 zI=kON@3Ef?Iqn7MXSP!KDD@C3W4nvDr|IaMxbU zId^u(1X{c2Rvg67V z0HnBU#uga&#@|dck^!Dcs!Bd$0m!w6+A?i9oz7L8mZArjbqO zFtGQtDfU&4-`VBdIeR*DfphWqQ-hcdPJ=L!`h{u7hlxk1N@f{vbS0u@Y>HrZw?(h9 zLxdmP@1RBONuguv0(6B?HV$N=vz90r=hOupP4%o0?FQskzi|DQ!?sx+zUro6D3(gq#(u@K0 z_s*x>?Hh1^5r)8A0BEgyNdKcA;Mahz!6hL8(?k13EQlr*p*7N0W}>OKR0_2zB?IZ{cM-DM=mU-pjwZHj`Vh08 zvD&|MtYH(m3wD~B$xU`XKt0P0bbiH8q82a=|DkY{l9>1T(P9$f*h~B*S3A_5y;tb! zeg{opzYz-E3($5pM4XU%7=>{C#MWs#`d)6Q7?94>Wru@S`=*deKs4ilBbAFSKn-F`;4TJ<4GXr0;OV(Kp$4(!-em#%>?x z=*_0H7wrb78TTRg0QCqH<_zU0QInZn&J+AmYAn3A|W2_PtGh3PXh0Am|zS(lgb2r0ZH;8uxo=>zB&xMbJ4 z2E{)${!8$*4nTq*^>+jUJg0v&I6oBNNYLzX{2dq*{%G_O1Hkm?uVZZq0PADFm38oM zOE4y_Hvz1(bV^yBJi}CCGuY-^?n!x_dXpMx+hb{mqUqPE1J*G5J4Y0~)b<@cgV8as z+HZ68W}R#lwbEhXUg0`ZiOf#!q;mpwKl7$@IlqG%%oz9&ga9;`>B+w!Hb#4y`Fu}T zcT~w-<}R=5|ShuI0jeW`oUyX<-4VrmIm!L|@5r6ti<*)PSO=}qbGT(ZlW z(WL?LKTNkv2XM2lWx&Hh09^u1p`F43OrgCZe~bng5qXoL6Mp`N0r9db(Jzvdo6FFne=FM$a)*iFs-OAkQ9LZ0lUSLX`J%k<9SIk5FJz@ab%Y4n>?rMwz*)pDX zcSnuc2ZaUhk?1LQme4A70h-K~3FlJxpgrs(;-s_^l*FwOd!;AQFLSrKxQwQB9+&C* zs^0sn@xP7Ho`K$4NwC)`}!0mbnS{wp!OK|V-?;-&njo1}kW&r3DGe(|&jEVc!SegW2F%B`^ znhbC)adPrF3&2$C57yqc?@VXx_fcJ_jw!`dDcXq+SPr4Jj(LtF)*19B<|?zo_Ml@f z+m3s~e#tR{+wY8~nlYW7>-a9zn~Z^t6mA1}~ zg=}YTpuNB`nmguuh=nS}*6lNpx!`=dNtP{nhw? zvyRihsRwvJpfu?95P%M$SHk;60=yr|$ILJQ2!>DM?n?kT8TX#CNfLm~*v2%$3~(q> zNRGDvd}w{#y3o4Vw8I`lEw?|Ga)FwUQqf_{X4J=VoIY;-fc}_ylUZrI#nGQ#!49bD;A+g_*o1h1o^hE87mNV&6CO_b&;)RM zVsrE7$pC$(+qnbc^XW zK!Wc9AW1(#f3F_kLZCHxOAtVD=%eA!hU4#kVN};>fUz-5?CMy6E3vkOpArBjCNxXD zJqh58#8*tWnE^7btu6PZtTH*Mowh1VuauT3k2+{OX1SG~OfRHPT4Njx)1F>!+vX@^ zoXlYRt;|NY6B|PfWyWydaF0;GFs+@D{3NQFDRCa)cTzOlj$bGQp!?X*`H#iM=vnq6 z|E{YC8p$>m?sShrGuT1G7WV?Qm|Y`uP2GdGuwi0ZY6-f)J}S;mOQMb360v`S;$LI9 zPpy3Iw=M9~8Ve6yT$v4&m960FA>Vqo)}F+C=w?-5n1wIQGQ^ln4-* zusU(131Eb!EV*y;lcwpm_0|_HQu1w7D~hpwW(h~@P;=@7>ne1=V-4zI>q7TorZ^Jp z$7w5@#VodWcI;qnoRwPV7{m>BcBSGNi*q19p1Ols>1-veqn=}UK3UAACNMAa*F+Qg znfZy&ceO<4m>^-0`$-hTwig0ZN1@x;X~MMBx#$HpPq;H}3!2Y9DE^*y5ruPW#U1H^ z^~V1v<@!HN_q`54)Y$?IK>&Qf+K`}dfVCl9WRGZo`y;^saRAANg!mLA!1lOxM!gB( zSV9NWIWxdUi`C+^JZ;LdjkPVY<|IE!t)w>ECs=Mm572j_u~rG4b(GURZKLT`%xEUT zZgdQ0*RYH2;~oFUnVnWj&z$G(=etrjG2@*kVLa8BN#;w0b<{-WIsSy0ORZy8@dsTd zl+T0-FS%PH8~d2>ySoqSz%CG`q>e(P*kJLFw7F<2`-}+bTab-ADV|Edh$e8)x}MIc z@BSj(3ILs;qpnH^@V4%1z=Od6cLrV!of`qrIjmz;hyh?>RBG(hc!0*SqZ8gt1V~G0 zlaycvIAH8+eihHbtp_a4tMpd4nrP{ZF4Fzz53Lk^FVl$WW&4#j zvE5mty`$p{yNp|6-{+XknRy$ZtOB)d}<%`DQgg$rj0^-*;mElw7Cdz=futFThLhUWmlh!i>Q&) z=q|1I{*B-c0O$>)b#3(kR{hSv_8|c0gQCMoeWsj$9R8jI$Y91PnCR;v4JskHs##!&B$1uy8 zCv3U&6Ko}$Xdmuq%)RJbVh>=-xZ%8wx{F!q>@9So1~bk04&ukuV&*fxoogL+p2^|U z+<8UkHz;wnU@ZO5s{+AGDF}E-p?Rg`&C5;-K`os4v&bm65Rpo#2kU zR%Kj7Upu?GdpGj`{Biv61pw<|m7M>q)87>|Gz6e!$l~x>kpTM0pqN7jfTJ-}<3=R_ zEROrixF`w0WPHw4X$Clz_)>B&3&4}sp;nu1fN8AVPH|Le@@i@Y8jGe_CZJ~=9UbGX z9q5mkpPAmaQu=8&fJ?HEaoo(k>Rf6MWq#*I@;2&jW{tCt(2aVBY0h^NKc;?UCh{F! z>nMrI<1^fOl%2g-SnD>SPV84g*VLA19D7ZGv_5DX+e=)UHVVaa+r&51=c4}HJ+8(X zThMv#tZQ`x?vLaD5CGtHCjCQtfF1!q1jU5_*g|K8XG8+r8<`pXgaP1UOp7=}0>FE5 zEsO^eas6j7Jt+6Tj+$4d0NiagS)a7NW_rfH%>IzQJb5nlB)UXRwY-f&93$wDtvAt+ zFfEzhwnMa&eV$FSKj$c5H*i1Na~z8~nzvDnndhB_d^hSD#=!3rKBi_c{rL6bI%*g5 zGr!K2N9ox(;Tg9HHDR9?%H1u|Gwd2+Vrn1s6`LZqOdEx=*muN=w7IAWS19gI--2dx zLtXvqeg6^QF(!`xxc@m&*F=Al9w0VwSx`zaz)PVW!(ABvk+(*7i~;y0=A+mZaRA|Q z;}WJC0bWcfO?=1%aM^fOo`cw|Lo7WlgG?>#MYdvVRq}W$mkOb#Tb@Eg>3--FtA&na zI7c7bYI-j-lQG*La7H=^#Jn&_XNEj1h6bLG(0XG^MB?h7Hm^I2GCBJ1lYJbD_lLb;Ls72JQn0y z`lO>0^|AGJtYpqO%yvEVHXF?@v)|3!%(dg})G+2Ex6t`GwUqhDIg$UEI>jXMy@lVX zK=w)gHZhNKu=9B2GNG1iJ|E_8i8`@Ogb&<(P(Su{!I(M<4PjRc-=)q))7Vh4UD_73 ziR~$dr#B@2QF8njU^BGQ0qlZj^?L#UGW08gUcqy~pt7)UaUUpbRaAEaKyFk*Y`=Jb zwEt)9J-?(Xy7%wh6MJTQdb)c$cjZ$jb(lbAL_kD9avE|LNdg8kk|c}~L6oF`5+w%_ z1SE?fL6MB)43Y#S3;3*_`^&o5@5Rl-`46sDb@r!fhpU_=+`oGO#%H(l*7O5ZLth3R zLET@8^u{I8M?qj#wih=>TUali$SUGD_&M=5PbQDJE=wxQ$PjTz&XCpVUt*}bQ~iY& zDpd36ge_OrXfGNKScncn^D54ls%$ciD8g!KfGw@NF{L z+!QU~w`3i&eylkc>J;;OtUqt9-ZiJ^OyDckj^U2EOXICB|Ksx(^S>-yf>{;-x8+vC zZ%F`;5?ZG&PXlP3dORc94&bnj&06LJ*pRi%b2~XmEm8l|yxM8E;p~mn)CjuGdv@wKi{Da3-`&Lz{_iik!aqt^rK?_R|BJ%|LrZC5>rwD(vsF# zD`o(srln`j$^vMYdC^fO8{khzEw}0gxR`y``8btD*43 zoaX#j_5E=B-2OaYON$tJ6ZkG|Rpk3;>Sx9LZwO6``TxlBNz$VffZ@qMrc_A|~>Zh#X`uP5vS81GK^Pm1?Hd9McoD4zczcsBbC47_DlKrKXd@8)^B6T?lDo53Hy#}4AOxCIyJ7|imtNTsDD#(BJM`i=|wk$NR zg@>`}a=vjjGN0{}kBlMFJuF#mU^-%V*$e7Cb5Sh7`>ILdW;q3Xwc0K0$!*RvwUgn$ za{Ke4+MAJg^Cs}}I*kVM|M&XG)yMfi6F#u?OaK_0a6Jj90vt=JpWe|1Fg9a`eS!m^ zdsYQkO*cRzSE1)sAHZ&Rj(Rcrt3ATL+~(Y+oekg0?azy} zK9RxCp&vnqV*cAK*NW?3T4J5#btwRAQ>&%l$%y~=J?x4DpikCC=XcovhU<=dpci1G zd$BJm5Pt{qqd@%-z$5fK3gWVUpf%}rGCA0Z1^8Un0_F4BA}U_SCwWMw$TTuQoRW&V zf+Q-_)Nb0VbguNuKYE z>mUbFC8VGN{~zQtG7C=$HemDFH?$=Ra!pWP6>sBnm7hfhX)QjJ?d3{xUer)OP;1iG z%02aWZ5Q34OxLhMnP0xFpEeq@YVx%HojHv4mMeJ@(o5TuuOLePxFV>uYrE1~DIsN%%bz*qLGvc2KW-U}5VZjO0xu;@Oaw?xC``_?0{oRU zC9PAu4?L|+CUyXPn)$Qi9~ZzMjuY7fJph61e>~}a01L_w{t(#VJBkUu8sfoW^fNjL zXQ6%!^Re_Ya`XOz^VxU`-=%C9)rePoEZfMvWT-IIerhdxN^DRUYCq7jN?tQceZlQhj3H%PD*g{vU%87JxL%>V%Jz0Dew5o6;r?;A~2(jHQ_XUuFcd zS~&r#WK}P&1E#o;$M6Bvc7N-u8UUz(>V~?8cKZ<7gS}V=x6u;pCUKytYyw}#uAmqB zzv2Zk8*k@%(k82sSHyA2)xG3<@t)d5t3?9}(dO%`Xm4eu_KA_fb}2RVhGtpjkcV_0 zZp+Hb5(Y#@uy(S)aWyiBeIz#+eWTmh3Ylj98@<5J%Vy?;SR!ZYcjikujCWUqVQX#$ zen9;qd@T1_`k(SYXxV20XlNOjI5Rn32kmIxpAN9xy4qGU3m`Rff@7x(V3H%ny~6|W zdUkK`2Yvve6Ium zPI|@^-~U#iUr|?l)Hj_J(B{+(MwpdfWiE7?eJF;AYv?ncD$B@ku@pbcW@-)ctr)7# z(Do6mN8CnGo-^P3YTR~WjmvPq%9jI7a0|zBiZ-zvGH?s z4!b1lnayI`7*S`N4`LTsD>W&+Fei~ORNn~?$YtEC{Sz*iSAqYmt&RNl4E_J*e}Bu1 z2>@>pc>jYFJjc8M@3{~8ng#$o-W7r0LjYUQ zY19Xw@+~3tXjd8ymS9ePn`NV0Y@GN&Tt}0*O}-%K;;`5$TdOt5VlhIUtL-OJDXpa& zb?9fxN$q!IHNB&Z)W0=tEGk{bN8xg;rEG5uh_q!N$|c5&(UEMG{MXnPox`rm24>6H zHYU`$=A+mJ)?T%S7w07MWop0hySa=b?cZ?0bLfA{|0nR1C6EAcEg?0zP71(_smIa= zX8=sjNU{Hx1@MpkeP_jNfS;YS+NdwFgH5RUKGFc>u4BXp-fQbVuu(f56M@_XQG;#q3tJ0%1yPMUWdM^Ow_s=tLg7b zS-qrbV}7|;PY;)4FUwNK^>ADEmK{lpEhFFWF0?gMzi)1~+v`~kWb+8Mgy>q<;g59bFnSX-7$J!l)- z!uPSiP#2z~v=j62eO^N{S(Ee;w`FPd0J$J0sok}@w6;=4+o-Rm^OfD&B*VrM528co><(zLmclgQDBmei<;Wu?s9&?Ph)*OXQW*pUs*% zjDMu&gx$}GfBgUWKOQ!~CjhX@e~FTf|BLB5`Tfa53@GJ`jLf0H%194Z;?%yhN`dr<)&&9BfK=ooRGui0WwAzp?;&*r4JOU9o1ITuw0?}4I8U3U($CQ<=8v&7k#YR zmW`IuXcZpGX3O?Q>BtvH)xVJ)vhJz%`3A`C)22AJQN##}@Ag^=IzQ0;rNX(lMi$1AVefc>q?s7I+rN z@4=xHfu4a5zEAKG^nPe}AVj0IG+q{ZfgNIbbS~P>m^jIreeMt*ZR!!0VB&)W}rOydhW2&rRd=Tl(YRh59i_s$1NB(SV zh|Xj)rPHh%+rW;=j^>TnQ6|)1%tbkO*!yaQaKGGV>3_<9n`MP1-Urntv1KyA#Kfqz zUpl}5>k!)^JHSR;GsinFfM$;A*~2^#PxyQ5`T@?mKlC>a0#rdx^fv15bC8#bo$L?H zr`?%{eINRO?c#6pc}U?Ul#tQ_FW@!gXn6}uaZ@f+`;l>Cyn08wOzwyhTGXgd8z|eg z%f@^}j5l zZD6Xp%ltCuC>x@_6z-LKhox&r!)5ZGrT;1a%M{1IHI}rbvMB&3k^*VNG5~%}>y`N^ z3*byoM8Jf%T zL{!X2)%XkrWJ~-zA0^%D-?)w_74HKeYsE2jo_?7q$`Ea=QJ;=bf_f`+K0T>?r&TO_!HQliy_J?d?E{@G)9`$>(Y0d`LRt<%NxkuR+ zbxJrP?+)vxHHwUVhW@Ag9|uh>u>^p+3Eh*rqyTtRW~Cj;09c!TCNmg6_uD^mF3tv+ z9`*M&v3Y5mDh;JY*}z^?X&B`mWjodB;iTu# z|CIkXV1*?;0bozU#-w}607p{Br@1oX|NW}WE?EFy*(*6uxd8e&JGr-e0J7YByo3Az zZ+R~JKM4Z7fvTg=(7V1eWFRR?js|wqA{J(ALSM0qyofJEWq56+l+p^X=Y?{zyp79= zCvv^opUf8Ds0sRIlCD(LN*E1jC*^>4(^x<^D4q4S<`bGO@9E>iGCnVD42o1|ZRE#B z`DkbMu{>a`ix#mTrDE2O&1AP^U-N2g11qf_GNr`AnNPY0-yQ93i%9_Qb;j>S%ZEa$B3^=^Q!*@ry!eE@gd(c(G4 zn&{(Dm(Va@HaUPZ@bSQWD%n1=HdMs=^6_jDVtkj#60PwZZkLCYJD7@P@^3kSd?4zm z0qqL8EY7K|^ak{0rMK4FSU@K#p!>}y^n&uCe$tdIC{vB);p(i4tYwUkbY@-U7^7;m zh>ep6jBU}GY@-xrv)BgqK=v~q#g4Md>M?W8GveP<{*Q*0#r&UVu_x@e031y`l=OKL zz@Ailnn(lCGS=GsnE($nJ&s8ZfHjUWu1VPdRkLpw=f5j^e7;hCfUnTb;E}*6-+0m! zC!mvoC_6!i;q{?gtO_4R7oll5L_P@g=deP%qNWn^2uhACM+c}TZ~tFum0H~t8BW&>n9V@0HheIzFu^`bM` z6uH;f72UvANSE0>c9i`gTblQui+>DWf_NAF9LTT$d<%~)kwk!9mW4?@;(ahlSFKwz z0QOtg+Nx&(oU-LRVlIHnj?1pYZh!*U%O1@KU=6(!um=u%Rs0^ZggOK!ka^??Vxa?c zC|gSEqdsgY|A^g2SJ@F^5%1w9{IRlHd4!kq599&aiKGdedQttEG!~zzPCY=UiWJQ- zI@9A~kha%YNQrVo8)aUlt(ErrD`7XAs_fHUk$iSsk;b)1ZRV8ijGoa>tel)-+>8!o zUF8*{C^m^LmsL$OXA%1!$$tRwLNfq}!dB>D0XPnCBs@w4=$DX`vfc`ioH8&yJriI~ zdS&~12S7{vC})}*poVjZyNMUzgX|xR=fQi1dImoY9`m-s7{7-)2KJH;R1y)&WS5!7 z8lXu`7bEy>qWt(Li zvuw^JM${eV?Pu!$5C6--6PRoP2wHrJ_mcpsBrZu!Ne57^rmdwNprb9#VQ~SZI=tD` z12EXNu(M3JI&!}8V>F))miLTTW3|}|S%<<&1?JS8p{%JY!hLfmv7747aOJ%Jt^dFL zuV(qj67PSoCY?_Pn3Zg%)z1JZm)d+qXwogvg7#+ZnI3A&e&O4ABXo%oWuS5wb>U^?dN~3g<$uVt>Jwa5 z^irkXh0GM`S`}j}`A2-E{c8ki1I5(0nVsoO<$HZfcp<%`P-95s8dYUSqkPoO>dVE( z+Gsv|Pd+ee#cH$FvW|Hv)`>lli_NcdhO*YG9v=7{`VlmSw;!dG| z0a~QUv@g>E=B3xnJYxq4*^fFpx#IluxL@-CjLL54jrsx7J!Aa7Ab=0u2vtVcyc=-> z*^0XdD$tT_BQ-)**+8!F#%LegD!vzYQ3IYVYse9JGoLA&s!y;X%B!QaE~H58RDajE zk)xui_N5V|QRSr8)a*>(RXXY{ypaB){HfmwU!yiz);Jn*vodm!(KVXS+RLAezoNC- zc$sYuk9A`E<%)Gm8o;vjy|$k+ z0S;x>bJTJIEOvOaySf36y1IFO^Tz9+>wP!<05?NVf@g!byx-t%cq!@`@Y5x-!!W{BmTv^ALI4^Q7{Jv0l){A^Ooh7_`PRDQjK{0OI>W;Yz3H@-ods$-UpgF zHmkY=psmC0a%9Kvy_4Ksist~vdH4AMUPiTp?*#68{Uiqch#5 z9MY~B3+X>fb^UAe8g+&4@{}F0i z0QN#*!j?pUS_wZS$LF9ICVSI2*#PRKpUE8L0C=2P+WAd3zyn7G_ahHLFuSR@iyz?M zpgmYJ*w<^rdr=kS4s<7X$!`2Z@M}7q9i|S{nEl4f^7-f&c1vs(xj2WX%9?T}{*aH6 zb<|XHjJwn>T05ePvFexl67rU?YVR2L$x1Oyqh@(}U)fG zoTuBAm=TNGScdFrEQm^0LH=Nrk5yprO1pV7)`;zqz0Gks&(i;t|9`v{ z0Q`xyQs<`u>`2|4kzfZ9wlA|5Isrb z2ja%q6Ievn(Hy!uc#*pJFU*PFWwpgiVgb6vhAI}BhgvbveHHWG~AbdsGQe3MHbToN=ZYDo~Lfv*O(o( zv8r;Tkr$I}u*^1h$11R0a)9|sP9yfR3gIrf&(i;t{~pT@3&4k#QHk#)1Jq3FZ5@{m z;7r?WOV0ujnPVJZy8u3PT+E*30m#m-QM~SdxWDxG2?A^l-3pCDL%aj zYF5svz*5y;OnYu4Hc9OgPRje=`k(TDIFzwmu>d@>98UZ^8Q`VlOV(@Y04LJa%y|80 zb>?BmIv2nhhvHu20qBuE*xT0+kmOn8FA4&j2xXwL=soW!oJsOYAaI40V3Ms3dRQ;s zhr7@;wn8|Sg~-qUQU=LWViq}Iu>VpJpk_PJDxK> zfVJ*g{*3{E??MAZNobU}8=i}M<4|BXxl9|SBE<`C2e-knw<=6XUh8SwIaXT|Z~`rQMbH^abH1bgA+{e=l;L zK2!>fQc)Yz$c>iamr1<^s zx0G(y5mtblbY>f511Ocrv(g;^$g#$`&;`)Y)!2^7^mYosvc$^P&FKJ9tJ~Jt z4p72YDXXm$pnldr&T?*mmd=md<-GvT;0k{y|0T~`=$B9+INQGvZ^Y%18r(#FrhD<* zp~dtvJ5OIhmDp8Yo^L>3vI}CBF!7)4fKp11!Xv02l?1$3Lx^mE~^G(q`PUmlr2t1JKNwWFKqmr5n$ zx9C-xDMuTvW7g;3|57Mz0oVrF34Id*+zAzu6)V7t$y3r=+W^+3y`D)O00T3(IFhmf zK5=Zy9_|4cN0AK%}^>{$NZc?L`}{ zgL!~V6WcX^IE@|`W%Og=0!o$H`qD^O+C{M&wWAa0CZ(aVJGz+$?-Xl|21qm z&(i;t|EHm+1>gzHNvIdke_z87Fy z_RBsRpMMFC4CaOY@*F}*_#&F?$HYsg5+hiF&S9NcuTYR};hT6hRK$*nw#r6yiCt5^ zl3`qt50ul@QFt`JCpT(`@L~RzdPk=Oi}UK&MhDVPG}Y>wQ^_o`U9*Pc^}-7J?r<87 zDa-U(kpenE@fy{lUFmM6xv@1mfg(A_Xdc^4Uz3TZHRmebD~FoDKU4ox{wG`JTL8LP zN+$lB1aK+QW%Z{6OtrSM^|b?hXUla2TmaHhAv@m#FwnKWcn+?oyIgVq6Arx^GSDqg z0v?3F#q<1i$P7A;n!&f|T?V{&s5B#Dps0>!vC0aP8&N8c%Agv??fG}Iq*jEN^HOR@ z{Sf|_FH@Tsl)Ng!TC&-Jd?sdS>&(r7m&)xgmLx=wl3m>lg& z?ea52#3s;J<#}UMY%~2z)-i|VT%}AsX?D#0-|PQh{%e+<7J!|WqC}P)_kS2{ZJrL$ zB5kE@njN4Zv%8~|3!t~-^XzIKfL*Q|o{&F&|7+y81OZBhI)_T2J02VU7%#&M{7uO+ zI*o>d1L$Lx%=?52m=wcAbu^DvQ<&U@GI_2fY8b!HSIDwj5njd1s-5*iI7zHfn;DeU z6**d}*@27~bF_`-G;&N}eN^}Wk;+89StO0Vt)v?yT0nnNY8hWfyHc0@!cbxpXdQXU z_$juTej^*0!=6L`Q~v(|4K3eV0A5bmlo-GN_D}9;U6lr~G;NIS-^{rGX9>qAPJlv3 zT6WwAv%jmCr-~1tvHOItRsbL)bU650=)UJR%Ed`|q5lO^nXV;~U~{^L^=ExU20Oy{ z^Xh0kyD8pQHlceARnP%XmKIH)_c!}w1=K>b&zBu89VXB!iU6j8huGwuP=xc(9sGuYDT-#b4oj7XLJHJ5(Utl%Ra5hvl6PwU!HcGL` z2rkPj$s4i=kL0W59rZBY#UrXiXCzB}r81)fsVCC3O~y1bTJ+Ysn+M2FaY|FdX*5Hr zqhAUa(Avs+eQl&Gov0wAVRQn$p|m#+MK{xYxy*Ry8S(Ea|GUHZV*VFeW>|(5=ReLR zewP^cy-BwkR)AS)A7x-0zofa zJ(X}1G%&ct|1GIS-a$FRbF>U|lm4N1Sxp{fHP9{AQgr5Ioii&8dVgFULjmSD=Mw@ z2jQ-?m9kpj8ksI<0U!W_;Baw1nfNFfpl{;o z)Eemkt5QGDIGqXbOU4iO_&IQ^{S)WmY=FCtGR6I1UkBRweg1(Sgvy2H2kQA>#)bHg z(DFbPQkr(f7lM?2%9_!up%ZinKgv3zs_b=9No+@-vX_;;3c-6=hTJN~)oG3*9#K{M!CX#ii0N9_@JTXMBP5n5;nx`Zf{i6AF zvQpbfi8Z5MIm7rm_ALE&KmZViAE2rQ;0z2(c$f$g=?*4_-=f{BLI4lr`T8@LkqQ*IqZk zBWL4c|Lc(Zci+eWz@*@Y;E$mZo>|C;U&0Oj2eF%`(UpO-WHOu0{tW&~7xH9rJye&i z60?-fXf9i;te4x-Bi2&>q*DAU-zSf2-S8M*L$w-<@IL;7I^VdAJwn%-n1VDB<28G@ zkW3QE`o8ceazYHyXGfNkm~vaM7ClKuDHV*LqgML2@}bc@mQSn7%SKvGGrB>(ZJv0B z{TN@ia-vZC#w;ZL#3rppxQP59a&#V9PW~0s z^#_rYq=AxU^od&O3ZD8^F6Io<^ou?OO9Wd}OIPAL;4#e}z$AE@1M zTfS3%rY*wLcu94heg*%*C#r84g1E#ZHNz|BCrO&} zjh-B}(pHMY7#hu|Ta*??)-&Rt0|H_oZ>y90q%JM? zL41@xD+8c|EzN$x9`A$w!|`2lA7ta~R&Icm*%dwYyZ}3bse#x1pL&j>WRw(a>Nm+j z%+Q)ZUHU7XgRcfPc8N`+H$&suS)RXb5cfeI44o~nCIGx*c|Ea5GJuj8PF)nAgGfD+UM~~Cn&Gv_ z{h*mW$(fxEFxW9OyPOBWAGqvm=ezIj75X@c0=s=%&;jHQg#!z45jl-s3icwLO(QuW zMjx{F>|tmP-N|S0CWx`mg-w}>+OWn-9eD|jXQ@(GCEm{3NQc%6-)G;;6#Y}IajTkQ ztiy%8r8>^|6A$N$Ro!%vr945~Y8H^Qyt&pp+?F7*N-Gr^NjeCjr$*F=!wn-0C0NN(4wl>TF_{~~myA*#1!3K`AaX-|o;jXFiIY8$r zcl`XH!i~pf}OQ?HjTyT%?25N~1qDbHvX4Fnz3Vuuav1FDLYC)Uv0{&0vE-fXd ziYBNEOH#aYCK}FuQ*O#j=tovV9#pkC5H#VvUYb%e1FkLKU2$ov!k z#Iv-Gri=W;duVTm3rIP!S1TE5OGb#7_0;G{a#n2DKZwpHU6m4sGxjX~Px(I=3=6XlqRS%8>y_4Gtqn& zk>9G9&?PojF3?o0@W15-y%lc38>{aapW<ytSr<|HS3R7VUi4MTUx!`tnEt*)107b)s!aNd*~u zqa(>$rMK~RY%ZxQuN(O}|9k!a%m4E*zydJ9awefxQrrjk&D5G{@pk~uWPFeb(8|_5 ztCSOgT%Z?H_z8nSp^M03$rblBGr_az-jPT&=i$4arP zK|eKkFP<0LN0GQJ9*16JsY*@R6n(({R7$C{(66k6EUjHacD_^A&{bTEmr%pYne+WLO%;>wgwC@j)WM_@pkWzgPi&v3`>gzyH2&OV0Y%0q|1R8R!0NfG*B) zZnqbpQuZY8n|^>xfpvkrV4}xBEl??R#PTX5xK<9u>8<>^ZvQrS>((;F)}#nr*Jb zM>x^en15oQ7_Pk;c9EvyvX&PqAk#$)Jt^9jJQOGNVbPJKuTsg#e&+uFfBC-`!j{Sw zfXWF*Vm$wOE-9GmvI1H@g#*qeRJ4KUd?$&=>;_%YxJ zBnFZ_4s;;2KX}Z?@mTx~$_-?ZLRyNv58gJdu~san?*;QB~~YE9E7vHLk^->OFl79>%+?pBU@#a=uMf%|G#Fu4vm$7vW;K zHZWX3+KP)>rAS+{K(x~B(UBxwIirtxM*Mrq|3=Uo8pZA0Ep06E{O=bDFC@AW0m8{^ zQ!bgdq)R%0_<~4cOA(FxbNEFUg`l*gP-~@`>dYVQMJ$; zffK&ZaSi-dC@(OTIH(_23y!33v*V;hNMnV(h&>4nW+lY0yeZnrl9U&fStyhLs&ti? zP<38SR#R0xfPW)PXsz)Ken*D&F?cJlt_F;C_$;5G&NBYQkN6q2z;qF}$kqNZ3rI{1 z)<%TelDcA_RwXi$3=^gG%;)0YQ~tjOivgeyykfD(-@&j16E7wK>`r(qCEf>FBPBQe zx40i#`p`_D17Kw42afJ8fDFeO*IGBgB){}6^$v2c4qgn*^k@3&pw_5+aGsywbGRp( z9oU0=Q41Lu>_LXGTeM{89(jQyzAy9+y}@4>x#%RFDt=RXAca*`7Rp(uK0BifRS%*; ztfFkACE_{kV_92|;osQ-sTzg&K4a=4V<1-e8|sVZG+d9bQID7#@kpMfeGop4f8uXz zbt4uc#YHVUN}hxN1K?Qkdl;WuCM5uju>6zQFa_XIVnyqmbb!WIkFA;=fY~Z!HI2Uq zVn6B3a|4`nbaI(omg+`mqwSjCK%x%SOnEo`?^y{nBsb z;6$#fGmJu9g7;I)ngj9ce3yF2oQ9`xO?yAQ5uf6twR(}$xQs~ALs1J^Cce-oJyZWv z{(lKi0N`i%$5JH`Ku_=_$9+({CBI!f2mf7Kjm+y=0Od2MJGQz2N;xrP=$6P6jLHlx9uNA<6#XFD$97Ark%&{ds!lL+Z~-5r#>_(8lOI%n zHwWUmJYO3Yo`x^;Nm`Z2M*M=X>5k}WJV$(~Pl#GbeI;V##GbYOPx-$bR0}|grA@-N zM1WffzT$UquBLpMe#r)qnbE*L!vRp)KEQb{8{o8~S@F6radq&H^aFGVj0`jk4tI|a z8K@R=`F=**@kYGBKLd}Xljxj48#04kV}pXJbO^63N`p_LUBRRrb}+`1})g4s{oJ0WP^d@s9BWyc75;&^9>IJu_4iH9~IRPP7ki z#|!=6;<5A_`fZ>ynaggnK|wnm!Cw)jL$hfUu}wJ;@-anOCG${Yc1ih0?SaOyMsl(? z3vFdf%^!LOg?0tx9+xKEp?7Pr}o1SlrZpk8H$6 z;%&Ws^fU&=YTSGd{ZIKn6dpqv3&59_J;n3S-lQcdO{@SltVhyE*#ItPG`5#^0DNSx z>-1*>oODoky#80@`rDJ_2WS|G1*QZ>xrc=Q2z?#$_nsjTk&=NLO+Vw-|3_B!kMiTb$ znEIuWgKO|2HQy}6L-@-;~VTb^xn=ietAE;4OzedypI8 zy3^(v=>-S}#`r(>zwd4w$_nKLeZH?z63$19{r&LQ}* zMj>v@KT<211Mvs^q~hwXT(42|K0y?N=(iM~s zPXZW`urc|Icpqf)z+yl6Z_>`$YG(nQv!yszJLA4c*j3&Q;PE&0-uFDnz89z%5dN3F zGeR3eYXZ{$F{*&ig%SfMo<>^YO@S5oAL^wYgSli58^it%enqPB<-BL;F*(ieiDRKc z+FOJrL33$>azWNYcj(8;Vzn1yEKQEkCZktaE!k0Di@LGVGHe`2W7uA~$asu?V1Bin z8N%mTM|GcB4immg9T6_Xy|~b-Mtb6B-T$M-Qvf|-D*z0D4wkqNW>ZVw#0kak0DPEw zJq_UN)G8ShGXWZAbhmGI0C??XoPD$7`{4KNp&o#`{(-)AzJIdI2LBG!4^;JD3e`dt zL(=~p`T?IuiGfDgq{GOjz#051E6-jJwj&Q%3;uU-FPYA#ik_izw2FA591DFxPl)xB zqU*Gm@{w8#ah51MYQ4~_td^{;Pe#4iI4O*^Xev7<=NQM)4yLQ6&By2;)?eLghHzQF zR~;EHhez>>TH{C|zQKRg0?}vb{}2BWd;+J6&p$s|;_slGvb>QL_d(m3bkI67?t_xH z)aK0sm}^50s|%o4)%?3A2ptVR1+u9{;WM=AV0b*K3lRpv+4{^1aQpI6l?Matoe ze52-x7UChItN!&f_5Wx8Gnfg<7Jxf|6B;MR-vR7Z{0>0bl!IxlYyg$hr(`k*z$cl< z9oB4s#*UTQ@%-mC=K@cPA7GpRf`3K;+&>08gyx2-dn+IXGpzcbphaXWNeaxvguTW# z2P%*=Y#e_*xS34lm&M<~7idFKQob3QPc2G7Vr}wb|+)lrhS+dyw%j4wP03SL2$sX+i zpsw8>haX^{|Dk_zAi@1huuo`3sD`%+ieUq5{$#w8{7RAoi?Cpw+2+8@Ez=wR_H$6|g=fLlHs((2M4kh=W1`z$ppaEdM;cm*8 zW`K!iCe>=w`(Lx{Lv$Yy`|77U;5EI!Qvf^N6_a{U8_;z01R1D>{9XP#z6z6xf5qc* z5M9HKCA*ZuO%YGXXXUM2NcvQ&71`%!y!9XMn|Hk3jQ;a}m0aa9=}_rSe{baWJ-5)Gn>8z9z} zKa#%T98wddiqeK3D>>Cp>Mfp>*Q(2XU4;&EvCpa<7rvA4_;zVB_9|oiQv=m-8O5b_ z3--Wml?Gaa^yzql@{tw_ZNeLsOWJ3lqF5#zzXpdFpGy zX3vO!7H}o&|5c!Na{uiVcnN*}-9%0zdyoK(u~o{r6o8&)hjp}7uYVTXNISqI8|n1v zdZ^AS?)n~pQSK?;sT9C@REcfHm?)EQkZX>rF+FifOzlt+u-a34z* zl^SweK2yG{e6HN$7t3?hqiQ!HRVniM{Kth7%1^$RH5oTk+WUz>H9SPQ;olwTfoChF zv^l})c#YCe8=Afe?^f1nB}2#Yapjh_KJ*CRP;vvWgay&2_6eK_7m9i6w}H{m#eaYE ze;pVL0CnJcvJZF)ipfLCJkXj#S^$n1_gV&~0bH*4ctw=06um! zolpPi$>S!Y5^O*EQ+_88Tv_%HVG=&aH%G(qF7Y#L<{scbrMNVeYa_ap+p?G6F3wgS zD1&%j(p1X#E8kw4uU7Ks3M(XCF?OhMTbky(qkSvn%MSnNffU?R9_sHA^y4-1ZGYwT zB79fQ*QiiqEGs>>%i}7})aiBqDi{9e?hm-b{{~IKIu)08m zu#mbAu-WjlQQwD|Ys$6)d}?Zt`l}7#jntX;unVA?eSC5bV4U*@&mIb31Ur)Xih1Da z%;j?PQGfb(ewa{~FUxZH39g7+pigjlX_;u@0^(q~nLL%7C^l4jBa3midL|HxJ`4Zf{ND`@0>Bs;kn{mwL>xEx zOaK96Nz0g2fKC?HmYLK+j5#a10p4+Z?N)T$t_qZs(S1;tu;tJr&u83uZZG#Xogu{V zA>k$VCEQoc6I-AIc(=4)vT(J;RHd;pmD?&VQF^LgJ|tC8m-q(p??^wXkNm&#zesI; zUud~PmVC|ECoohPDEIbP3hom2$dCP6dJ48H|Fr3=lN+x9-+`&{7lj`c8m| z{Y_V)N7uu>o814c=l0Mn3s8U>pxcP_UgC!H8~A~ASK%Ez1ear*;}haFu_d~VOUf%{ z3)fq$q?}TwaaYAlio-|o^`-aKV*g-%t)%&yYrpa?d7aN6$Q9blmHamX!-P%p4@vxH zC9bVaPr(VLkJd2c$4!;5wUePDJYI1Gx`!L%T}sOU9qEOg>dwG{$avgUeL1-DIq?6@ z|1DrG{E_qlN+)$6q+EkPsRKC4RKsdY1E5mR+s5emuN}KaxB-SZTX-r{02cR$R1pIp zAp?2?8NK^BhQG`WqH74{@ok|zTN95HD~m1BDSS#gBU!l?BCWJlrg1-rUnqlAiZ3bE zRM+?h^E0F~YKnG}|3iAqw@J$tD##Cf0|Uc^59Hzg8o^z{X*orUq^Dp`siLKYH2ktM zP8$^}!rhdgHE*~vp09)gOT)eJX=QkzQDi(Wq23BapLzfP;{O=LlJif);b5}=IVU)BPQTDfoeG*IrK7uurM3(V-$-RT-~M z3N^;Plpi%I+zT&J!hwz9@%W1JZs5&l#J|7!za&(F5&-ZOT!d4g_k9aV-3Mj7;WMMI z12n|c#`2>Dpr3V0S`!;UJsa=HbpkAN%yx}T_5o&l2;CP7HDV^w7O%q7+yZt8y+dd& zl;tY0v+;GDA+$ne#RBO^Y~^-~z2xT7H0~9tp28{=|G9Kg!Rlb%A@^2G_)hXo<%eoF zzg{2f>uaJ76MmJi`y7E?f<zWd3jB6|JYtuu$ zaC>E!riRDkF^VIw{<-+?Z~m{6+=HwFKY>06@hv#WdIo@F#B0X8CV(uX-!d>&uZOfs zd(RF~H_h$PeIc9JXC?Py!_01K1ZDONLYLVJ%qD6p_X}4am1mCfzY7n!57^zp6YRtd zQ4MU8nu>?f5^R!xmx{Ot_^w=AnZ>;#c2g>;*SL}5Nu`#rB)?Ovs&@4c;7MtfT0`5w zmz0q2ns$?aQ+nI?VIW;tES>Vb7AzJ{NtOI``g?*Tuk>F`Un{hdJzB@m8DWE5N4p*} zV@a8(4Gr_p#s4z^pe0y|4M`oqkIAx09iXMjJ;1doJ*_2e`aSr`R^S8}XFK6s>;@R@ zIOmR100Wr?^l{qiS&jxG6Z(?6!@bQ9;9h1Zp%(5aOkz`TJMju`h~C8gq&CuFv=0xH z9ZC_WiA4&j&f?w_H!3dQHEyk#rDpp}@(;whYOXebFDW^FKWiKKK2m?*$iPj0t#rZn zaxh)EE7kMc(u;)>^0)r8>F)`{WmW4CS}UBC+i2H9XM~8dP8$<8;{ggA$d5b=|9|uU z8UPsd)CZ_5(ZtX=sRLBiyi)gpHrvt~+X3#RCLABQ0H)dRxguVGz0NnhGxw7G_JoVDEm10DO^VciGYRgvNufNZuU`wFsoJlsTXFSnU$ z&VMcJ5GpVug*4G8PG&3M0%@Vt5Us{d9vbS+$7kA?{S(@Xh9SidEDp{_7kq z?NWPaCHZDjMPDc|kpD#b%J*AfBmaj~(!U~jlP@8E;UATrE{u?Qtwg9;I4U>R6@dgv zS*TSEuN4|853~#6Gr}^ZP2kgr8Rx4H0#l!X-vzGZ{9ifvAc_AltS83lI{0KKV_y?M z^OQ9fJ^#zL_O-p?0O)30;B4&%*yAvGbUoy$u4Yt_0jS6hVXGsDN8sjgN4PCi2Y#=x zUwDO?Ah^YlIGL@4%Sub7hG;!*EtggfBS|b$iqvvkA90t`%r~3+UaX-`_h08Y>3g-O zR+4Y6Z$JbF^2?;HzVm^N{2i&Re^u}%Ushi4ADx~qjFGWcGE^*_lACB7LhlKxvRJDW zUMnotQ=Hlb1Ow!z302mJrpOXf>x5RC|P{lwSoNm(m-FI zz(#(rbkkQ5yvcjz_WqRgkkD8@>HjsoSXeB_wRWNR1XAg#T@I}kN+{d3;o&pFP$d{B zeCGZCi~rT9{NERrC+nY8iDQJ91o(x_HvVA*_$VdQqU)eNwDe2+)CO=bO>^ivaHs7n zllzb-oa;TUD1dVe$0&^3a}I4lG4vIc$*<=>;VLpUg|2v-Foo6dyJCu1j3(mg(h%tg zx`98I1*IHUS*)eF)Y;rLagQSTu5%~F@@kR4Bp;Agsin1nd>hH{JEd*p7f2I)69PB+ zv(gh^^k<=vzoQn$1sdyxZRgZ;YmI~Rb@waR_n z1Mmjhmp)8+J(al@Xb$r=^#$LAAB`$8w}qE+AwQLU2fra^<6`s}cauhnM^HO)fQ;mF z+%~bS(nXogQPMi4je4DHC`HwtzLNYjX_`9OKak%oJyu(48~NK(3!gD?ljr1be9HqN zLErpp8!Q&;$pif1^!J3G@-hE|^tHkq*{^jEoe_@7O|`qv#ea~jgIFMu)WI(apMyr| zb8t(D9r`jvlIfqpWr~z4X}h?_Vmo!IcAI-&+^D`1kogUw({~|I ziN7qi_ss})=7Z91Uz7BSd>1L-FNN0dzepSX(?W;&e@On5N1ub$w*Yh<%<6Cq^f}n$ z5GF_Kb0Fk8;{Y?jI^$@ID-B?T#cb3407j*~pY(-kVgJpgfB)9>D(Vbnc7Mmd&8}h2 zdGDaM+$2;$pW(8FIA4?boF9S(T$XJiv=Zx!CIq;gv{h<~Dq=>?P(DK=@k!aP-auP% zZRN3=#XZ2w71H01%M#PnRBZ;=Qf#Zv(sprE#IMxCz-{h3QS_Y($h<*%+c!B_i7zLe z_BBrL%#V@k`K8cA{;G7`|8Zyy-&ZcHWrm-PUq240nAE{)0X%V#(EU)pA^RD1J=7G_ z1`9x0(=lr=8^8{$W}oc@_{gTZ?&}99tSOn053iNZ%1u!xJV`#Je1<;9xyrZd4RjUHP!9OAxUl$G zx#(}lH5Z$!qqP~_bn$C78ra1h5>?;fz-`VU4fl-+%6u*9s;^FZC4QRJ%+H28^Eaf^ z{>h<$`!R;vuE8KZ~m_mQbr{?YQ^Ex#}hD zLvFih^i2xv;s~jOuX6ApT*S{%c#}0cH9_oo_bmPklQ7ieNzIv zIJ4B%S1ov(t1SKObEM1sIH|J#OnN2$q_oZ7Hq@D~D2KJHp^5x{d8jt=x$rwcw|6ak z>I1Cn0O&qgdE~0(9^gFVaI?dz`vE>q)%}3gv@`ZUod6B(AGoqS03qiL&v3o|OK+uX zGB$SvHAR)t@7^+;%zw?5pfmYL!pFjE3?baW4{#B?UiejfLo%Z*yj{93H$(mKJo#tk zGxQ}cqwG^}pa*!K^0P0CD-_M@O@BMCo7i3*r+vsR)|JBpySOuA)OR#+n^U9-zKKDZ zZzkRMHB7I>FOfR=g-~bSEZ^`?4^8BU%2l-ZbKHM@3sCm~Y6-)W`42^mP3Aw%$)N_( zsO!I;F_qB!K$ckQjx>N7sVJ!jeAKqbX>kJ#a!hr<<^|Y5yJ?=byFKU_dy~27^>fp> zHK+vb;hPI}`PY~;{0y9hi`c2cK(V7}Mj~z`{UkL*t#Mo~p?rou!H;C5-b80`b0y7} z#bNO)#p!Ry)fPq7t$oOi5c{a}wO!mM@vvGhaEH4tX8V2*$b3|q;F}w)#J7{~`P!v- z=D(1-_=BN|JSE@uFL`GC)2IJ+-McX8;;;i?VY2^SnwUV0B=o-b>xSM2fJw%D(^V6| zE^`}eg;aoGYOyWH4zR&C)p6emaKN$NwbKoNnfECZ<#4w^ud>7GOWp}wRc<0%lKzlq zg-otCGeqcxAM-_Q0KXy5#AY-Amy&)Lo1xv8u{V!pGFjN76Fbq%DK?Xo|B8vpbBleP$jQV@Hb4q0kKW~ystuf zD=zu5|Ka?_|FNe&Knp-lzJER^Hjn_H6Uz)|^*q3kFi)@o@aEb{J)pDJpuL9^Ajh`C z`L-M2C90Koo%gy^Vb0Js=u)2V*>b29D^VY#CEQu`fGW=+VIaSj-p>``LR`#L=l{SB z#PiHXev&vtYQd^Pp7coG#|{+sNna`~`cY^tzo%9}6uu+3_H{yKae1Yhe*$WQM=7ed z8co0lm4(`2v10F6S?ox*bv$#HDuCH!-RqmX)(#M6KjbA_d9F(qu zRuK+Cv!oAXI@#X<@EW<-*i-j|G0w8+dZ_&@Hk-)-ke}AyvCgH}L-!?la3J+Mb&R^{ zY|AWX<};-|cC;S#MH00e|rSvTBsJO;QhpKX2rN;i*&w<|sMKJV#?7Ip=Q&!oO75e>^!!NCx$3a!9r8+Ti7zM?RYN_BY)JDX&f8n-M0Gp}bs3r7m=ch~)b~#(dlRy%uaWZuiE#SZ9A5zmegj?fv zbSD2Zo+K7CtN2OcCFuea5h_c$N(*+Xa91*@``E|AZ26SRqBvHSy}k;lDSk`YX z;;)pB+61%(d(`{dYIGg9Q6~isqlmagEgigtI*N+#PSC?`6esxhre|?cN%FUQF8qJ- zf8?nTkiG|~>tHP+ekJ!kodeM4V3(WvSi7VFjJ3|NRdE1>Z87I*7r;b&hTG=_m`9DE z{-o|YM=`%L+nBN*8SO`-kW3v%Re1~lkQ&DA5>5!~Xo{bM&0-^F3SUpGEL~tyg%oM2 z+=A^Xd?rm(_OU+;HRSdxi!i<{zv`=iD&q=Dp1%|7g~uzLHUZ7U$CZz?)#wn8so8%BC^uKPl9j%!W;r@fi$TfH7e-SV2Ld(M_jCi6C3){~0b zqOPn=eT(*UPtZfEBUdDR$giXSQ8PN*2yQX2Rtpy7C$64F+qW%!ixnRXccg0s}Jfm_HS4pxr^ zJlw0|admt!i<>M~@-=&A{QHalbsYed+yi_&sRM8wa+7-iSBS~v8WP}L!x3Z86o7{* zg_dg;fNv~&Q#pMfDlOe!*#S`5-r70V1+a@!ybV0}ohO;KbTRdk=M5A__i35R`W|0W)@!%W85~hx4tTi7xT|_1ki~_> zE$W!(ey$5lpfkXfl>Gznk0#yk)Ip0|;41*qS>4 z+@1}tA+8k1o77=%S&D_lNh4bN}cz zIp$E^D3V(5IzxA0`p{)PkC=+6B|Fx8oo&SZj$Wr)p^khD{s6TVy(OgK(lo;r;Kz76 z-GW9DvVlF6V$a&0VZnBtA`Y=)6C>>E&Gwu1V(g^hmvylHqD)Oo9IlhW)@z-I) z!Y28Qe;C_S5R`V>a`u4GRQW?Y#`^IJWo*ERdSkbmAAB}`{pfX2eGj@27J*II!G-C> z0uo>i@t)!16o3VWJEqsI03VsC)X_G8R@UP-pA(>0T1jUaH^4T}Fi!)o*>Q-n(kb)? zm&nNMHs&Qy8TK(zwo*6s3uX!bi97uT};Gj^SB(da=p_C?h4g=qU$27K0!Yrm>vQ1e;1c0A0A!F=jrtta z+eY3}m%MTMY*{Y12f*Pi?=7M%j>ptMdI!D1^(wQ7-Ne4+>C8Sv zm>cWON9p_=z8H;|^&Yq%nDqI`)a`OV^+N*+^_FChig zKFm~pm2^h^f;q-VDrOh8yDkMOH(cfq3+YIWG1!t2UfZ5T`AIZB1Va<(?UshkfS zV;A5i>XM)lWr;V`$^QZV7H|kECHEjiQZwj&K%so51>Us#>(wf=<`lX(* zXXy9dR@o(b090>tZzam&NTEm3d+80X*O=ApHufb?50>N8LOG`nu4>OZro5X*b&y+v+U14Iv zr}DdgmF*``N(rqFyHBXEtkZ_E9R5goC9s^WkMAlM0>{`-adY*v=feLN|6`~KbpfCo z97^uNRv=Jv4qzeK(Rd*R;G&UD>fuV3)2X^1Y$Wv!dlM&sWc%9L%&qT%?ePrvS{;|E z7%k8nU3pA7_83#-smE?cW6?No2%Y3^aP_Du=pjEtI6&P)X8aW{P1oYy$9u%-^jt1Y zydhnpFLNVAq~tMq{3G!zr4Q4Ge^ctAe!*>)v=#iNcpLaE|!_g%%qDv zIcy8`K0D6Kpx)eLRF4{pM)H051Jr3WL11ucx&&7V+r;VgyWCccq|5YPE?+Du=P?w& zNGw$PFm-uWI<9=dOyq}4W7I3mLH>qR#ph$aLUY;cufx_8evq&Dhp`_EA*HLfoP8p6 zQSNHT*b;b)GWj{;p9@fu|I0%osGZ#Z{%a1PEpde~k@`O1Gy`J<=wN)w)X5A0W{)+P z3ed*7EbU7hz^=4m_T#!gu(!VZTUVMRNLQoAdN#SnFfTKMsUpv}Y&ME9Zbv971V&0T;*Z@O1h%w-`4QFViJ?EOwUim_GbSaje{jS<3$*HdVf0 ze&lOOpk84f@hhdJs*jZfr`*CPK@JSYGC zb^e|MC;^=SpajfL&clv@rbHDIpgOUDe8~tfnp|zHV+QDM{L1`=6`-%_q&43LaL1YH zxM4Tgj=249$yL?yws*F7tvlrEMTO|oUbCB`M>56q4)<*OG|R9ZJPb1(jYs!9! zTCRupEOUT+z@PS(VcYPTSf$3XH~34q26dbrAgmU9Q(i>iQPNDR1ge0$$y=x<=v^FF zPEy0sZoEnXdKq$y@Gz+*}=>X_qTK@R1$UYRA4TmM%+Em7t9214&TEounC^Tr@ejI z@A$1)r4F!7g$ZH}%8PCZ9i`q>X;co^m1k0I&`2Cqwov2HLA+EsNqvbVv5X4zHPlu7 zMV06nw_6$uBctL>TQ`Pfs{VW5^#eW{RZD-~pJ(-wCd zdI7tK-Qm7Vk3&yT2Twod6|RWC=efe%;^qrIybah7`6>9ccOzRyXe+9e9UT>3m11hkA<#RiJaZgW^!1MEB=PNU!=!)4y`- zB~fcg_vc&5i=GSrUphDnyb0R?U?>zM_3$ebUy)Ue`aE3irmvV1P?;T_3d;#0)a-apt$!dX$JLP)>|rJ7U&)CupEdsFYCFL4)TCbb?p z#3#xY>I!Nh&QMQM0d9j>-UoC$4oi=H61{;ND;@EdrX#!{chMTsr};B-THxP*|Nou? z9Gb*G59$-Pqz>q5vQcslc7BS_0?;DmM~fp3fVWIb8*T@9-#Xf^>!L1n?Q<=18*LLk z<-E(h)f_>}LHp^j>o;mL^DSd>kENZcHQM1;nFDAF*TM4%Gn)H@|I;J0<@tQv!#j@s zgExt%y|>w^!a31L#gK@9kZMwmP*;3F?oEwGn{hW~CbbElT!hiiIsx8yb#~ox8EtQQwt6;usyRH=R%#>_b{(KfF)572-J9OPo?v&l zEzERe<~n#rF*UhY`9D1b`-uBo=;7_eF62MNr@i~wDne(`N3rNPp@vkGs))+r(sFO= zEi@KO%1r7bbPO+0wov;~Oe|DSQYLP&_@fGRdF~f+q)(zpa}}i8{?hby?pw+CT=!pR zf87N|P0j%}fN{w_z(FV?bU)PT#F%6q;5YJPqtOKLjd8BoZ3Qrxf3^OU2C&jn!nVN< z(AKrhNw`vM)je)c4|jFPeQyJ*wKweAM14))r!4L!bb_76>~Q}F=a%w4yp`Ekcq=~bUBsT|cViz#pgzKMu_hHmCfq~nP1Q#=a8r3EH3Ut;F=Y$& zDLRE$DJQ9)QHEGS1=_|963?m1o0a;SO;nD{v-bTdkz3W2moAAK3NYb0h5#OfOjC5(EX9qh;;H@1Hcc& zy9T{3GK;L1qW?Wcr){+^w;C*y?MH1V)2gQCI$w77w}))iT{m3goo4%aS7lGSd%L}x zd%E{WPkYCC_ghp4>Yn2@kAogX_i(Q8ETF$-PCKpMe8!DbS7Yy2%pO$3wb)yQ9nbZ4 z-S&RZw&Z8J6e@yV5w^H0QXLVGPr5o&pQD)=+|#H#C@f0u@2HC0PO+3bm7c@(mm0V` z(k{M&{HFWgkpF+3G+>gy1Kkx!p9gI4)E8(IOef|g_X78kx;}PQa;h<426)M^$MmXI z*N51V+9l0k`OZGb&fBY|c6O4k8;+2zv#Xi=3zylR>fY(8=-Fh@3!)!yOuY^LJ$ zJ;xwVGrBX=!+F~Cg#MO2?JVb=!hD2O*K}`)?a0+|UG{EZ%k#ZmGUZ1hVW#UbeM^gZPCHJO`v;dqil(Vcz1&G+Lrme6UEa1p@v~^TV zUE=KSs^tpVCb&+zzjmAL+3vdDQQqzLuiVY4!&G}mk;h9rnR|{^o-K42wucjYTQR-R zY3JKsl6{#|T_?P=SedWk!jyngh2E}LsWynjGhMx?m1rd1;#x!j$A~9g$EZ5oY7yK# z{TbInlH9Fnh7ZZ5+`H*%e45h0-GzBYnD!sw*LhH{10-N5oJ+m~g2{IPLo_AN8+3o1 zQpWF0x<1fGQ+Zt<$9T`OAx)nP>tJhdH(IhCTOCcD)lz?PZg>6R3fVq&6?sN@%=Vh@ zt==-!cKd1fEUGo#-qG4qmtMo%bNu2lF%0VAtmOTiIfYI;KlRpSH*%`WLfvK;@-EZqN(@c&f@(dPkm{JJlo?h8~v3?lCt0LqY!lK5L2E}3du0cIL4$^C!^ zwzq6=+KrZc$390JXSLL`&hK0|T_M}&t_q&f9*ez>dx!TWYPJmDQ zx3~^aWx4+1Nmm*@h4V|`u0h}Bj!BYxKHY&|C6{vZ%zeJ`{{jBL>tOmjKz|2*2>Ho( zKn0>{vLD8gmkqzC==%Zjq&`GB;}FY^RJ{(w*uJqDEu5piqmQFn>K5lfS0h)*Hr;jA zy~k~_mv*=CPVsKH?{RmaexcesYIp>iX6`w@@@%JjusxhHZ%3vtI_(_oO=T-_s_U|M zA*=BL%wR_LJEu-OT{&4Fk>H ztN_TSq|Hq;TCUlb*mLaFQl~h1m)9A#z2oZZ-r=&?{q7T<`kw9f6>gc5sSb`z&u*$D zea|t+)0OVS^l%!z4(12;w6leG0ka6Hu1(&O>|0z7mzDaCeU z-r^cbeTk;xldiQ?Di;*NeT8boZ4)JTj9$m}mP)w?&;h>6e-Quveg~+KNWKHAKo6J# z0JGo*WF+_DR}zJ!?hm$^+-lHyufVt~1z>|gG?lghl(fB)dev&Q#2hg@WviBY(K+8a z(;l|1cSYS_IxY6*?s1-%+&k>I-50%gJRKZ;JhQ3()IG-~PZ2$n?%}NEJxc$|oOUku zc4Z`_x*m8RGC!djE*~|Foy+xhy-XQU4}PYr8TB%HUD)CpKn+DceA4wH^$nVb!M%Yp zadA;{pQ2vl_K2n29KDDe{C~iI&pNtalKwK#^-?W>pk(rY2`C1DwJ-oiKzC4xi?9V& z!`nnR!cAO-?ZgeD2cZyY)XijUO175{Jp9#!phV z5s%1t$^p|+!e^MBVzFE$DjImxY73BU3=>T4tZwohgV7vGRmo2ceauf%3g`|Y!b04K)$lIyKGBT03i}CxJVYo2N3JA?lU0d^WMe}ELpNe1dD>9f zIG)%@b~aW?SxQ_aZyNiUwh^?UN6IeqQ6k%LEoGGDD$&5u-Bi&E4= zzm_Qe@(a-8WQ*iGL7$uk_y(53Y3L3KB0`iUR>KFxDq=lx6^;?Fl4VJS2$APVo1rT4 z207U9r=c4$gA5qWDdUL)smMVJl0vH14tVuvaBNH-@YsM?=z@@{#qP zqYb$*r6~2m{}TScOeFsD3()%oZviCd=2n638?hNoM0Y48$`jp))i9daPdp&5!a1TN zIfhh-T+(LfYN$%ICzlxBGIk>tk@by3Q^pe~$t%XqrlkaJ=$zuRY$Ngvf2QoP93@&9 z#+jyAuM%Soesh;pAlDc^GS^IVlUEIlMX{-**Vx#y*cK;WH7>W5vX>>t8jaSY_NwF= zV+ZRLM?7tLgtK{u%$T;Qwn+Mt>O>KJAzN z)BUgZjQih_9Q(}spD^rBY4rU&OyM zPvc*!{}KP3|0DkW@HGBC`LFml^lAJ%l8k?wjivvWBTSKy|@x*iSUlw$P zg}VQf@kENA*Hp9*ay)bZRH1BiSsI`#m&e!R0Y-|iOPwVX99Cwl%hij})ZbluSNq0t zUF#P7B>0sh9IPFh6>3d!>7B!TB%e8v-aoPWM5Z}AF6<5u%bb+mLAV~? zlNrdFD+m!TYfH{S;nhg{tVAw>`$x89y_d`4jS+YJQf>@8qc!7A^2*`S(U0Rd^6KH9 zu?mT=^V|O8{$CB42`6;_gOmg2)9bLql-0pL$DEYFn95LGMq z=KHR}G5mHr@Xh!!xhkU!cxwv!zm5@JI$#-RP7 zX|Xw(m~(~GGInN7;i`svWxO4K!VL}|&0rD@`IX^<%vFiS{HgHx%(~gvcz5J{=AG<> zP$p6)YgSGNp;Kg1Rv>q-FgJ2FYjEyC;ipJ2ekzy1Y_vFDC6C2zqEq8v=Vjmn(KGQ{ z`Q>nlSdBzVK|QQwDA|_6f5zVn?t-rS*~lbY8>9l%ciu|Qvv!~n`;Y|~!(;pb2Iwc* zmHvtu#;QjDX8#??)dmFI!Lyc`fph5{Lwg(#f|bKUq%CC(&5D>}g-nmo*{G7Si#-?` z8LN{y7WulpqZqfdMaw=`_aOiw)Fehc@{Jep|8%aOC0wQR=FL7dyx|H-MMpxyl9trZr&lGcXVO=lRN_Nh@OoH^I7bTWhPeV zXW)9V_Y+ME%HfSMN48v851-0FIoqFs{}ZT5%p(Bin`@;0kOq)&eV_Dsze$s59s+O+ zlW>6ua94U$NmFfbN}cbotv!UU+O@!@;2q1^z{{aCp@WXv>C3_!BJHWX5RP_|*WVW3gMAV^PcSTNxQ~ky{>qkZ~bCg}WW@pSdXUgv*WG%jyzpN^4PV^N!M?~L5I$gK!J$@n8ag}W0Tl({_dgv*cI z$?Tq8%y*Bp&nlU-m|qt8G0Tv9jsHEO#yjRF1b?(%{77y`p?P#nykg#5VL|lU_?J)d zmwt->+o$+D6lCB}VwP;WupGu2v$H=atcTys+@DkHU*I=Bee{P2FZl@xaN05{t+!40 z_v`K%|gA65I*gVz%PNQ zwR2!XdRFM1V@2>$Xhpa)wJ<$1(lJ_^DGb$)eiqxqjtgbQHe`%LKZlmY4rhuS3ge6i zSyQ>%;b9q*<4?E|;d2?8iDG_TxP0cW#1j6u@Qlp1+1GhGaxK%6lMu>BUddXP(@}UU zG9xRNJ6D(=xs^2{_mFTj5{mzpOJE_|I9@Z4#qFar;ydy(@S*5$@jChCaLHKBgr%S! z_GkFBQ~$;9AAu=}{|GUU+(!b;vMx;X*#K_1ay*+o0BE3zdrznG&}^5*b1L^ZL}n0i;4{JvGv0|8^9{nEW>^zT_(9=&850uM`A@>- zGr8=9us1w9b3t}T;ZFE)W`53GL5V0?dvgv6)gxW93UUcNII<&aY%Ys8N2vI<+zjlE zz7}thR}PPhE{NaCtB3o>DkZ*o2LHX_{}=rKg8yIe{|o+q!T&G#{{{cQ$p2sD|N1`b zi~RpZ{{JHXf06&c$p2sD|1awQFY5m<>i;k5|1awQFY5m<>i;k5|1bLgFZ%y4`u{Kb z|1bLgFZ%y4`v3p`?*FGl7gz@XWsI+wdYJ*fu}7WXIraIsMf6D;AdhzmaRH!>R8?*y zn_-qZ$T!C4B&uuCK$*b1)?I-i=^N57It$b7;b!3w9SIdj#Ap?ER%l9eRBSwY6nY~z zGot}lBYZZtITQE~!c8(RWsTzxg!g8Qi>C^yk^IbzL=WMm$kfd55(kAYkz1Lavpslr zqA_H_Pw0m8)AUKpqQ zzZW-%wMuNwKaZ!xzD%?$c!F=oN@dH1tZ2xL=WHnaXZ!;UL~RaraIu9ub<`&goy0G-Qd~ueb(QDPeL2Qq^nx! z)5w`9)`X z>%E{i{BzjksvX)AF~+j!+o8PJD;c%e0b$5kk@*3-9^RZG#f!Omk&c-+;spPB#Fq74 zVmwboKhF9rJ58t_W#S*?^b{sV8^+7#9uj_v&WNwg^!7fTs4vWt`WnVj#Q;&1W{{C`b<0rVt3B&!$zE?P(1 zTG#=WxxeuCqX1U047Zm9Xox3?H6(zbQdzyOy5N+ryY^5kB&5K>;NtWr*3H2qp+VtP zS2)xrGBlc?w}oy-e~;B>D}>j^@-sg`E5mIv=4KUh?uaFGe4ON4MP_E!ON{52N7A#j z>@?waWMS5=>|R1a)E(cMb4chJtroA9>&2_1BjQ_fOW+&PE%B_pMwpBJ8DE&!50{A* zBz*bPaO+s##G?FFctY&!MCpRP_`4XJeYW5{W;5Q&u2=X3kIRs9ekx?e-!r4R)BnZ& z_dcC~yhI?wbc3$v^r@|yu5a!B)LV-J_>#SghH?OvaItt=1TZU4l>Vw4X85Ao7_A)f ztJWZREy$&|4)zM&3^`pV(ocrhM{?*vp;x2LVs+R%p&GH_8Iw?P_)=_3W+QGzcwmMp zPV$e#Wai5F1pcK+|IC(&G+|)mY9^cAOIR0al(i@OkZ?8fP1d_PUaUpEabIo;TpWER zJ~X!xo)GOFKcCwVe;@rcUMp`JHpkAyx8|+F(U_7boxc|s$J!-!<)6pXVqYh^6ga4#0Spcq0_RZuST&!2#(0MT10u zL-HoYrh1^hZ@)jNRUtmn&IKw4@~r(ijW7{4#LMLN!`acS_>|mfxNY=}_^sSkcz$$zyf|+!z8u{h z-;;M9r^mdBI{8oVo3S2=$N8*Sl#!i%;~D(N!w~pM_x&?2H0eHnuR69lgD$=QTb*gc z0Pq6fs{%k@IZMHc1?Koh`CIzS5-4B^-VBULJsE8CfARGe{#F&=|NlDY!sT|yiQV_~ z*)g;C>^SFKy1aCkbc>QA9g=7E4P5oxcSoX`tN2)j0H>bX3vZ zD?=^i+32GCx6l>2CXP~8xQ$X$9YFOBpHz0L>#5Jf0ve=Up>Bp7BZg$rnc_I~K8ewy zxC31yt?6pwV^m8YNxvnA@lJgyJyGn8En^@3rMMRFFfP-N#5lF3X=7?g{nTuWX3EJ; zwS|_+{GIOmKchVChZ;73wD=PVXA=R=rRQa?&IG8IwSU>HzAma6@!RTTgM~bX1RAp~{QL&>oUS zw-HmZuE*#RVi8`gx2BhiAK;)dl0G6H#-ABW>EFd{wVb(+#?o8rRr4}EP&%&Gw`|NE zsiSt(q8VAKOh!lknSU6>Y=?{c{3I+)%1;3}o-rMnCB-CO!WHLQK~7AdODwl32-@>VT1 zVq+G{5wbKwGc&u*`xd3Y%A=h~qKm~d;(~SkN@%4r0 zLJkO?I^I*>0XD&x8R#D{l9K{^g71XRXS@u|54RD^EY68wTWe8?n_;?6Bf;=N>wuEHSw=9Fi>0+{#M*~B@#;lEJ>-9HYW{WefG(mU@pK( z$6wB7E&z>wgPF?!?B=%dHX$EY6>Rj}@JzGK@n-wm`iCUf^4||cf;Thz2i^-Mg)8K_ zgHOW~#mDLq~6 zfh!yP=$+z5{Ecyi{#{H`JDE17zBE*ISTs{fZlNvt7yV0xNl@&2Y?fFb?@Iufl9ruO zCj;Pi?ykJGc>wp^Z77`rD9tVB-sTcvdO@Kl&eO&AllP==gs*S%V}FU@xxk3b7lCg> zM?*&b-e3)Jyy$Xv3%@*BQKsbYDw zUyaaB#8GIjHjwTw?n4o>iJmLk@ltY|{z@#1b96UzRvd^w(5o^p#VzL=#U%x>wP8nW!HSAJKUYZb7CN{kdn%CY|={C^J}4!zR!s~-M_0@66j?@t-Dkorm1L|_f|!aP;yF}(u|4`( zy+;ieH=<)&lwKj)a62-HJ|Y(3i)0i1Se%So>9=X8bPE5XyP2|*OYLk_W!{q7sZWd^ z%uH#W`k^_CIV8ntPHP*JAa~IESQnXA@&)Y|%g$buE0XS!0ycndlEUae^S=-EY{eU) zXF{{&0Vx1oGAm?LIRG9bf<823gbps;<=aMG` z%7hk#rf04Ws^V<1O#b*#RVhzqoaMu{<%3Em*H7Wf%5gNrt%^D5DAuWW#6jpsbq=*i zJdbW__oyF46TeTQv|XBjQ}sc#B>jx%>znANlA@}{ZF-b6L_K7;`9<<* zrK}!|LmsTPwq`L+Ko?!$cFr12J(XO zDTf1xL!H9&GoJ>>iVxRsQcYDdHqncvCF&95HvNP2Qte~9nRvOOmSt6C z3gr!2H>)SpUrr{+tXa%%xdJH@*~Yk(QRJ)0MP|Bkmeh&bSwE_+XT%Cv16MFyh5yU{ z--Z|yZ7=Ny;{duQKT0jG`(2oA-E;JS^qj@ zy^4T6<4TwOu_SFbfy`jA08X7(<_eLY!&%#rb zy4aww=s|`$mufBcN33?A8ZRC|rAUn4AZFvCWDtE;Y>NLNo9Ms91-QR{hxSUB@pIkH zRF{J4P@^i-Tk5GMnLU|>(l&LWIg2?VWoUx6oynDZXhW=vOc(i@Gt@iV`?GDLj}2&njwzJ`+k$t3J2E4|A>pUtI{A--^TmMVbxsQPkow47U72A` z{#hB}em{I&UW-iX=kQqNT|Ad^i5aMjdY>vMHbO~SjBYQ^MrX7^^l0%EYD6~C%fu|a zi`=32i?y+=yP0d^Sp2bGl}VKL<2<7$BTMn>G-DRiM5>{>&F##G(tLG;d679L{i$k} zoh_6<(3V&QYz3t>Df2J-R}v<^(to%kE>In7y z8{seId&(P>Ax>0|prceb(T`T+3iKlJeKc8JN*@t_Km)Wt=%*rwHByCPq|SI18Ov0Z z)?$yopXnq$!k_3bnemdL@`l20kOr&Ej8^PV(mqu)$FnJNw)Ty=iLE4e)uPq~c9MKX zn{U}UyJ8Y&B#(2V{p6d7??0_eUNZu47K-n`-;QsTI4B8VOvc5`##sPs^5;6%H~{{n zw$saLfC&GXKg_4VB2N=<*t^mu_=^I*K%JD6fr_DEs8Lp0sI*u|6dbm2b7_}!+Ib+{ zLvE|oa~ooJWfm%;hKdrJfWN1jGO*=}o#s?A!_EIEjnqabKWu`nBjk^ACU~wm)qE`xEXaZ%qNXmU%n7*w1f)9sfwkD@cVDFYVKOyKG{HfuoWE3t&+ar6)WCasds zI(?#`R7MTl?~4qofvZv9i65g5>M<%^%EjZgigZnB1a3i=(W9lC_!)UYZ zU1_Ci8DkkvE}@+__A~Y5R@x}@B{Nd~N^@BXyH!pleXLgObGa-zV~uCaDSb)h$R>8S z@)g+?xxgl%6unN=&b33s^psd0*9O03WEK81e}WC!f3*XAl2kXl+78a8=MrJlF~1@Je(%JlXW!2Ngqjm$Ek34 zxr_3Xvx&G?*@_yuH;Hef^SBySN_vbkv}06l>0KNomFP**4SbX=qrZ_FtNrvBbV+%a zT3}RVVzO5|VT@zmmB(sh&Hc;@`L@PeFPUFtKN)5zte~_YH>_4{M`b!`7@5FsR!)$k zkxgtGV)Z7`3v4|!M1K*rbK8*3_&%1$UBT(*nAh;f{k<2C+q%Y8F9FarWWnHW49CSt#=%b`MP zzZ7&_3y+a!D;J!t#J$Q1)Y!dU?1O&8)u~kJPvqB*QT3%kn2<{Jbm<;GOP15$OD)t9 z`U^Ty-lxh&Ri>;Q(k>X|nD^ulwW;QQX0?1*^I9*Nt8$QxvJhLKv?RB!R%|C_25AzR zz;01aknba#*z~{o>;KKa9ob*;U&ZO>*w^s8q2#MCP!va%oD&bwD)rCw;<)!q&cwXb ze1IV?iRwlHgxF!+R~*1@fp|K2+%U;o%3sHCvr~cQ!P&tdQr-$q4co*KS*t@fsjn1v zED0O3Pr2lbh%J>-sHuChXrd2sb?ThB87)(fQ>+xihqcOdGie4MM3&Q2rQdO`{(?Rr zy{UetS7n|_ThuznI3_4(Y7dS5Of&gyZMON6nI!MiJQia2%UNWo)ryT%Dv@8T32ZfG z5UCN_#D1deAp0X1*kqKUH;mf3j%bvg8O!53;&+Uk*YMW`?$sU82PIa-_bLTYKdnc` z(hPt)xySP8e1M&Q5gPGdRxBid>Q^)PC{?G>xf&G`=|yrL#&0a;UB2u;wE%OtxP9M`S^ym zoQ_I8aDVcG?jr5Sf03%p49TI6)yFZrrH*Q@ae%okZB&;SFPS_!PP0tJR+bxRC(KrC zKY68A#+tx>E|(y)tWE4QIZFPtF0f6NA*64_&fQYZleB0aw+T(uZ@nh|t%lB!UEIwn zJ|&^}+}j}iT*mnffQ`91`6M6U4_8^LDg{uUZNxR^07eLh3w9R>K)khmm3*>&f`3zB zZ6GuCMqq4cR%lL^EmTQ-M?{VvL*=C{(pBfUFqTE7xjS7cHXw`IEprpwULK=Wvo5e3+*Px1iPP=8QED1adU9{(ek44XY!-a(!nws!tN zpuK-_N_tQX%?M^?w+cnXtKlV%4&hc(9ch}27W>H;WQKZA9I6zdAE=$8i8TB+{g=21 z`PE-(Q!0f$T63n0)E;M%?aXZHD?FWKvHPTC)uFdwf0df4AM1-)hrB}d8$Yw<tgm@1M9f3E-;?E^AB{fZ(|5IO725P0P%68el))S8xca;P;;M4)mV3 z{qEl!=o&bX(lvM|G&{s)9}8^~7mCXrSHe#vEYEPY6-DK_!cx0MFM5hjP+8KasHFN1 z-9!>Fqy0+Hkfvgev|x@%&+!*zJ5xe#rdHRpSY6(%UeQ~y9py~zePa}Nck9XRHif&?Z79gx1=C` zpmwDdMkzyH<9JI9D{*L^>x%dW;;}&0lJ27B>M3fa zG#0Pcy3&70dFp6#m#!qwQDb^bW{jMxJ=S+Hhvf0vdLx^SS6*oEnl0IiicTnN5j#xj zN`_k(*{_wQ_g=&N^%S*UnvM@^-Dtbasnf|ly1Kkbt){nRCd#yCH+C>b{G5n5{ZynJ*A#Wso4(@T^8ff3#zt}V@CKt& z;aqN-dgitKzQ6t73&*-lDR@`07YEm0ijsq80>Bjq?ZDye@PX~NY&we&jCZrnt)LcbFo z#XUrRV{>dSS5ozuyxyFePjH6{q61j0;_`yg0oZ41b+?x9`2N_go)Ha+T?JH-Q+lBk!y@N zTX_q4s4HS4)DfSiH0c!Tt#+sTN!9UK?LNIx+Kd~JR?M#wrCuXDnF4vB+F#FR8^}MZ znMO-?l#H~M#v*p3{DJm{d6B&)U(jxwDV$TGNp;K5)l+JaWmY+EiZYZWM4E7ylgZG3GV#?{`=MVF388R5&q~2rwe!Oy>GbfP;CWLvR4( zQ1_|R6oA70&Yk6K(5Ilgr=}+ezj{6X8@^%os)0H|PjGkYq+s)~6@D-KNa!2!wD_fC zclerAL0;mjB0iE&D?Vzjct<&a&QO=d&ge7TgBGM?XrX$aZYp6sLubtzt%p z41lwF3=3@WXQs{xZV6oop2^M*e=Le( z&`FC|q$N@v_jHj~YAG|Qry_@@qn30vX&IV=6PT$Ii|4AdnPbuA8IZRKVt zt;k2#DekN?gFxgS=R!Y{-jPy#OQh&=QI1c;r}Xcmq}by5wIc(PU-?~EkDrowED7LJ zM%%1aSpXdz1+rYQgThjhkfDbMY=&2<`Q^LbWtF{}vxGQVai?zY|Qdb+-dV65mc? zQUUg5jmr5p2jD&D4%c26z(ppLyTtihrn`RxY-r-M_2Z>RPRRT5e8 zWp=8#U)n8U=Q^>5vPNm-)}=P+KAKG}mol+mZA~Z2>v1nFiD@ZUQ9F~l%xd|l>eh4F z$8v4$q&|!_mBZR(<7c*y!jZbBliR2?AxTzQ?vXNubhp}aZghy8wuW(~QAxc@WC7O> zRnWIawsMov7(Es}#qC3<^~2G7Tq=$lyM8TUzwmo(bL}+t7m4Q=zru zO0iTUIspx8a`ZM@fD3QO@faeH%4A;*`~YFl+n|L^?&=kyEk zj(tRl#U%k2r#8*loB=R7_pSUb`2Z{2*QviKfR@}ld>={XI=p7Lhday}K~(L1Px`+ey!T7>6PzeywT6SXbfOb)4tBr{*g z`_;Q-9#c|jq^;NU**eNk+5lrXJ5y0eCG#SCPU%LHEEkuKR+8RUSq`J?t7fk}2XxH2?3l#upg zXuY^zbmo{MkvqzT&L6}t6ogv48%k49E&LI+SBl}$YCF0>{tEPU=iDkJ&5# zs=lG;vx&;v+Dm;nTTQv7Z8k2lW0Vl-ZMwMqN*m&`%5ioyn+&$vasv9ET(O36l~J-@ zH?n~1f{OJ0k*(YeG*Pb@J;i;4&g;jb_qc3a&KM9Y#Sg>Z8o@%2U#6Zl55H#pFMS&l4#^7(TeBOL%AP!s7cG{6q-3w{g_P|f4_{^1G26(0$t1UA@9 z1nY!yLS@pXggT40MLs7%+%FxM$~otXf-+fY=gyT3^fj7K4U)b`CvgY*q|_2WQ&Sm1 zzKFBQM@&b#vAUMzv&-ZIY7Kn^dr4NcU-gTuQ<MM7DB;=mqH&ImLBCW%WCed)y*4RUZ&d;GZL#5sY#CQGCcq zdkuec+h0%@0OAwhOZp-SpjYODtWUB4p5*`JSnB}TLVZeiEiGwXI2h_!61lv;{txEbOc8PpZ-Kx8|ld`E*Gs+4Zn090w6L~vmz67FRZXXCT_iGR^QfaOr^_l)8)ORY)(7?BpqXp;f(Ti!?c5ApyI{U$w?0(ik^2}yhk z%=RAi?)4U8~G?lXKJ@a)ezYk5*R_fx9N(Q!DC?I9jQ%{iKiN>L?qufyP>H zxRO9z<_Yc##UMM)r`%1Y1JNx9pMj>6$(G3@bdcP$8t@HKoZc+bgCC8m>n9`Q`J-rs z-Zi?6AB&qCRbt!!QU4R*FZjv^AjNM=ERhWGBx6F>-YkH*j{44ICqNN%jWHO2qe7d4 zQ9?S1zJ0z2UTi-Z7#%zlSd{v4$RSn>H_ws8k0ige!Fg8nC=cXBsUlQAmQ_=B! zTioB67F)(QQCpk!3jdkE87z7A{@plnZc4pW05*G9&fOee_gtw&z-+{EXe2pej^Zk!J*1Ac zj_ZK_BHOJK+*njb7b8!(b!e!*IO5>XqP@BhHTfi*W~_`h;H%&cMx|H}ei}YzJd2Iz z6V>)+x58z71+9|hDE-g;=+>+nimc+GspVrQ+oP{sCvvW8{ap zjCPlPF0WPFkWZNwN;6H=tFoJw=h{pCdo~_bB`1vnPDYc+=VoKB0Xj+EutstHQNF&_ zTE{Iw&2$_&$sIro^wp84+(UF#m!l3|z^d_O)a0Au4~%-ThWrA2%lI?agZ~|OHaixM z=SQkZ*3H6Y{C#b`wdyte#c!X*rpzDBbUZ6 zaW*|&E~$3X?$afe9qM~zCDU1XODm_p!R}T{kSybSHVM@t*Ng&AMKj1AvoY5MogsCs zQQRQp*7sQJxJ9U?ZbnXWhtMMZ^T;#qF}k6vQ3qduHDg=U`si@mu+*yx-YKve0`dle#VeUWRk&w(?f| zNPR$mBX?56WEB%oN@`a~5j#+sr7hNvv4@pR(!nU;5>Y)OnvJ;-noORWqqv&rJJQZt z$8|@E`ghhzZYrv($0EWwhrzGDz|@2$NzGpApOk$u3xGJvIRA10_~^3CO&Xvv-&}af z+u%FT7HGWt~D_lbC;Abi8n`a zX{ZhP%3Q~ZXa=#YliVBVFqv&VQV4-8aGv);7 zOm|~`qX9be4TUqj4Yqqe^g6vJ^zwHNqy}(Y)8N?9%U~e=erULe#CbVo#PiZT>8SHZ zktn5=9IByI28}@udXIDxjmD2?N^XOvt818dE)kO$C-9{B3~-&Ck0drSp2S`6_8s8iJK~7s6`B_NQ%SBG` zJ5ewF^T;FqG1{T4(M+KNE-;QqWg%X@Xl#sC75)?L{&(0R*Y>>);E$5m5>Yb1i;Oi{ z-(~@P<9OfcZ~`o26t*@4P`zMJ!3rS*R{D_N<$Kd!I(RK;52mD<;r8O>@Ygw$#YDNK z6m!*&XPQ78-7)IZGWh5yW78@{p?*MAL3+?-PEXWJ|L zkDQ!bfXc3MZpjVsf}O(^=Rbu!n?031+0f2!1*Z8Y*uMzw4`qcKr|k_t7e|WU=Ufu^ z%8ljnt`$-ZR1UpE)s#g%5RapOl>fx%)j>>cWtSQzZ?Kz{p4tQQ8=H)h$xgj8XP_oz zsxg{tg%*;x%$?k5be#y+18y~v^r;rh|A4yd@sT3_ceGv~66wx+@N@l-$TYq_u4oL8 zZsb3}GmY%nN&X;yY;1`=;%T+BSy-4U%v0m64TZ9BRhw^hDE-g;mhCJ1xMH9Cl%n)q z=>Xo`%XyFT0Df?vq*hY^8@M@qjpF-X&nU0x&4Yx%(Ln#ePP-7A7ETH;OJl{sQc(IS z$0v1EWTlGhzO)kUN8PA7@(j$Y6X<}_Tm3{E%q&*QXdjazHUa&i_0gZOG1P!GGOBQ$ z(J~Sc3m?;mMT+>+*lm=IcIV&0osAEp)A&#D zR>Kq9$e+jg=HA#zKA;Xa%M?E1C#WT@m4%r?f!4;-OUpuCk`sY4|I7cM>~DZ>aq~)s zO96z^%Vjpo1UQ`6*U`!Wu$uaj{)7go&c7qL1b`f`)AzO43*`b*@Tb5-`Ncok&NNvFi8QP-cTtPuonYu^A|yOwgaQ z{2q^i=>98PMd zs7hVePtr`Z3B5}Vl6&CicoJ<_Vrnz(eWtJSRDFxoV9zNFHCcbgQivnZ^(tId^fozY ze86=>>&ZvvPHsASLL$~f?kg10ms=cv0S(X{ks`h%-mXuKbmt{(Gm@gy_&0G4V`6k8 zKMBt>nAl1F2>#vJ6??>c)UIZk!c1X>nqYldC=0i=1y-lmtbfk-ITRGX{w9t~u9XbX zF^kQamkn^lamU%;3Gglboaw{>JmnJ#dI&aX;4SiP^BPb#kQ@9s&@9d$niIYmnwnlh zERuc^<8tqcx8<2~W7i_7GI|5OM;UT5ZjYzXo8&$CBXu~#EAOaRwVLcOC0_fOJZDcT zv$VQ;RW1{ykrKuSoQ`Ud?Zz&y5gJGOm=C$WXfJVF96uBNNd{R({AOh7m#psmkLX>! zdSn{^5`C_3i)`fm__1z8Px8%h1!H^k5x)R0GFrwmg?QCtW)<&$^_e;4|HQxl{`a=C z|7CkxtbWNiQ}(0)e3ZQ>r$!DybLTs*<4%A86Jtj)02xAZK?A`CmA#yAfVV8Lfu8~m z0+Zry1OwsLp-bt@!*|8rVn*&dv7`J@YVK+*ombW>eW@$bC+H}eMmLwM;-BycX1Dw^ zexcT4T}l@k~(jUzvr zMSNehgH*J-^Rv-IvcQ_gZ$lydPirH86?M`(MNaa$c$I!W@`$gCU+8V3nZi8W%CN;` zAz8g@Z2cGg12_aHYyi{kS}9v`{ab1vqh$ubi@aI+Tk`;>(jU^r@BeFr;X)Rl0-b$t z`YwB_+e5+5!C;_DS|m(~y+ZEXx#CySa&fz>t<+X&DIcWbq@fVRmvo5s5!zsEjE&9`zQFSg9NQ!e zSKFECg~$I<{{h0b8#aK2C7&i%Nd~ZG?t7*Gj~yR5olbx!On0_bas5X@nrD}g0bc)9 zzvUZYUm7eQ5`yog9SyG$4~4_IkHmN73DREIK8Z)8ly9gWvK?PVcIGen2OLxr+5XBj zb+mSay{uHy29kOlkFIMmeKA)Zl_h`aH@SDwXtLk%^Rv+*GSzI!Z%0WwvL^EvQ8j&@ zwVf}4$LR@?>wEwo)(1q=gt|D@co`Wsu*)ycLtW5!)MNektH56*7!_17rzQU*KOY^cVJpW~EXY4ED0M?~!Nl(ZC7@S)nU(N?0l!rb=0i^K1@%?y!B=0ZY zCSC_L4+z0Uf#2;*Luq2ous^+@_>0s+D$1QBJyiNB$6S5nIQ$%aPl-yL+EI;X4k-`R zXId&7K;LR7$St-#szJ8s^|`rdC0SxD;l4$7eWrPfdx0A3RjdFX!YlN>Rx7>b2S4*m-~(`XpI&R@qjjcd^~fmO?!!(*DzT3u%56*d&stEpDs!oC8lHMDLP z&Jy-$TdV=4Hw&vs??{a@|I459_ph*6qC)(=QUK4=w`MNM1b8?9m}8~`z(v<)F4F*e z_!~lN0bsOuvd``dz$byp!R(+JcPms=JQW_9K3fdPYo#W+8zl;zP=0hxkPC1a|3H;j zSaqJ7z?@T(w0x4rVsu5jM{cuSQ6q9(Z@?`?8^|_e33mb|>ubzgoE^8)>sSF^#_RO& ztX6z;{6eo4nZl33)r{kj9sFiI$7mM4&fmm$j62aZfm17*qhp%TR$XQ~Uh$_`{a*1m zux`BK-~5VyHF+;m>oxrELFkqKk4R{lG&KoedFH}wDjQ&)Vka;Fm4!Y9 zhXjBF-ZMVchvAFBil8IdJML%FX2 zybmwduUS+0+W4m4BC><;hp}-ca-Cm-2O7ASvroNGT<4^{v(p-iMdyzQ}dH8or{>jHC(gVxN%`)r3!QcVl9- zk#GusZBVhk0;dMdeX&`>M0LGct#Gr@TdQh)_kZHwf9pP6am($4YyhiLZl(501sInz zGWTQ-0PiaAZtnuP!z6O)EWi%oV8H>w4nKIe_)d7M!k9qK;Ece-xc;Go;jN)M8LHSs z`b-?1D@b?cO7d;jd8qC7MUW-O^W>^n+x^-b+Qdqnw7txg(pIcT_c zmn`FA$WEr}cepmF94T!C`4MOkxo))Pm!XYhra6T_h<+s=YX^TD`SfAdbv_-p(toki z1q093iz1rP4xiJvL>dXRvCqKKzQRd7z}OL;B{1q`qkU|%Fjjrb%=|z6|2ww86B|HH z`_NM1M1UcwIT_6}0Pg0E%>OtKU^6|7F3y8}Cae@n@hNb?H`jN~)7d^E_-T*?7NzY9 zHxws^hUfk!X32ZRD()lFS!KK&qKC+bQB5?ENmpj$-gq`UPN}bcp;qD^DWJuXm0SQV z(AE<>Ul-+*_IfS8FKSL)#uR=onnz9;-|^ef88X?l3+GUd9uK{dx56DwC>(=MB33R@Qc>i)wp zY>9S&cS{OMBa;E{WE{;pm<3SE`Gqsj31G6z*p>`HzDM_bD`dh){yYAfzE$>=(DYC= zcqUB~ABs=I({me1XXMYNTJD(K5$#YU`ia~Gr{TfO6eXgzR_C(GC{a72Rpu(AgW5{6 zitCRGNiRK)UyeQ`<&0YV59l1pGNBlT0bjJ_$N|DyW zY-}3aBIAU;_PYbf@F`L9*2m{m!W?Ug#a9d5ax)qi$h$Azsgwp@a zZ@{;&&i|7W-KiUkTVmw2$gPkIaL1KH^>70W;Zpea9KbG5)Z53C3*`e_0#E(->dVC~K_zV{rqasAOfM*)X z(bhtSddrv@9Vb*#%b8+qy)a7s*gO(DEgVzht@4F01YIk#Ru!@Z`?ZCZT)KS0Y*IaP z`(OAg+T!Di>))QHBxe+40G!KRpWi0GxbHy^`UM5>7GFbHzyoylmiE2xb;0L>cZ2%^ zMqD6VTO1Q!oPI*AB9D_c=O)Xg(U(dK_Y3(=9KagAM|nqGtPW=k)K&A4kJ+I}BJp|^ zZa11s9_y>Q7w9i?$B5%GZmHii>+l`$mwF#-DnAov7{6Ob_yf3uF)R`%JjYv&)F=@o zHQk&aZ6mZ(JDX-~yzq&7z&saQFI-ohR+YljLRqb`wW{!iu&KD}r!-rjlC;QIrOOwT z)PIOfFY~|ipZ51n=%Erf;_D^=w8@BOJSg{bosJ$C|8u*qjc24ovXZ$TVjJgt4vgXQb#f6(Ri&q z`Gg&ZV#K3YKmB2}Qyjg;e;7+>Ds>8p7_vpi|Y5aWbG)hK}@JDbLV?v~a z@F(73sug?H?Feg+yxIb<{c%B$9R>-&`4w83E=W^5KD(IB*j{B}$8yDaxy+Wy`j#58h zJjl>Wl11!WD1n?LZ*WV|+hmQthC7cAl8Hu1J{7b2yJj7}5ckw&YZ~7f@6wlANBHSD z#o!_(gk89?F+W0tJ9w$VMB50o`kV1-bi7bcEiz-V4Z=iqsd*-LS~#O7Sd|N32!&d8 zYh58*a8g@tk<#T0=8{^GUthESzqM7fwF7`>$>G$?DF9`1>g3LNrGG8ltz7^XTZXH} z0=!Y6d&(5ppsTNkzooAdP$}SCHWI*6Io=`_yJhu{164Z!ud&*FS`fV{K@>0BB>`P^!G4RZk= zxpJuoE`XhEKW-We(6^wnM=!8LM_)aEz*h%;3+xIW4>T*0875+Sctgfi@oVXZ_-F1M zsju>(JjmT%o`IsM9G$Lo#MSTw<`c!Q_EDFyY3QuFUMu1%qoLYRvX1M6l1WI9=NF^; z-IJuT4cC&uvT3!$m{#K?}Z1)r#G&E2u`1&P`%v)sSx-yuMD0JnW@sTzp@ zY-(Oc+YErO@*3v%&jUC}PpAJszTU%2isFm=uHD(pW;V?3PUuiQX(x17=&tVRS#pjd zVaZvLBm$C?NS2(VlCy$>ps3^^2nd2?kSGXC2EhP6XZQ7akI(t3{U3bJ)ZA~~TlaqN z>ox%V;sN1TE&+({qpquPWb}FOb+7LEB~|oK@-Ok-&aNMLBY4_>yg(1SvpOO?MwchDTJhTIQJB!(X>r;&@K1HW2sP3F-p{CDzdQmp>LKb7y2 ze9aW{6hFPJ^%qQ~2W`yO3$2y4^ha7Oo@FZ~1Qc>Uc@oFh2>T_+Ms!9teky2hJ623a*tOgr?aC zht?}d`OT3jFGe#^4%b2+h7-tKZoUl3_auftA-_jf(2jhxa-IxRKjRg}Pm8sed>dsj zwXujWUO7movH`-UN}3v@uNN*U#p*Eqf{=h#sK4onB14bVkp>pKqbgcTxRtmDeW0xi zj}m`H@hoJn7T>~+*azkju^ze1!jXUH_kpufSE2zJn5d+b&c6#;qq3`I0}w2rwqXST ze8GkJJ{$mvQa@=d%mw2;k3FfLd`m`QjDNCkdfIva)4*+iW{w!lmLCPL6^J2K*(A@h zKMU1I+2{{PWBGNw3g>c5Wsz(k^SGPxbTWg+@|^N38KHLKi?OZL zNmjS9i10vZuQI*#KL44zQ(rGMLWx>!#W?=J5R&s&!Dg;V|83(KX40xN=_1Y9{If+OW8p}Pg6LYtHZ z%3OOu{sEmwz&TF-3D+c6?u^`*U^<_(DL)av8ppR*8q=WGiJzx@K?~Sc{yQaKUB+JW zF=&A5*CT?CPN-k#1BADbU#nxR7gnM1+I8cia24Is-U}y+B6hJ{6N_)*Hmsl7N<4;_ zu#4s>(M2A!=8-kxd!&Q@JaR;APZi_rKk#S#rT^<P(yoKr8E{yvJ4m z{;(5gu>*i@!UeIkdeG6;$KBHl>OApw(@5b zQQgR1@#WA+mFW?o0y?Me(+3EB5z-nP>xH#wl6Kd)DBMJMwF%)wQNnJPXJWB8Zp-@r z#edlxB}(Mc|IhzRXS1v38c`#^uI17La z`RTTA^8t9_T*`gv1mJ}@1uhb!0dPlo*0}0|G2U*z*Sv4XJSg1bzg>7Ly)ZB@I6crg z=k;J+d3Y$=ribb&m*r*lUqh7;Lp}s*#K!emJ`b7bu-D-i6D7HhX z+6M*}XQOtSFWgEziFRqDpbn;?fIqx?y z8w$tx+Z1MJ{NfJR)rfi{;*aqQ> z@{~Se7lm?2Q`_i?qK<~D$8;igLkH9vMk{eS%F~V-qr@xd9qo+Jv9zt-0%XLVpp@VY-}TODjIe-nIU9}sGx442<=rpqAzP-NJb=2mhgEngIyN zTWqFT1pg)Z2LPy1O``$$DW+M{mT~~>Oh1`nH;Pumk%-9^3Vw7ko>E?vb+X`(NO0yc_%)H z+jGz4_T(5T;UdauvYoc)M<`Y4C+Y!yyRx2c((J-xC0T9Gx(QzNrh1ue6k4Ob>Kpn! zVH&b)k9A2ri27@zjAAhgpVach6T}KQpM4eHCXT}mnQC4Wf5cPRJTn&h$T^l2$%8|P zsn3Z7U=e+yw<-E}{%TQ0mg+G8^h)WO-Ygw}(K*=qX)XX!_NR8A9e`}%fpC@w0J^TZ zwo4As!kgs#-LuM)>p$YZQdlkh{QwAk7g&(Vk8#!Aw~McNFF>* zKGXe00l0%sGBPXtFMrlw{x{9zIwe>V0U#N$eAi3>Hd!y{*-HDL94nlo9RMhz2S$qk zoOWGu&vi*)w|Bj7vNtWJuHPG||I8!-DhSB@nIHe*Tp?2U8E1%M_+Ce@6+0{DCAyh%5)YGiHFa+IDJLwyR z&8Uj@T)!vWMN73wh9p7^m?zv^?1V8p5}qKg#a&pDxlQ~HFJ~Y8#h+BhAJHe2@o&}( zivn;bonn;#2mW)QW7!1Yr%BtAD%IMAn)A$Taq68b?7$~A4#GC+fsSVu3}iJzmf z&ckvxsY^O@dCFAcrw_QcN))xK9r+KGZZt{zhCinqp;62!q$006lJyWOq4(4%eWTD1 zoma=`_k@*5)=~{gJcq_=3ykJsI=-sO;R#}W%(0{4ZQ?B4ghkA2;?H?JvMvP=EG2iUX%06K87 zd>RKpb9f6r5Tn6tcOB0iR}=8ed)7C~dp4%JKO>Oi4`oaXSVB7kS8|R8XUJcM>e}{& zmML*clB1Tq8Z|`|oJ-_+_#p1W-H}bQhCJj7mF1*A?ZkIhqG)aP5I8QCsSgI2c_~f6$wYt585|Y)lZ(qG8%aW1EKg;i+^2#yX@xcjuYdqTL2*GH`A}A0dO(L zV(n7e?`BJ~$Jqcl$aUmvaR7{f$x;-wfJN?Vp53m_;EZ>rugDvTmHemtD+`BbvC^pSMGrPJ(kELE?%ig&Xdl3Wn~GO zMGx@XKsiOwZCrF|fM>;*Oe7Kj&w16%?)=(f5Kz$MWmd^LT@GbL@6|Bioy z@5`L1;HzMXzn`sqXu5nc*wpbj^no&6e(G!@FF@y%wcIj!Brd`c{)X%$t;v_XQ<+Fa z>K0yCu8{|Hj4(=3>DTHR;Ui@uO)|TLkZv4)`#1{NtiKez5^?g4eWDs+<)kQ-Kcrdr9M#I zl1`QbV0QYM%+r|wz`U=@@}R5E-<_rIsVm?FxI@SQZ+kj;TDpKGSlF|$h4)fgT3~&E z_n*xf9DERZ5g2S+6q1xYxrL*OTnoLSyl}3RTjR@UJ@=dJCt*^7ucRy`S@bJ@lv0lV zLOsIQN-z4OI<~ZqPmgJ51s9Ukc8nLBp&{x;)=?aXj;by655;YW*DmX)#XG2<*2Rd0 z4*ae5+_1w|IGari6Sxf5V0N=M{0)z0L(O)u0{MYGGT(t$NKbuEi04isFp4~1RfK>%O%k&@e6Zyd$0Mn&2(j1rvQoO}p-qYUlxUil7b03#JA}}GC z8hD)ZA~;eGg+|&kfk>S;Rs%aJ7`h7{Z4<<#tO|*2X!zzD@;fGRg2Dx-y%tyu6Gop@hFWmJ`}_Fy0+CgBM!m>YaEV+ zU*V?gkFXualBuk@NgyG|*$%Td>`k0HiL`^?ka7Bf$UAT*t!hjy`gi`SQOzx@VgT5m zGP|tr^~anx)+4z9RIyWsVF#d_K*SOrfRV0{`#XsP>%9$qsosm0X8zbflz&+I%|LPJ zP9Qb+jnE&mB#*V#k{hF`N+-u&c`=qT;DXAVHxY(nEi z05)VyE zUJyJSY7_M4&I?iH4SABSl{^9cpuFigEg!=}a5NWDhLhD~6E{~$qRVL&{+2SCZcumf zK@_9z&m>eg$k5f@(f!|xfm@`dO5z7$6`0Oa1Ny*=}tc3`YPX(*JxG#Yo!*gs_x>W z&=<5wD-?FaW)$E@S6~kI*&Mql@AVRHSXzJB#^vzE)%`5nsd4wByDZ@qO%L z-NLc(C~nQ-O*>2`Gg&*6K!coO`^?&~KM{02(hi;=Q}iQ|ci6RoL$=Ya?v)o0DvQ0PrlUmYAdWNIbbx%_000P+-*P?UyZ^I z-YT(k{Otn7KPBT?pl9fIplxog&>8u0Xs*p8KUcg;AIBUy5syZ(+!HyL0J52@q6{HN zNHu=Ea*HgXyZQY}T{=|t3$K)Qw6!)tP*9Z0v-3g+)Ks0zL~$Bgt)}Xo#U1FmI$mEQ z-a|FCc;k%d!1J_8Ml5WE?`hVs9Ztp)+Zd+s2i$`B&Dt=JEM!y6cCbBp$l@dKz)Pfy zKJ9Pu?*mYytnRZso=b4WmezYGWt7&tzsntBy_y5SE!#AE>D+G>{vtn`1K<|yBZZ&^ zI6X5xG48iPZC`F-FYo8E{rzI#M&X@|y@9Auzrdi}w9q)Ya%izFNuI21kOw#h$P>^- zC7%01?uQHU7EV%Jqz0+Z_f*~|(R2^LUb#*7(17rhQjv~VCkO>-27OJtAk;%wX&Mv7 zktm=JV4cNHsK0uhEfKGx-D)HKjF^d&wF7!AtcHuVN`@T{!E3d>28CO26ni~f8PGHOa7WZpUvHn=b29CwKRd9}=gw^&tQxxK|H?Kzv|s)y_?3gn*OWza zm|G~{LHCqr+&%d!ZiQ#^RB1>0kUXJ}a*$M@lZ17OL^ITf!bN2my{*;|lhARxTbnIv z$e}i57sd9do4T8&!bxb0O7udw6}?h7=+)s3R9o{I?O+yOsBJO^!G`#;Rxvys&c^|E zBfJ_$lisX}xdXmSerD&*6aS(A&7v-p*1u!MCS5NFz@YS#nR_!!-vPJeoiFwO=Kxpw z4!Q>}fNONL6s*{C0w2j7VkA%i3U;RU?DNaNK)S+yS zxD%aJ|6muzN64p*&{Ls=-__!cLf9H#&}JDm;A~vLJmL26G_K3O2@itlWE2aV(_sa& zhkanKhNDTYo*mf%z4TN4tH{6ervgtju>kOT;^>rLQUGY2btJoWHUMV}hT8@g0MLYA z%lGF1I3Y#3X2X0?-#gALdfu~y{FD5O1VQkby&5l3q(} zgcoVc^||6q9K$Lam&EU}!LAyqupH^lCWH&2Ox7~HSpzmBH`x%gJseBi`ZaS9+(G*3 zO(WA`GCieVimZl%X;WiD(GECJEea2=@W1>8e`SIR2_$i5A^>TbF_?zjVhEI13+6am=fZss}T@`Lw$EerQ}*Th`%e;Rnl@5mSy%#jBLSL7zj1C_z@ z8QTi^5_+hdbU-DaEWuT|naUSr7kSA&R_fC|bUt4l{XoB0?ZQmdL@m*#3FpuebsT#v z*s!S;=(WXGc&+xSK380XlURM@l6Vmpu@WN{rjfpEX1EX{vYzo~4cLPG#73Cy;W*;a zZv!|xJ0r`fyTeuEVT!hRS-Iyz)<2y+k|L9+Fq%;|6^>7uudtcDytr$3GCfIrh&#`eFR|Lni+eNQc4T7ECx`<2!_ zz0~*lOirRTF$aL9wrciY3IH(pQ~aA80J+kKQblM1ojn&lE!iZvLv<{vLB?hnN?hh3x>GBQRTXJnwQ@P~0A$P~?P))9e5+Qj6@C%hM$j@XUe^V)> z`zR;4&}_O|oi21hFX$BQsW2ZkQ6sF5cnp24e#YjBf1(&o)-Q`PZl-P0Q(=3&K~oGr zoQT)Z4S@Z8E8$BHfY+t-QVSRZ`gm@5 zD!PY*eZEPBbG&BUH~zkX6o2!~V6a>@vUp4w z$t3`%r;>X%JRX%?INg`)>75D#;lMoKoZL;pF`*KFti2@kOfCt!oc(1Et(1pxKgv4( zL#e{+ii7mWclgoDEHZ`+6!t5CHlt63Xw->@)YhVkcF|;QyVw<3)q7eToQJxpZ?ZzT zAAPA_V)fu7l&Ce;dqM|prk&6y!UlMa_PVhWj={famyDfoH!fs-!e?PTY0r|)hp+-! z&E7T>q`gGcUzm33uWRo=e7&M7SODlp2j$B0ei)RAmqm zNe%v~l1_8zeZCG_O!L(t!b0R!UD`9@I-09GSXE!!`Jtc1rid zTUcT}jQTK(v|!2Mo=_vx*r(x%unjrHkhv00APM>mb0_?oG}K?3XJIs5tq+Mjf}Lo- zQNAcaDpIc-*Ngt0pG8f!>enP&7wkgcnS_zQucr^Eea+a(m zwRjV~LqDMp`8g;-J){m3ZlkGciS~;?ahf)XwH1fq@fy^>68GXiw7q&fv=EhbGW^g* zda;CXeOQ~UW?REOVQ+GcQF9_(Km>h`xe|U$-q1m07fhhr^!|~vu$UGYQALm7cXXMt zsVG4@t6lnXqlSCo(om6Q~Qv$6DQ(1nx=mx9>X#0dp#Z| zkTC0G_@R&VWx3({upU{@c7=PwzT_vSn-k$;BI*mwRq!b3s#_wvU?Sb74~(3J&1r#Q zDdS&md{UGkom1z8SN#Kj_o$s99{?~TxqfPN3IL((b~&fB0Qjk3uI)uW04KOEd=3Y| zFL0hkEIU^V4sN^iN)ep>z${h(BJ zHdkDv7oNawXovFPLQt*EDHP&9Nhp~2%eJ#F^ z7i!(~cz6f{_Pg$f7J}Gxqdw$GXXXv}gq6txb|gFzb|oiR#9RfZlT>|?xeM+mP4w8v zS(r%I=_4YK;9Hb8^2^TuRpZLv&cFDV^V5=;_hZII1K>-)n?5EDfK|C2txa+ONVRXW zyKMk$;0<942f!fdh13>Wz*djTJI>t)G%C#SKlTRWSm3unCx7G213{|5o9sJ&9#iIqe6TQrGVsPrWP(tv-aJR=tRl&^w%(HnH6FacenN7P@1L#V2{U288| z@M^Ug`&u+`jP^ZCfN$Y8+G~0MF2h^3@AdldERJU_jGi!#5cZQX5kk_D4GFJ;)yN!{ zV(x-H$#K@jJPVhT9Q`}<5qwfQ_Yp~udei&**}ugFsj_P%j0N9#uy>$)5~xu4vhXYK!8luBS3vR~ z%UlpV9@-kHW=)opl=&gUzDy3F8}e&TPN|MXG=-a@xX8QsHU5tBAsI$~;fqiPtxQJ= zPBx3K`+idC&puMh9x@!C?oC(Iz{ zHJdRJ28fk?Xsm*@NEPM{?}8mkAGR}m4h|zL88IKhdE^S4Vl{P#bfI8W2a;|3sFwUNAA5Z|mBXPUXnu`ZTp4#pK@M=`!!VSJy&!No3mI{g(;SM%YJ42CqD8JbssEarzVeRlUvA zuLmjz9sXSF!q8iCY_QlqOg^dvN~j@iN-qf0 z&{0}fZ6%&YmDO6>5iu8UR9!3=Ho-aCI#vZv!-F-XcY}xUCG9JH3XCQWR@c}FdD4(w zGmgQ^6h!wzDiVUYbgtvEC*x?IVVM#tciTbe7&Y(pcI>bpsUrJAX9DE7Sk< z#3d`z+G0>ksz7N*Fd$Xi`EcUqKi~kFA2Y) zPHGjcwO9jRQ)PBkoQhj$dsr?!iH~W`^eQl!IN2k;I}DJF`jHYAgn9Nq}~k^SsK z_!wM7qV$^PUHC1jqOUjOB@3OZ=S6s_F8x`b9|=pFX?sI0YAnrB<#1euf9EGrt1Sa# z0r(*GR{Dr^0OsfJu-?xF066xS>3=)%sTeH)Fwy;s`CH^*1(EDzCSnP zm!M0|2^Lv9$?KJx@|*T-MZ^1*mCm(F3o;Ua!+B5&{hZ9_XQR#Z0IexJLv_^~>SduW zzM#glw&G&kR$Ic3iFfdinyFi1KJl|ldKFkiy0G_*?yv({#{A(aa6GxpE`~S4O~j_x zF^|E^q_zIBc^78T6?#D=UTQ>t)n`U{X%%g62t{EDst=7*MU5q_-3}l52Y%@<{ePBF zIqA$lsWR-c10PE3(yAV9%TqQkH6)LP$B(^EacarWArJlEhOMh zYP$BL&;~zHZLFR65$>aHVc&@_@O`bJZiP;Q*h9T4tU`LR8Af;5g{)#mcq*JkuCbrP z8{rn>&>Nb^;1$wV|J1w-%hT1mqm2JIeNGvF2SY65e_;Gj)L3HL-SDx0;9n7St8D%~ zA?5qj(!H-AWS`CXJqv(}wjXWo0s!3nR^DHF?xlSag;8LiC*U3DZUa^n>VBs$DsFP1 zRq#W$YOpJnogI~y23?N zpsrD`3Vys;-Kw=0`{8Wu4R&1o0*}+4GAsNYKh?(QRiT4~Sf0@x7LiWuQ)4P@L*}#B z!kgf`VzY0FZT`wRGRxXuHi(&jx^9SSftM0dQGr>>30uAkN#< zyU{%i94f5tPxY;jn;57T?C;;684SH9R}2oawwFIph&;;vO1^^zC|@|=RkFx!bb@=N ztRWT1hkQdM(|lTASc*QTf6{BhT_mda)DB`0PgAdGC&cdfx!RNE!Bx0eD`8dP6}(mJ zsdtCvND_OZPlYbR*f3)gtU}&k$>Hx{2Qrtf3YWk!sA1kIhZrv4!{|q zm1ySy&|Dw8R=`-`^p5tfb}s}w3N`-)Z_D^Tfz+VxuT?%VR3M)SOtLnV>nLA_-nT!L zhoRr(UCsf@a$EtO;!2d3WF=n8H$oT54AM|oiyF~Z^oH;&+C_tEN3jZat8v=*;ut($ zy{6^C{rHC3fmMT1q)0o(dO$mwt<~12LWA7V_UfBpQ^K>##&@tUsmBf)C2%qs#F~WT zr8Q(7dl=@WUE~t0Z-%7{Bwzo;Y%C?xj=J@4{Qvts2FJ?s|Bn*(l-B>t#ifr=2jD@L zobz3FsSn1FwxWX4KF~#i%Eg0XPd#@t_$X>_;XdDGx0tptFeK2+XIh(wehr=TFSNIn z>nYcRrSHCT&^kGW@1`8ZDd-x1RC$NY!HWeE{YpL{rq~PhrbFm{@l$k#wo&cy9;&X^ z&>BGruTt~bNZ0~LYctt8I2pIlQuX6-2i~Mj(VxJ_*uv6`@=_KFvH1p)WYU^>!wsZH zWC}YN?k)`_hgjGgD}71I>nqHqQZ+h94@S2AhyFK&{(v07PjEY$zlHyLX!>(^V_Fs^9J>-pOh1V6R|~zmfIV&@B1SzzX|T z86dwL%{5Toz%!J1{;1NDc<>EgN57E1WQi~bjinuFk$49sscqDQBEh58cA5hY!oR4L zHG zl{jvl0?7v`i4UN2L?yTQ#b^Y@bg2-H^VEuJMX?25qqfw(5!YkCR>Yj}IbNroVvQh2 zGFW&0U08+GVF|`M*oBN?YmDRYeX@f!2tR?Jl3&@YaCzw>VR|bQNvU+0zRPSV)ucys zInrI4Lw&}lk+G6RU2VKxv{Wilhlbr1{+&M%wb61o7J#Rzf2NO22jEKXC2L780H))K zqo%#|{W}Ym=Kq)7`JP*n7nJy_7J9v_Vu}N&0yclOjE14Qa(-~Qb+LR!sV{G{H&=$^ zqe>$8i!zo>!KwUERGIE2cld|s0sVol5Srp?>aS`g@e?d+S?rK#As=g-m=hL~JocLY zI&4Imv#0vIa3Gn>78~o~hvXEi9X<{ZkWBqm_z8SWUf0{0SrSj@>3dBi71L|F9BC*m zqG98sNO$Q8U1Jm#jgk&P#;L1>Zg{Qg(W;31u%Y?bVKJHP)ebNY z5+brr`s=U-Y0u(}ci~9#0sGik4_A=$tT=oE9wE7UocRR)LYnCv%`6Gh1^PE8mRi!A zI*Bxt7E{yM80juOrK^n!MPsFbfAP=NIP<|j@c$fDJ}LkJ7?si?t+f9=C#PPnJsW`O zHn+Wg>D()C5lZ(Sejt@|RfSQYoVUAovAYXM@^|$k-&=7P1IvT!{bMsf39XUW1=m?W zmmzvzK5TzOS%QC8GPoDY7_tOs@qLj(x046_Wps>grE3Hew^4Vg)x>G|rg~C4B3{Cs zv;mBR<;evtL2nExaj`}EC|FF|Fl?-cgUKBBopAy#B1c)D@DsS3#ObMKmUM?y(Yu;h zveGg7VY8vsh@Q~(NOx&5m5nbVW2H28lTlo>RJyAU3=4nbZv?W-Bw%1%RKma*0QzR6 zWL8Tr^*i`A)wGeUF)T;cY0>&9=ppfJtiAzOB^paLPQVVN3tMPBg(Jy) z77S-eOUV)TZ5T@jNQ`cn4W-AViayuuE(Pf{-4Yoqjit}^@sXucoZ838{9F8si|!KD z3ILFh+#tD4A^?G`Em^44_bGpU{<~HHsyTmfnsxx*6mN>PcmOuKtnPg<4h;5w@BQAr z9ytBI{m;G6;|~W~1?%|tmmeIeFW(CMV4W?$ulx|YWUr(gM&*<|?u7CRH$nM)T{MmC z!B6-vP!3&1)(ciVllG-G#a=j0t*sstx8uI5r13C{oKY>T2^5L0^=G4C6*5OFVH;q3 z@<{8fpMWEYi(S>9!o{Q!>u6+2+sV7E#K6)ivXKo9Hp&#a16eqdf86+HLk6#WOw0X zyjp{LsoqDil{%9GB)|%d7E&$Jl5H~vOI^uCRwq1PD%FR(;ce3AmuVX_S7ZY4wY6K`lrsH4=3HF5|4-Ti z3x#A*)w|d8OzIrn(=Yo4@3XXS!CAp%|5R(CyhVN%cx-fY8N}W-m^7Pw%pBns(ih|w+Y=rlT_d7ynDeD{+EHI%Zj)-!je30Kq_lvh z8sj1lq-N@NgB1N2f7R%Q763{TwxndF0`NxGlWa2^0KaWOjiQfiSE=rw*QilZjc zg{No>HR&s%6>hB7S67N(;GfkVT0V>?{j}Pw7>3Am?HZd3n-YT!*LT99WB_v*C2$GZ z%yt{)rGw-F>k($s0}{~F%odV^_R@QqL!<`uGyRk~Uz$P_jOvkX(k0r>I2<`CHBw8A zo<$F&D%!qql?wmP52FrQ%EbXd(sD9N^Z#V)v$FbsFGsesk{y6wML&Gb17P(K&o!wK zu)@KGF7L^hxq+x)fxlPAy3kv4L2#G#w48++%JGiH${u`DsmxVDpOE>uG5;OvM~@Iw zsD-`iRSLwd_=K9Mtrp9XZkm%7K#lyN?PSei2U3N#*Qdhw$rzSk?1G!g0k*{`ffq=e z-YJ|V#nBpis>viwC+NM*mQp8rLO*Q|krq>@Q9UwWxt5^_R6P)MwX2!^e(cVQsCLO-5@PD}a?rBKv_ghuukC)?c3nXObzbz}N-9 zBuCf*qXb?f$$H;#mQ;?`(X&h@X>^L-&ul5ZNl)qL%^}hf${V#J3#40gh;gutzr<)> z#y>ioUg3fCLaS-U{{w#@x=NG|0C#1#f_1vmRIWhTp~<;}rI))#VnG*h-aK2l0>JgURh zKwHQr+>$?pI@1HBvcPbHdVt1?3-J>5q`FRgiv3!NW`mGy(#EnDuolT-dHOWii!@@J z^xbd2kV2)AyR9)L;ulSAkCwxMuW&U z={9}KI1xE1wN;-QeTyDQm9$;qqQ9O0{s5Nszn_bLnBa&7z?=DL=InF;V)LfvX}JKr z?|A8$Z37@v94Ou?-TUZDaIb{1;A8Jg?;ZCn(AK}vuljbz%fWNOY5rN|qvg-!_QAxw zE3ysMmfeo2%4j@WX~1!)7s@#rgY^yOHmNT?tmj2eO5agpEQvgjUQ;(2g@22GlcFz1y$=9bl>Ae2dJ+I% zX4S}EmSH%Xx1!oKx?P2cnFfqEE|3}|Y z_t~`M;70+)_lfmYC?s$96URY$q4G_z2iHxB#!KaC{3FFj($F}e13E}n;-=zW)QoN* z7MO$2(;2h@Y=>W0N2t@`a=cgVt9=Wvmz)tgDxiJN_)50g5O zrmTvwOd3hXuoK2UX$jfJx`uB^`^h~PXIflOh+l7S@-9k;=ts>W*CA>#T11NfL;nXw zeP;pSQ_IsNS26(aqx_S?L&PXGpXZtJo zQ@p|S^}(&dmxV{H#q#&^?LZ}mS80u){5JQ!as^LSX7TON8Y1I~!Wr}$9Zs5y74d!A zpT@vNc(^)PZ3rJ=i#Ar90UhLBtseUpRv|C6bL>y}2BEB*9+1Y7p6pM(nY5m)VDpS& z(lK&@vG6kKDaqEag!h%*^J<$nrG|8#zQMG(CefREeuQ^jp*4*~ks{YJ^|?`}=)d?I zMGr3JPxvb3&lCWfXFbbSvjOngKCp2G0K^DDU>pF)T~l49{(pUZvMz#<25V2SVT z^j4w!q4dBl>sEQ1Qa@DJ@xEf(VCPh<+{$6;v6rgQ% zo4HJCMVIQs%ze^ydRM<`-ju$lm5de~GOk2;*Ag`l9#d50nyO;cCQdK%ox0%DGKJ;sS zn7K?^O%sft%ze`J((Qkdn^I8SW}J&yT+`ITaE~J1#c7Aao(dIQUe?1bU-5tW)xY-N zRZN;+Zgvs?eAbJsmgNCREJ(3!&I4dC=jQXA092DEN>jxs5bf2xsqRXE`g`~vd0WTT z2wn~@@OR9l@?&{R(2-{AvX8iPBfqipMo@B4Q=b$rmTJ>sx?m2M z2GYIyd*(7}JuPS4HTOxkXe*;t8i$V&80^T)OvNm?bpl0I21f;VOpFV3GHdce{Ha80_Eeuk33T zKPV`LKKHZo73FBeE)DAI z!o#Hsw1@6DmrFh9$NKx`e(6K{On+$JlrGbnMu$j@3#lI&w<5f2qpF7AFRI|0t69vZ ze>?w6fL_)Ccr0OP;*3}Tu4dLQzcU?xp?SaNy^{+-sk( zKSUL2M>1b%gD=pUw6nMqzo{B(B1|IpRjM_Hh;-2k*lgH@Tr7PDg9C`fBt1%+M_RH? zdPv$vrm%=nES({H*>Pip^ecJJ-V867>{Qlc&HYk!+Cy(`-joK=P5RenjB6W>HUbge zWmVrYwni$r7N{jgrJ~|etDmxuw{(o&4*(dOGCAc`5&(^|FJz~e2jJa;#|0%;0Ge>4 zxn*_$UV{VS93FtR?h^NNm;k7+kFT8PBv|IZ;&=MiBn%He40iN)&ywYha$NAOJW+{9 zFGJ%T*OhkIrA*<*pkgurt>??*XXHL!Buv8N>2A_he2&x9c{B<7$rSY+wFxXHFaVWI7CqQwx;7+k(#oeuj(^8;# zv4-CXzkbi@IiJsm{SRJu=bmS0=KVYmzD=`?Lwp+?&-NR4`7d!*CYvE}EFQ|nn|8Pm z?`6-;Y)IB2oowP^ZgBC~4AaTf7p9M$13jS1Biv zTfN~B)FF5%+UcC8+DL!QxL4{n@)a4&38=g_MLW&aK?k)4G>q?yZ1fH-$In5zv>)rm z??uyTls=EYg-+9z`eD8_F3oBf4|y5qu)mCG*aDAajZFpS;}dMBSr4AWRz1s~2L&=* zU+2$%QSmr|8M>>mOp~$mIUB>84^=G_v%kBn^NrmJD%P&Ln;eE1+EEq+YUfSv7LB| z_kojHm$DKvttFzp^}NyUZ82VHgH*;_Ev2g5Td6LsN#_+iIxlat{ipyuU%hAVtDeW_ z(LKj|^;_};?{zX%Lrd2Tt_OOidFXg<5voeh(KFl`R6qx^aQ;2IPIVhj!B!M<84 z)5y+;O=*Eyw%mX6oBuQbY!3S^yf6%a*72@{j&T6AN|UU``FF2v)$K_c0DQx5=EpiM zz{qTs875Q)?cEdI4>R|coZ^l1ed}Hn+eu25H+Vay43vLTmP3SEx0tba-ReMCX{_!c5xa2lN~=f z+SmYC058IpToCvrGuE|NXaP36AG&i~Kb1P>ZRgwJo*LIj^2y(ON2c_ZFDrAT!|4Gf z8^tR7ZTFNgd{BLC@2wuk7ttff6LlcDh7UQt$f`Xi0j?F=td*h@xCzKc=g@Q9R`fYl zStS26T1wBb3Lk%m?s{+DjcqK}n9n!BE!p?R5&kPYpHcG>zaHOYGtFpt8@u%)Q-P2S z*Yo`K;Sln>{@R}hf!5EMAIOJ~HE4GI*ZMyL8vc`e6dM*@5`cwqPvZWF2H-_X>(n(# z0L;j^mvPDpKsd*9#l2TkgdM^UTuIQxHPTg5Tn~P9$9t-|`iEZgw)4$(2jaU)F>){O zl9bl+RHcD*Aw5G0Lrdhtwmr&0#H-KkRn(ri6ME{{p~jH9_=qzaEhRZ5oAV=&RzaJ{ zbwF!1j-KPjqd2;XM)K=XO{%bp{CPBj?qR+8r)USQtuNr?@t^dzeuURBWJ8Tdd@gRy zV$B#h8qa54O$F}4ciAbkJ}knz9`NVE&&g{2m_HxhC8AL;u)26__whL&{C7}k3jo!l z+C=RP2jD?M`^1590NAYcthN*Yw%V@RPL?h9eeB`3*a1isJz^MN8hq>8=SmQN2lw5H zo-9|X($~GZuZw$gd^hPADZ;xirJJ0i1W7m2iLz34%O`BNl@aJGz*3&&e^ zFFuZrJ29$7mf&(+XLOE?B9piosD}21cAndh_Gw-k#XmrabS16GN8%ckXT5m|e?^zF z1^j1t1I^Tr@Ok()-K0O_C*gQj(TIV|abX{Q|En6eCt+nmaUKG19hM5fM(0C&os1ALUo0(r z>nt5q(S6SqCRB^=?>*zWo0*kTM`|KXbYD#O$Un=oy*F%kA8FbV46w#rc;K zi|45kTw8TLUWdAKdsRP~h4*u%(E&1rgz-M4YvZ)){AXybR+)ao=b=b?jBewnpz^d1 zyUVXfz3Ej}2A)F8X$M_{kI+^6R&N2LaTNR37zP=x%53Hm*aeScL(CuGM*ItVXx@Rf z$QSxRKM?+T{r}~eY*9l1SRd>T&x`(f;FoP%C~mx6@u4 ztjs(k=JQ*EZnzt{uZeS`vwTmy+p}t=Y?4CdeV#k%Gv)P4v~ZyWWn)Fd5k!f zIQyx~@n96iJy7eA0k{VzqCdzt7q}NIVYYyC@MhN591hRpB6ieV0^`VMI`bcd-N|-+ zkN*xdv>wJ6flu)d{;2*?)!9R1YilwP=dq?DDf$X?&`^is+K^)Kn6?U1q#%~srw4(iv~M7r~- zT8ZS~G8{&4NNduQ>xLF;W3_|ae3VXG(Fpz|>O_lZ4gL*UM;EaXyc0jARrT-qIvBAR z`dxky?#GrJ(QqZ+%_LKUKjD&kf!P8kkp_B^IUKek>+~=EOW-bIH9+7XET^qDRs`-q zj#f9n%KqQ{B`qaFel7_>OmyX#FQWmdlk7{`odm$^^xhecvH*O}b>J@80hl0uDSpq( zAk6(XD>PFtQQh0u8|uCg(^NVog?RH*zLw`JIg%x#lj27wk8h_yU~I zW*c|;{rC#=n9=YRcIpKtg+7v}7nvteoJp};S-pd}F0l;_sHGa6$0(xhD zlNlt`08`y--FGs%QkT7zd!OQ zEE0|@It}zEagkWAA6lU`(|U93kw|OO!`v;@k3ON1d@TNf&R{k9Y#hOI^pX4*xE_0@ zZ|7&>8ElPlk3WWgWyp+%@3E-QGATr)uO8xW0sD|sdO!bgc!>Cnzx+#}q^&k42M)p$ zTBcbu`wkpOcl=j=F8Gn9BLHAknFG;bQ2>-q9+RA(0Kna{+3B0p0C?Hmo9i zST!8S)z|nks^Wxb9r*>vbFENg?Ir2M<)ar`1U<~{Llx;_8pS_EW2nh$@rn2Zz0O8{ z{2d1C+xd>T26Gtq_yRnhoi?K3UVMsGFe&^K$LWjBmQWatr`prCv|Hkpw`3Ez5S( z3P5eHDaYFZ_#l)Lk8`EKde>oBn79|DdMbKqx=x1re9L|F+=Jp5OQzh*`yyqbd|YWL zxidN{ZnRtuu}7&7QKp*hn5)jmT~T#s7|J0HaRQf(ejzo#No>OX$h{E$__4J-h}m1$Q-ivVC* zVtCTsH~_|4ms>w8o_n>s?9a*q@RkeV&)5NIBDNJ%`Ec;Y6`56546?XA)jg`KYiZ3l z-1mjsl29l`$T8l8)UEPRrG%tsj8mSfJ~_-@UR{euDmjjy)kfHYYB^Q(5}!j!Tu(HH ztigS`Whh3=Cr7!I)X-z# zb{x$P=@eeV6<8CaC47kcvS-F{_yMnCHO(b3iriv_=0V64PLK27fsII>KJ=6NS73H1Mohq!bcy}iP*&nOA-KZTK`IGlL|mz=Vp6&Mi5vo-h(xr?<~#Tzq(Gr ze$lJES3SEjyQcJ!I!L|UVn!?ZtvuLkwPz^f)uB>%$M?zz^h}=MEU#ibRSj^P)GK&3 zTE>N;Ze%w8nOXq<<6xHro*U&3X0I~!{z3xDEB{k5qJlgV6tw7>Bu^nbR+ zTAcq9{3NVc|Hns-kDU+;fFrqdO0{GF4rc^1lFI_nmLJRI+e5*j%;RDg{$x;)C)d48 zyb#^qSJGFIH6`U|DMK#w(2O(k1tnN=+NUWMP*1s!gQ;b3qB_NSSUrvVp>muJ4I%yT za;_mt*S;Y|+(@)po1<0dHzFHtK_~J*qR;6QdXx{rOXz4;#Jlhf>d?KgJ}%1+=*{6^ z+=6vBM#7bN9*Z>Bz-#y>>uR2dvBaaFH($X=y+hK7OWdKk|SOX!K2tZZ`*FvFZ@Lo@EPZO6E zQ&u9(bbA-U|~>M1ly8Q|EeuD}|a?sTGFq#UlmwMA~N6)EKA zqN~~j?E`lj`Dt5PgSX%@G>A>)z4#nm&W`cTaWbo|7x80oF8f>e!EJaE+h{b0_wnyc zGe<%z!TKC?Eo@3g>ZSbW;Zky2AL@SvL$vxvSRh%Lq}?~R1azSe?QBlS{@?uXK~zX& zDFD>y&tiH-1JEwnOj(fxfIVYmMs(TY+{eD$9y5ZjQfrFS&6T`-+KSb z8Xq%K`b~P}`7vded_*y%rWvc1rs#ky+4IzDIA0y=h(a!M2F-FdL2t>QIER~wc4-c6 zC3gX7RH1+m!{g|6T9Y^NbvlAg;=jNG!}>9P9`3~+=tcY~yo)V2d=QWlx@tCunAFo} znj>KzS*n-tuZ7#l-}+$xc^Iy>H$M1Z!GYQxV^$zpC_}57O|o_2J9^FZl>1NqYX39< zO$zTAQG5=1B)(TdUK{`=tX-`ei}U~NGwdZZ0C>T_=X*OXU{&U_%ongOIOsm+zLq(; zR9Rnd-xzmh+%c)OJm32v<++@#&Xqc6TvrN^N73x_)FIe{MmX%K2?@pXoShM;Ws*u< zA^KIz)mCx0P!(F6TKFV9i$15d_-gn*oy#Wk{jtib>&N*Ocn~YnKk!%ZLAK5C!B7&R z8)h!_lP3BCb0q9f3iWXRTDY57jA8!sFiPuW1P5NhA=*7-ZXj8Rq1DW$*}AZU{%Cst z#s7c#cSD0cLHz*$T=d`38BqW`T>kVpDB|0@`$P;D_^`x;Go0QsU ziJW6^rN&`Fo#c3~p1|GEawkRoNMl@$>xtsEI%F-k5G~W{Yr*^}luUiJHvbAWq1)*c zzATAOA`HTl_Kq{qvwZ zANT*>@EXy@_n>*POA;0(0I)i3<;OhCYR-Z7)9FE=P}~noI&WEexi7i$;qvI~-kY8& znX6OgNPVTo?!g(8q^;Nhn1pxJN30Ms{EQCMFTmzl zWXZIZHAOwIV!D->e z--ErP2F8wv1>kGu~Q@^}j#Y*wJ#F3d#PFC!zEofP ztV=1SWh77ZOv)&syj1S{+So5C%}^WpfMdAo#iiAU&M@>G_dOp+0G;|7cbh=8$cAZGU&+EpZx`{Q1Ip?S?Tj@G1UTAN9Xt=)=gL zKj!~mN_ZO&K&Ew!byX?=H5~8l=Q9B4F06ymToUkQ<+%n5vx6UczVVo@yqNM*W$CoL zC}p@DrvTr=jN!^(>d#Uqdp-358mb&|SkOr=uUCQl@kkb841mw@Nw&i%gd9oKP4gmbLE7qz z%)jAWvQ3Zj^TO{W(HQNoF4We>8*zc|!p~Zaxi^q645DMrnc4rF|0zfg@sayS-byKV@BsSuX|2 zcRWJsbNR6%Nt-erDSgm3xu^YmwJRQ>o^nuBpBzK4oFh?|_5kfC` z|AP`{Ck%)KK(5?6K#ep=25{F=1Z}3> z<`QrRTAK#=ns_&TK_~LVa0FYx&hr~_Q&vZhhPUuC7Hm|7apW=k-WUig6J0N7u7pF# z7=4*}5$-0}^;mxq4A!tQ+RqEkw1q}Qpt^8Ui#C@9x(hn(WVXxB7k;NjCi)lu|DSpU z;6`w-pm6|zw$Ww`jsjqQ@`vOd2>{GbKajpZ4S@B|RnFqxs};gTp&1tpw!2ok)(HbZ zuBWv}cI^$_>I;=txtqmD%gg0LZ~s(P>7!1PE@dRDOHc`AsQse)HQuRSa~P;TIgg5* zU!z3rXFQ18gN|yi$zARh(r6i)&Aad@T1Y4HP4O9;!!GcnaU#3NV&G<+%f{+e;SIci zsm34}Np7<{#!46zm9XxPctfQ~kW~jyQ}0e|4dSHr=oWx(iRWB=blh zU+7Oqnp6I@{=cyhFIM{2{W3mEo-DWbE=+YOSgkGH&v>KsK=b60 z_Vp^mPW4v@hhF0@D2VHb3P~e8gj;~BYjw#z?mW7oHPp)SL6}gPPUhWs0R5g`J&SJ-qzn;sG!w1p7;xdL)uwmKwyK=;2+;Z%aZ;Q?=1kFjD8sXC;|X$vOBqHd~wfx zqq56W0C;3SXP1g|FZs#*b2|Wc#8aZ1j{*m>mS%CHZrS14=)tZUVK03lQdjrH1c%&S z4)-2Qt*$&&EYj-?q?#y8o?tIh|3=>^cO4DUW*me zDbF{;;dHV#g&&D)(j0n`-;Br7A80K65g(vAtQxeCcl0J89 ze@&u`&p~amYZGQB0Fa#4G|iU^K%CQWpOqd2mWk8ge#Z{WNcSOE19&OAwC|p$P3E5| z`=sHL?!K6@PxdOzJIg*zxvn;qBAgY~9q6>|xqJOb4Q`={x295|x)N39NJQ7yWLUTd(|K`5|)R5Yx0H_(= zEvC5ldRTJRlp)1AU>SuOe^`t2Psejp>;OC#7mGu90d#eH+!w^TA+Nlry?e66*y~cN ze8$r+HA{(Aol+^Aq)tLB>d+MI3CV6qQoahp(6?G|3ky+&~~MJvlQoJS=( znD32G&};MzzY5#fD3%Ow;5?@5O<_FQ$DZm_VO0{PuQQIqp`@j*n{VI_vR+?g3c?!_ zVnqAv2{~FjW3+#eus}O!L_(OvfoYzpc5! z+w?+H5G-1_k?5}{RM$Ei6a9mPrP^g9Ca_qDqF!@#;Hc1%jxoDsKN3=y&9D87|NriR zD}{U)G#3D{EqZ8-83n+f$v94$hz)YAdCRh zJtI7vE39;|5^Ko>0Em$*B1VJ)Fgjs*!n7CwlC3dTcQOF)Y}akY{&ze7iqq`?Y!F9@ zr@7K#Pu7U65b-_u(R0FMxbBrsmLzGS+nbOhZ8w_gI9o+^BAO;2vjfx$ zr>Ls4E^?3#Nad!YtE3*@%$-GFX|;)+FM%Uz18o>jK7I$E=Re1@>28_|C*U7xP1X!< z!Kv(5HXZ(i8?!$8F&Ipyvl!zo^pcBgt04-_NW3nY^@Q=HxjxApBpfBH^ylVcAz2GE zy7-R@6SZ;18~-DrGz~I`1xkuTLFPx_!?1UOlBkilaog#e-#hFt+M;e z9!~+Fg+p{yNe3VTUg3-E0C+M%rjL&SN$x+hoMJOekoS&9avcuKl6a}T`&2?}d5Rq5 z%}krFIMtUvuWh{A5^?f5yAN@Akiwkf(G6UrV(uE6Le8UYoDD157VP9(;bYo-GMxVw zyJ>-Tfj^GB)51)J0(>Im*5< z>IvVIzge_7NH{@|-rigyTp>O6L*`N85!t58{zrmMD{0LCr2hSX{jV3~EM2Vs<-*%X zcZ&w#x0rPaQxX6enwpfBR@{f^_+aalZUOVf)^M0(lx2o{y(vLt$blgh)g{zCIk?E*DKL-6t#^LS!PBcmz zOQPX@6h`y4To{dO&^mMx)bKcZjs6OA@nPDLB?-gv2l^MQE-b^0P0$Al$8jH)X%q@C z@OpOAxFFcc6P9hh6PgoUUu4FJtI2dd&d-ZYG>@^+Pd=glBP`WIiv9mEJUaq_N>Tk| zyTk%eDd|vh@%ONtu_=9@6@Yqt4KBrA5?Ea8#MfMCa7#}ccMEZNOlgVu!m>J~=E{xa z`X0Njr=q9}eYfom)lrDa9h{|6M|@Lh#5F}aX^C!d^Uzz;1~=rdqqSNevXhU+nKWOE zfjPJz&8012AH0`7r;FhtT#8L%zrxeF2J`7j!h1ZKUC?U?E^>hlGX@H|Bvnr{3x%nq zy*}8yAY3Hd^?T+!!Koz~E&MU!SZ$1P$Ipv|a^}>)r}zg475ji)p`lS%BLT3)pGo*N z9)L(|Z)>+y0BSpK+6NcspbE?30cR5UI%}{?5dI9V;GN@noB1JTwA5Bw#f;G}_Ktj&2P$OCBLelj8Mh#&h>7$51C7||2O|7;13!0QU3?WG>8TuKex?Oo5uCE15hS&t=NutfeCKr-Xq=&@%ip~7i0~N4UxU_cF*zDwhB@c zB+b@aU52L1FYQ@q6>g*UagIle$TpPA{enhl*YI6Vz-}6?HRZeFi8PCT&#%A_=p`Bt zZ{Tul1ZxeG$uvgwC9pQR$DZmp;Ru5D4MwuChm6(@vxe}NT-TSFg9N{(7_t6BVXQXI z80Wtr{H6t&(Si4ZN~@S_0x{xby2R{}&5Ko--%rc^C;#UkPk{kw8}TOMLKpzu6Mju- z76-t1>t1U?3IIWl=k_z{#lFv$P;pv79oPHJZLlq<=}GV`&ukKU&-c*R*8MKFnY>5t z?0uiQO8G$@C{?hnSARz(l_Gm3^c%jW4t6d^SIG<1ihF^!YDwfiXW$C7rq-Mvgcs7P zbPxX>en+3u1o#BkW%F5U$dg5^j=mH&BTrdL<0hO;0{Q_XML0?(>lMu!La=sAUu_N& zDrw9}_7@5T+6-f||AO#X3o#P{?*&Y&n(G5GVm@7J_R8kP>MYyO{>2~nPw(OPAs~2N zaou&y&X{sh0N|9aDJK#DXp&JeV_zBojEm=*+W_#0Z-r`H2&kDAlr>J60#19Dd*WS9 zOS>c{6}b1u_m>~bW4xZU4a!Bezf{Y%Lj46jl1n;tbQ~{Gzi}3z<>U}*%l(Y{XlL>7 zoDHYYM$J=wPjHMackEwa40{$^y`h7kJGMz(aA3c$5nR zk?y@&?}Q|a)%()pb2SL7DAkm{ad%D_DE}l^_qIq|s?1bPsj+Q>x(bbv%Q!?d97m{Q zodZ#I(i*kn4xkcRP5h7pc!O4zwB#ukXHwH85#*d$&`!93*!OEO}D1sPXXY( zW4NPnIsiRjSy<8mz<^Ag>Eq)-O?R3*LmX}Z3k;aUaB3rIJ}RXMvu8%+)-PPTk~^q5S>R3@K(K)oTeC$WHb`A1wSyp0WwX zO2MKDdV+aDh}2r?-OTqwvNl^kVaAGH?Ut_jd9kgAjAftHzgHGZFaVziC6>Ni8UQ1_ z^GE$Z5wk2|RB<12%8k^pQ~(A#ez5837EmC%U?tQzCOvYDu|3 zdX<%9OII2xk3CjLDK!dtrOnR6>V33W9?7X_Bd)9_^8HX(G7jbQn^2-Q48P^?q0QPb z(g-GC2OX;|hvjewT8lo0o$(5Km3oEA_zvyJItyE|jlE{`g&%P|0i2oeVqSO!p-9Ipr|3S z?PCFWn7Ac5F&TiT>7&w@7572#GWX0D0?N4Ni)Xp;;DMf8w;_HX!$|?(HP^<}5pp|O z^3=60RcfgHe9%##&O{D*m(z`g;iJkJ?km)ke1?+wBgn2bz*G59d{yg2-t*;gc{*Ba z48O$rv@u-)SKy!M6Z$8-f+3s0d_oD*m3j2e0wNpP1$}|gj{L>GHqHq%NjcqW0`VM~ zs1Gp{#RToPe&2M99km>zwZFW0PW#UI-QQ5mr2+HXz^C}ff7JhHrJ|zFMFMa+Zg0ZL zcmP7J-K@1z0jT3RZ*P!M?1PyLr#PcQVb&nmJD3#G#k|6ddqT@4$q|DzTu%AH*%x_8G@8JjL@`<#PU92t9nB=u`KGu5?V%O%-{SSOF>MOZ z;t=+p7Q&LG5nIZhK$9$E^>s<;L7uS^Mi*f@DX;G{76>;;zFyuuFJx$U^gSWuZ?n1+5-BA}E##Pl5&MoK%vI~p!NwBvyf92_WyJb{cvd@L zjPoanDKyoL4Ym}<~DF84>gkxJe09RpOnC!HG;jVbsY}gU>_qaThGY5tyN~NT_?pASQ@*67PZ1|=YMr?dn+>B;xv-tIRH?2r5 z@F7lSf6(SoAU)VDwi>n~2U&IfDg2fs=)s08oF?t{eMVQIl(t>3U@jCYX%WUM^Sm%l zYiA_;fp}FrVodfYiDjwPOboci7PPIoAy8i2MfaJ#vKxy1Sqs1ZFaFej^6%XxY6R~E z0CbOe8Y4vkFeYWqNB!TJ@lD3gGyuAC3RlMlKr=B>G`JFAR+c-fw=fTs@E-CMWv(q< zPx?$6?tU4+T8>nDddH_dRf^Ou(lFbf>KpWvT+7iGJ;dYH>(1}dX|fYd=OXYT?GSeI zb+JrukvaTiJf4=KLGT#9K^M^$@NX=$@@x&1$Pjj$J%gWiOt-jL);!y1~1NxK1^V$|;f!{6KXtL=Flo#`87xQYMq4{aZ=b1&QZCcI(?AT#rVxR;9n zru(m~`+{s~;Z5_FbsY`sA$5@YxR)kulr4(p-JfY=iy1zO z4WjSk+6!`_3w=f!d22iC#FS=)HdkT%p|e47HqsX-QrTMqtV-6 zUW}m+jgUY?u^v^;F@X-^E70@f1i;HsU#Jlbz{%J?v8y7BeUJW>AL0S{C4EqOQ1N}I z^RlB|Isg}8TNvs9;9zE_Oc$RBhPwmqBypK#hPQ$@$#o-qlGIkJ=dPXjtNg2c*YhgP ztBzLB`M$NKquD4*ZtciN-SFqi@6MM9le_91t_FTg4kLk|iDzr8@B;oPoK9zwk}!pI zrjxW*unt*IE7P@bIC)Bs(HC$nkyve}3YW+<9VKzQMFVo?|0UX3SueFe}g#L`HTn z$?%Hp$s2aXs3guHre4`>E?y+#^p$2W(WO1mt^QHs&)NuMwSU$p^}kC90B3_qcuoWW zwy2@8ZDNc2j~6G0Cj+oKy-E5cD*zgw%$>7^fJE0saTWI}sKC?MohH7H2}l)vD_tK_ z*UCNRXwNX)Ri&+3%h%0uPF;<{M@hnTXb5`I}{Ih~Kh5&G|zE0dxVLwtuq>&$m-`h19L+1y@j4lnFX=OrG8R( zx0zO6>8T9!PO|k-bI=s2pF>5pai$W<%|+EnFxtz#Kv;{!4f%?=B=wO?{21Jow$&=Y zqxdMTOBcfsVrMVuOK6fW*#ed=O9g7J9*$=Fb%knrS)$y~K%huz5BxTFhkc%@x`In}08;|55+jMURbP z(Ew~pZj|CkDxUk?ld;MQzz1$Vmu&~2X68=O%lp6ycQyB9@yil(eG$F}Sy^!n<$Cf6 zPye(t$`|S#-yGXt>KW8c{@U>+x`ib*miqA&gU2t{P5UTEwU4DF&$&A)`fn%h`xCWr^M zu||yFD@M>q#yEc^(N7gKHjpb0rvuG(fnMTmdfn`qJz8AG2Ks5a|K#rj5Arv5*b&vw!i!e{zpk zm6#QL769-dCOfuR|NlsNm{Oc~7HQj;u`msQ`CLt|f(?MtqEGa4CBW^hdRdKyH6Y-< z=_p>WbyP33+^FUVSSoYV0M zZ98ts569K$W%3h$057M2R)v4#zv&#h9AZ+38SFLeOy;v+Sp{JpdBDc#BZPB==)~AB zl+eD`|1e$)e(kK@&`cBuX%1tD=@k!XgAM4fEJo7X#zKFtSeZ(uJJ3s~ObsM~Y`GH@!W)C0+iAebQG_j(cokh7zKj z_sG`4>Q;5T@3gHN+K!5(HI5(96kK0%a#=W+Tu{$)BXF9w2Yt?8z^AlD_y(Uw7@b0D zz@}sr9iy#;Q^^^cL*K%~B#s@SIl^<&fYoB7gtA&byUGp-<+anSgZ@Tnqm|O%=*929 zoIcI)isQBZdYV~ToUU!q^UPdvp7uyTZ{~@cHENXij~0K^CK&5Ksej2q#s0tQK|<-% zr2z;H?;YJL8h|}9TM~vO0PrDsX6myP01n&h*ou7-{l%^PMSEk*Zg)LbXTBh2mG6va zrC27diacBTGHZ!#fYL{q>nU`6sb-=gpTap&6z(oR;s&8RI7XeoA40214-^Ya;8t1( zJQDhGFzrkpz+Six?W>g+7T}q*5}hoZ#6QvV^pfxrr?a*!Oe{-UuvbhJE0H;@K(8qF zAlI2+OcGRMcbpK8z0E~NLh7U%yybFQ<6fMnN~;t1}?ph8bA_X~l>Hj*m% z`no<#J1_T_AG$Z$BGkUB!?(pz6752NN*dP-t;Yq*Q|=_1MlhPpr{WG8#qqEej;A%r zXgCjdr`@za;AQ*+tw}2g5hRw~qf>+cX~jmc%R*1Gk_mdaxP&}qXLM1#LQH+AQBjQ2 z#^`Bg3$d1VO&@CZ6{l&6@xYuYKGtR#?fgqc9}P7h`FDydXg70a;8Xl7f*us#f0T-k z+8qf%-?$A4o8tjEn^xPJmH2q+)RUQ9E*9eaWTc2HM}KfbW4*XgW!P+wd@2 zR~rl8;9qG~`Un!Dv&Xce(2GoAGg-c{lH6fc^ee(mg7kNKxR|Dm(zh9+*hIUg2h57% zTum{SnJvWo+GHca-&b_d_eOz#qS%s_Gwp$;;ubp1JQLU{)@Ok8MwGvW=%Eqj7=K@}Ev;%s1ty9sXui2RuvCm-&&=-GJH-oZs-KkmPyQhw<)i*T ziRcu$DGY#+L_IMf4uB$Sk+pFO0P`KxF)ST`%ECf;-4O)txlC6}mTL=V&L<-`rrFLLcIp{7F29 z+BGYTCx23vPK1p}9rhD_0;iMJY#ggBoF&1!U!N*OXifB2`Zb}7wnpD#M2I6bixDt0 z#lu=NW4W0lhSKdug1@Dx(r9y{zpvPVRyX4U6UEiEz+4wtDwbg{&7Rpi#mnqlzxFSF z<(~;aSn_#DD+>UfVyDNdQ2@}?`ayzF9=r z4SIXudroF{44WklkXpEV#m6XB6u&pi+D(P1s`Q5~fZTYKeA}@Bi6mF8&c)(HZ2_|I z9q==46`sRyz^&Rz+AqcC%}2nsAwf>tE~Fg>bF0 zE*TMG1#Ovr*T@uyXfO48W{$X9t73d-wiJWuQiJ#R6(w5IobR6~cBNHJcVMab1D$JL z4eS(avNHa;*{8(+%fFc&TqS4#0APNZ9Z?5M1JEZaC@CnmxcBb;NBytq_|6_$7J&M2 zE1zlypfIy+=29*i%y3KYjY3PyuikdvKQoVp{~*nj>bv6-tx9<%)LYZqPK`h@(pwus zZ&3sJPsbv31D{oDbMMf05Jwkk5>}NAFMW@z9-(}>8jkJwAF)telDU87XT3-P;P>1rxy~#ARB3Ep-y8r| zD7WO7_At;!J&cl_R`AeO=K-1-`^dM@7jzv-Ya37kyWBl3hlAIH3%pVG zLE0JZzVD^uiMB-#1sX|h^wD^4u$*(ZUX5(mmOB&hpJa}nCpX6p=>+_dyZ|q!Bgs?w zEWSqzXe}k0_}SNVj>1SGtIaMd?a6j_j>W+VO)xW?O%s*>e6&M-l z=YHha6x6h%-gZ(IEmv>gmz+zrSNh|?5$ApF5N@ZvBYXAHq^W*V?xCmAR+uPD^v<*! znW>!Ax6ly1sl3*o(PK0nDwwm@jKYR^D0{-*fg|t^Hk}WEALEzIV@!wVu*r*!bufmE z`KUgYwj@j`hcD2| zbe0mrE_Rvztn|n4u@NjCuE7UcE~oGkPU44oQc$iR)@Q$E zc~w#e?wD;qlLNph4FA;>hx~PTn%*bNTT6Z^uD@6Op_^|7K_QJpi0p0W5c0Jfu zYv+r}8>|)TkNiEQ+u8_xFz9wx*ZYxs+9~HkJ)g$lmhvrqHZ{o^IUhf#A-z6lSce0r?44W%QqWM;T-asGcf>OBu$JJVmeHvpO@T&!)mmG zm~QTaV`&p%4Hd&nbfY*HdH_c;x4Ep~pZQmVo~8cpoH!#XI}w0yGMZ-INCV(y?%v#? zmXaLQLaB@$fFiU9K9)34#@*1>0;ZP@^GV+D{D&1*`QP=|aA#R)a8YoUx2)aJo@m^k znYUL<#?J$NC68_+!!^J213jKD(0_2=(8th|xQ*WMD-Xhr*ymIzU*heoGn=ct zz=_<#Z!4H|7a{w5uY?Ze;!a;g|9aYGKz(aQncL=SE8s_u+l3h(xQUh6mm+k_~+@P%aeW~^i zS~Y#6-R1#*+4ObzGLI^t?P3cW0+)NI8ZN zvLZH5i6%C#@jFU&GKAmb8E`x~!PgrMenXrF6-{9zEi#sgLa5TqMw0mfY(gb5$y^7g z(sm*tv=5%9AB&BlV#rvW*{k3IEX%i;+W+9M_;=rfb!G3BDX9Yk6}~Cm|BuNsvX-U- z(8rc!>s9j8I7do$8vxf}b68%A0^BtxKSenXHhNM$ThYn#dwo-VHC&&iR0*^XL`6PRLt&%?9AIK}#D&tUam}KgN%+R=VwjN98=|4KJ>xFbX?kLOnEWJW5$X&3H zO`!$Kay)^lY=LqC7qb)Wu98R)AHp+X$?pIS4o8!N{3oLs+)Xl!dZG{l+Q--~K7dYo z)Nq*VU}I_#3(b9S25lu^s2Ki2w~HS_58x0coAU}HP}JXFznsX`;WGdLS&8)$vdROH znlT`~Ofmq+tbS|B{(rsW7yBy<04wF|&R9DDw~;_Iq$F_ARl_wy84zakPVoGI)Yu2U z&AyPUURvWoo4~K`@s>5gTbycC^L%sVw=g|FFhyOF5%@vcrEKnn`+`Y~cqeW>$y_M}NwENlxU+p}neo}{l zaZ<^Y100B_y9)J{Utdt7)$@;{l$KmNV#!F z6vJ#f$*5#LfP`K$w*0IAV0cOWf5-5~(FdaeD2N%C*g6q_yGh$p`=FQZ3RaV7wf z_EV*EaH>M=9B6lk9drRT-1#W!zITiJZMZ&rqJOUMv0Bc4Dlj2X)h+UF1Wj$OcZSqS z^XNf;Yv%zi5uXV}%gOpx{I<48ZmKUQ)%7f8wyx0Hc%pJle~-2xx0Jv1Zz-Wx=)rO9 zAguyh;fAa^>k22}S?mFu0Jq_DY${&`uiy;sGWNj)(wd($F2ZVL4X-Yq!71c-zCpyH zpGhkt*L0#r^iN}>$^XUw|H=O+M>dPWu>hpRcS|;s0oa>5B%?STfbXq8SnFE=xG4?H z>u(DOv1%1qAmxUC@77#}%Fg8RKI%jPb8=W!d`#X9W*>YUNed&T3!!=18Aw zXZ41G4$chyTb!cB$?xhbNs7Ky{z4~I!4~DEK8MyMlNEv=P)_eCeQ{-Wmgc~<_#-xu zRe_iARhGfK!V1LA5AcbwHW|kI8>``Xa)hUe{qQi!HQo~!VGJE^+!D_qr+18YW*izs z1L7CciJs7TVs_}?_&*Exl>uOUlrz5MJ}jle?9?SG0F2D`S*~RQU~`PJZ!EbFQyRAS>>*bCRb4W<9t~zr{!>9ULfA%vd3xNwd%g+dGoY!`WgQsDOR6} zR|UH``{~ok1uaQFq;vX0Um>UBwG@#Yr3H>*8l9pn#y!}N^saIdf5XPHT$n*DT;o+? z6Vi|W!n?wc$U(l^m$i zP{@havuftzf`8^;00#ek{y#4%IuU>)84WYPO#>jzwk@}l1%RM)j&#cgz+AKoo{=!f zaW`@mz+Ppuefi#EH9zI3f3RP5*Rk{pZVmSGn)a4jxSs3pns;53@!7y~sj1FMcde&$ zr*5Sa^i(+s&!Ri=YPmg*U}4m*e2jat4fK8GH++n>V81F}qVhzZ3;U4?{1~qaw~?#- zeWM$EO1P0PCc<1g*O(<%!)o-UQO4X42hgAxX$LO90K9F@uu7Q#ym2&hh@6t#$3A(QBODau zH&Zj@b|Bl+#qB`p+~>=TZZM2iGlF6gl;|pBp;!&;&~OoB?uYMDEXJ9a;1*ga%7>o87j&;!6N*Ef zSf1IXz=?GJo$3D{{Eh#vdvrw=mn|C(z~Txy644UA3lf9->=PN|au zLjot<`z*JDe(jvMuYH6Db=m)6-Xkpy&kt;q8tN~wT^r(DtA9sg^j!I&UX4cKO|l;^ zr3nNoz3~&8L}x0iaV55lK2R>;X)M6(Fov9GM_6^pNe=JKyThKOGcRjQf=kIJ{)w>$ zo+U51U+jm`w5IW)xCFg)rSYeD2HVndqR@;-YiWHE8IsX0Iz>zfanwJ2R9F=Nz}8q4 zyP*sKBz0NJ)_4H6W}nNFQvq0Li?q430N5s_NUd`K2*EDOMSBo`&kNIL-9z%OzRmmaeXeTmDX+`o_kUmmABJZ* zI($H$u;Z*djHUtJicf}Fv=4v6*FcG`=N}jcU_QOcGsPw7ra4AG@eKNC8{>?KM<(55 zR5WGOoQ8`n|LQ*)o)=Ma|6ezHOX>Olpi=*zNZORzB^7`Q8SS%9med2=hUIRu0^oqp zrTX@WutToz(HSWxxr}dtTZXT)SNdo9wyCE5kHFMGmV0tutX55H@7*tr(S)AjpX5NkRqw-RpMyrz?=*1VQm)3@Dv6Jng1K@Pri#23( z;aB(*c9(q#@8G9w96t}!2;qwH4AvmS_-P{vm8_4eihOj4WE$&5Rg_Fe898PfR7exW zdb9BV>;IDczrUpaZ+!n`T5|uN+9%^cIshM9H&{&z0N+YRUQ=5*D5t70S8|14c1td* zyiQ)=b9t{K)$&$goPUg~fqhAEd2o(rL0&uUsHa`T|JsWfX!YgU`fdXB zJMs;^2Caa5DhmFX>g1Br6-P23&4nv)b9R*0ffw-x)`Jaz$>dKK&*#Egq$c0Ncfj#v zKJR7}!+qo~PZrN$1T8QIiX@azml-!iK59kFiq>XTw18F>x6L*vlWh+m{d z0GJg8dX`XI%MZqj%ET7mig9K>I!;H33Zbe9v2$X7s15powK8WF{4@UtU~H-X zyC%*|dYMq-|C*UA(g29Dt<9}%0icp|rgX#xzy`DfZkI4%?#3<&?l0^21-u*8_9>72 zBmL3t(UzsbeZh*}!S-QVq8{PjkyloyczfWiG*WLw-qF@Nf7V^Juii|43$LLo@dJ4# zPG@&WU*$3$%@)(EibQ^9b(tM@B~^JOuM0Pj6?``@gujv3e55fCX3`dhBzC|M-C;}< z#jq<)5O2gYIEPjfgUuv#l8zT|Oc%;xr^UihRWzAVvt>aW)Sh24^DF*0|2$wX-4TwA z`zo$ec>pG-bx+%$48TCEY>mtWz?Ij@kzSJjQ;x`;9O2;I{Eq5VXLnH9)7Kq_T9@1D ztK$1E|7=R%fD!o8y}?peE6~dLrr6hNJ@kS8!+CCfD)s~~O3U;`WRAAcSq9goTl7|P zOZ*MJjvvYEv7aT={>oE4m+hq26;A$OU6}(8BTc!5*M+;tR{jGY2;YzxW2P}5+G$tA zEq21H^c!Q2xB%a!6-1=@94?|Y#Yi&=ou!jRM9775*$-lAs4AMy46|)P8`P0sGhP3K zzsujb$CFW0qmse_h)JnmAu}F;ob1V2CH;TT*s9n(*#LBPZjgS<1%ROuaCcrgFxGV< z|DgN?WO@rc{n2MJasH2e8LsN7>jKjPm)z$p6|^Q=v~Q7poz_F|=r7Kb^?~@Wz%^;6 z-jDRswmN^)J+zp~1E7;S6m^kOK#qHWtCG?wY`J%zXEypeR``GLCAxN|?hVWgY;*%_iuRVa z-usDtg(mb^|LweV-HV3?Zc8KdRFa^5=KMkbg}l%@%DK2HeXPHbJL2v16&|cC$I+}D zy`@~hE!b?D2NTIUhS=M%3VF=-vO#bVF?cJ!0Inrt`D?xt{zQ)RwZ;V)Lo*Gxcn($C z)0ifbQGI&I_+7ZrSeh;RnpM$J+EIju+MpP=Sd0!8qDSEu!&;WEcQ?nDDO<9?`zz&a zJOG--$VRCEJhTy;oCUxiQb?*@a_$9JDPP;eL8JV-YO&-73*F~kvy{)nV|?Yk3(#kA zll<3xzvM4ScLc`;y1G?s3(c*0y!-60G^@VB_dIW+9*rOS?@NE_cX7|)PG>i~gG|u6 z$=~7v+Fk!sP9yVab39aOLmtpZ|Nl!Ay2E$C6#J^<=po=!( z@9?jnpfmV=egRgeNBJb_#HR01e${JGC(eKhUP^^Y{^?Ci;rpA@a zg-wkF;88@S7%dinU*ZarVKM+6Q@dttPY0lqb&}O<0bsfG$`P`KgV!hq0!a_Q>rQgL zl0y|X`7GYesHvqxV2r=DYqI@Va80n2=hwX9+8u3#@0Ik2_Dqir{OIhU|Avc$v*q3T zIr57ZRO0YE^p(C#X@qxB3(17DaVnE&U3dn+%l6P=FrMsZZP;p9ja1;_{0J-}9r*@+ zAAUtX6B;fMt}uAutR`E_K_JJbCF zW~a3AkMZrzpJ=fL*93OCm)I+7?`g@t*LfGTW%`Hy2)&1!pxdzBdsY$n4QoAI$gwuMxnRaUGZgTK6=gin3D_snZF1W zMb?c1pi|s(Rm11^ zj#THTR0xdq-*J6zIUPJ2Oz?hcpQmN%H+@kO(re)9f%48ZdN)#0``MX*8EvXBk$d6K z=p<|?`!Qt4$N?pu%wp4NHf%;-vJk5W7n4@}2^$V?kez%JUjtKUhVia(6jD0K$QHlB z*7Te)PQ;^$G)FuWF7zdBB6^!O(PKJWJTp6?itMJC5gLWIvD#++g8Aru{?wEz{x|<} zkXP#ePviE)g-Yh2rHx8kk_^BCYruLZ1AwM^Jsgip<{v6&WabD5^YXi?N1gpa56@ut zRk*fXv9G3Yc78_cf_W zg#~o1A&K8$M|#b8U&N#7G*7$|F0`Ar5QSz<^gCT3UYeaz6?R+94vj*evwCLZg867V ze`Y%W2mjE&?>z$L%9qOw2cTxk@CxDa0KA*MA*)R)08#c9w#aM%<~hHT4&(yR5xo!J z&x;0YT-Wm#$WdXny!AZwP-?8-zuosLe{Smez@oqx?i8z6>!4lrUa}w2hU!)P8B$$+ zD!v%VaDJsvA@67po!Qu=E%dc=Z@hu_!u@C7-^BaLIwLLJ5q<2NYi5W^Jls2x3RtPpNAnP!VbvnJX_8;PlAXY?1H zE7C%vP&@Wmd>xvPp0F@8BH=Gk^#7pbH?h- z0N`j|k>j8RfO$$Y`CA(R%hWljmXr$WxW~IHDDQ_|^`7_iM`>}L{5O2R=BK4S3ak!H zbiZZwYxT5Y-iP*Yw0in|pG_*ztKw#X9OoL{LtX@*I{}WQ*R>6DJ=~36)T=79@IiVL zA5qR=D|=3IU_9x|rqBkkD%ryul^(HX6#F44m*LJ#Ob@zR`+JZy^?9@>INMpO(R008I_595ZE z1)xLP@YF}~08F&3%g#>)pt8M-Ei0>J-c=XLpHtHB^P;lW9u8LJ4^Y37g5U@D16LR2 zb-3S$yn~PwztjKR_j&$}^mf5Tfhz7k)*{W+!o3j=sQdL9J}7;u+wmE{)2ZP|Qa$*m za~Zx!256tiZ*T+JM6aPVAe(7bd|X*XB3X#o;1%)?v(bhyj;>&9=qM=DJIuq@K|$So z7dsB?(cZice*jz4jr=B0KwarwUSzn@yHqlgMJ@C$ZD;fpol#%9!Zi^T_dnGnV1mMS{Pg37W1z=u!%dFj*0IbS=kn_G3fOX0c zDZ#!Q>~-}(qol&*Y+qORdZm%&f`7a(sBW^?3{DFiaHUHHS_AE|C*QeOYowp?rOHUJ zg1ZMU$m4V;N!N;$Gx`$}r$@nb+>9pTs_-4Wh31msa2gJ0*>od3fa|jjv=~0Y3s{K# z1)by?JI^H4h(KP*tD*_yU7l`qMmx#p{A*(zdQKvYkXVLnw7IcL>_QFb0VC5aMqkjN zSYkB%w^>F-)KUFP-qNGtSbUV0CDq{}tg;L`0+uCX*{5_9tW1hoBUTJYl6?N0{RMZB z5que!&~tKJKR-FwuX=_0STb6$fv6p4h+8B>j+2lj`ZsanC>{=W%@macPPyaCQ2Yen(z}zoEVH z`^po{*;Z1L>srT(XiYecBykTL1<#Q}euHg>@$?72g#QQwR5RKbVW=tn$fzKkXe51R z3>VeV$J8V4i7x0O?JByM<4`(VC+?ZcQCIf6m>k-TF0poIje=tI6^{w!R{U@N4d6c` zu};TbinEmm;AYy~v=Jq9udUd6ECYbSc>^3rttInMiseK{I5?c&M_uC_24;AMx%a|n z3iJrW07l6`Cutp!&Tnb%-N@E)1SU$IYM2ED~U0TkdfB0wr zz3v%Ru4=j5Z~%s-d{N%M^r$Pn*>C!gG zCl&yHQ%1<^Z2(+Xw;->S4u-quxPF$u3`_Jq@YF#~;%4}t_`b-0FAWC23UqW&wl>mQ zYPG$(Z-TGIMCdAO0Pjq1)1!@73c}=xjYiTM-S?Am4o;KJ%*EDITB!( zNnKclOkgAE7&wxgV~K1l+)gCEmR*9sklws94@Ze~C;yqtNTp?s4~*)lCVj`Si>|0A z-C&FnS8ve)=mZBz4XReCG$Y<=IqQFX$7FZ!lh@n_23Iv z0JV@7B}=~Q?siI%<+1-g-!pW_-X}OYFvnF{YNj>Tc6vHGFKaFJt-hvmUA+OW6p)k+ zIw9fO8Rey3hCbIc_!jO$|IiEJ7`%^0k_-_i$6(?L3emyFGVu!aqgRXyW~O?cz9kl$0rl_r z%m4D6D)qlLGA+gv3&54QF3Iu90QgfoW=u*4V5g<3HO&G*ZE1`n*%k&aqJ_$bc{$;) z+{g2$$=_D^-uJtwKH6zn9eB^5<_dSDXq$tPp1RU@?RTxBua{HkvG`km8+oIiL?#4P zB@TzvJ=%Gt6YfWk>ll85i|H?T5PXI?i=mq#C9~KndJPUF_gGaHk3J<8`5i{k1M(67 zh_^-=^fs?-j7E%_1`x|pTRO++DE6Z%^p)|wxPtalB5IkhQ8*ha&YGF(Bz8><5B(ee zfBfGz>VDk7H~@MicS-G5lK;;-m0gqxz)pLz-I4>qr^+>_>WBq4SGc;!IX|MScd&a4 z9GWuAKh#$*|EZ-<@Z&%acedj_ZJhRnx0#fsZ`bSk2RfJN#kg#+vz&X2iqtR6Q&=@UNpf9OgJQVxU1KLgWGOr-QwuqPJYqXffnyW*ZY6CvUEG+nE{ytz~ zssFnqPDq-c0Km}eEPy)=Tb!8&Fx-mBaWnZG^8X z4pM`CNEj?6J6K=(9{ifvc@EnO%hE~w6uSXc`U{`R6VcnWmQl-~XdvBaM2j|PF)b(h zi_z!^72>*BfnL!;qJ_C18SHa$)x3hHvM6(S=rxMq{Y+Mnsovq%P@;8h{Gv3)1Q(1Ms6&ST|$J^Lwkqo#Vk5o)PZFuugQU zzoE~YzbW-m;GIBCcV}yJt(jKnt?P)^KhRVB?@EjHy?AF}ywifOkcL`+c@iE-JLz1x ziyzVH_@+`oI0#77eFc4VM^$R?;XjQ>;WMC>OvyfFjvI@t%1V)nq$Gnb2#rm1UTp zgfi9Ye45#_AfUGX``)8|)P+b(7yt#yZIWnt01jks&M2w>-uZu zqxaUg`9@3A^j{FN|1mnESjI+1IfBR4(G&+)dX7PT2g#u(I{_BFD^N;H)oHin7= z=rfukeim2Jue6?MW4=b5%@g;{Omzr5E#3_U)UP6QBUS?do+t45s3-ttre~%784o~# z)v)BI0`Ss)(DpDBfGf_e(i1BH5J|ATJpw@2PIb6c71Z=t-EZVk5u<(Wy%52K>_Dc! zX8wru8^NQ2SFZ9oC$$#ZYR@dk7`>_9)Hg-S!u9YB|6=D-Y>?N1@p1(cM{8@flp$mw zRrQC;X>yik;EFJTdRZbF34?SDD^EXzZ`0H419}VgpjkYFC8HwRp08mXeMDDr%G;sk z^k;s8k3}1(!{}+OM4M?_qntQ^KA{VY_TnnqO0O6P#A~#dW{7~9sa~Pg#qxjk-}BP` zzdggZmHIz3rb{AE1mIlKC#jWE0qCFJIBQ)d0HK`eIRmW#T$aP6E4ChBo$DoJ((Yu{ zC%dzhO_r!YFW)XCIX(=I3G{OHk@{#&v@xDV&OfyF`iH)S^1FH~Yz_2RPUzLi#b5>K zzzOuK)&cgy1L!q7@2jbNJRcTk5HJseh&Xy>26|gF}=cj-hL`H26LqPCwN< z!5{I@^n1J(N~8vRL9WBDWHp;h)6iP-hUu&t`k6H07g%4EOxN*od>#tYzc@B_qb9V8 z@zA(}hSP0ED*@DXG*)~ka!cQL6*HttY_d3Ewo*5;$D&{8-}rwk-T(KEdJ)$#4uDq4 z?NeK&0I(u!dv>qPl6CP5+n-hdmMHt25snz(aNR}&o%{js4{9VBOzt8`NB@Iac;M)va zrX>x43bxL&H@FMauxJ{mpThds4obnX^M0K1E8;=E~7x3YAzZz!bZ^RcG8pp}|pctZ&l|C@g|$S?IEj(-&QT{HkReQug9 z8Gt{n6|K`U063I4&@sXaKt)(A@3M!37*}t#k#hz(?-}kM4p&F}{Ed7s)t9N6!IptM z_gZVA)<%2F`;i0b^Ykaa#nL|gIQ}qjz*!kTBuv{OZ^K2jraoCoC2we7Y=wPDA=^N@ z!~Nt28%j68C|aA#>}QxyH}i8W6V<1Q#x!074Wj*wnnr)Lh@LjeiTUUonkD**J?IgA zTU-`bk;Ep6cg!%g6FVY)G;Qh^EZZy$g;XCOZ~6;bsi}tV|KdLaXlW9zPW0V!QaAu{ zso5#};sEeiQnH_>l>EJaU>lYNfFj?OY`FkjMVsI~M|lwEF7HZ|8-$(r_VrwWbz>I$ zPxzYTuTJY4{5nwCebYKg8>vMVRCMGU0_(mR7aGVAF&$%P?UH*UX21EIb&#=ngGCJYi~8dvoX|yrqCddWwp?9I*iX_g=jn7!}Iw^zyI|AD-2&1y*wI# zw3yDN{=b~`S!$@%|Mjw#Wdg9m+B>I*6@U@)th{5k4q&cp56qT+O7{7H`-1$F#S&=g z8-qGJJ`WBFRB|nqCTfkfTAm-BX?iEUx9_GrP49%C`M*&f>y60f;9IaJ&Y*|2nQ%59 zK@aN};E(u6dLE~t3=&|!k$R{h8OJ8jQD`zb!?M^$w1?#KZR{L+Lb~$?{1r-}pYmti zruu1^vC^olHlz&iO=#8~wc8Y`mBm1-tyEoPW|{>A@4{eAy0m->HCT-)T= zNdSbWHq7Xi4!~QM6ziL808Zy6Iey9oU_Pp#1oHZZ{pIeS4`qAGecwLM?=a8$Q=qed zMgACvsjUsJa&MG=(OzlczMIaWdNv;Fzb8M|5%C3&DlKsmovu}epW*Rzfj$dHk%x3U z{t-4LP1sK)1I;1Z*(CZlxLM0 zz|gEY+08QnD6(I&T`GC+%3|k5dpVHjI*i_SUW$0%Ti@LS7N;EWck^9QyIFSxmjyE2 z%N-lE30e*Bmr@gbuU^*woAZW#4{r}VlUw0%T397iXb^2_R5Q+_C3Lq@M!ZIcX`*;n*wx=@ zHE~H)R())YXl8a&hp}Vgra4Z%#Z+^8Xr;P>e`Yo>_-FoRU|p&ITP5~LYLo!LcNuA! zuTx9z|7+*2%m$#7vzdf#0Q`m~LW`t0?@RR_MIWXv2o(9-yEa;DXjg-c zJ$oIAx~6yceJg#c55mv04&TEtF^@61l>Ip#DwgvO~2_zW|rV5M4MghEjj|C|3f@Ra($PWUV}Dh68x zUb!AvKhWA~vEH8?HS{I=Y2PX7rhX204TQ@*@M~h%$|yhK$<(c1Rw|KltO2eKmy#kj znJk1)$phAnUV(PnoF_92szLYi1FRu>mpY91_*nE29cyUDCuk?VWxOO}_4uAy;iQ$EYI7pzp@`hWOugDR!|KOS8eofi&3 z?bKc=TjKy|Yw=~DD>?VFFR)d~0^l9_q4Y}*08#2TxXlp@-0m3HC1>BT2w#8C7w}rl zUjO&L?EIMY*}+4BEO#JhwKi5u^uBa7)Yt3#d_PGy^dndVV&%5@B6${!Q;y+Y^oe#; zLF5Jv!*$_E(vanm#qb#Ul0kY6mZw?#TWUpaI+%B7jZi&$nkVwHs4vYo_V6v}BRat- zG>Xxe^s135-k@vLCPoT}8qXSwUquzQI-4Ono1N7US+RIvj#FPTY|aaPp}#3w~_ zNEh@ec)veQu7}5v+QAfME7s{a?H8pSSxyJ)^k})QV-(B2NPVZX|X~U{L^c$tX_CNdTa1&MM2} z6aaQOtoALL0F0EMNz1GNEJqDsg1rnF;d-KKQY*02Q_($DE+6^5Z?g9cbR~`o1pH^z zN*R9b*T6>C_M9xeuNLwI^Umu7^bFrK={?*Z*YM}cWl2}EK9H@9A_}!?50ziYO!|k` z5K8nJy`?XQ^=LzO3EzbM=*R3QVnZ|NAFPlzK^tjR{+f6M==^1Y27tnQ@ zVr=JspTEusy5a^%=%aVl?^ZH z|2sZ>R`k4R05W6RC*ni^&L*u-)l&iJn_f9I>BH)kCWs=YzchS+4J;#acrx&66qn^{#q7pI6zW_rxdsu`m_4CF6p9 zVP9;cTeWZDUObU*(c@7Wa*OW5Z=-6YfSo3j(HQa(8$x%Zo#Y0KWB1S_;^(Vbx|%{q z@XEYE_0hxp4)3hirD?_-W3t+Zb~T{bpw6Y=7}Lcu^*GHC;pTmnv7TbG8U3Hl&j0%S z6t+APfL9Uz7&#VzGjZ*bpC$qDJf&Vn`*Z+eE#cOC*(JHypX_^b0T_Z#$>sAphyCde z3lo!5bo|CYJ_4hzCe~0`-jt1JY;2`&9sf_+gJLGlB^YmQY$j_8i>?dV{iLeM~ z(1F?jco|Qpqx3^CNdBbra3UH-+Os{R0Xjquupx8`Dod?AjqO1S9n5#Kd#DCI$vg6N zwI_8NDMo=hofa7v`CIwct81)31?L4GyY4!^)+T64-h0vj{eXVc=ab9eCwNleEoBTYM~RjKf5Y$7 zYWhIVNL!$v0oW82G4}36(TI*&2P*&>h@RhuGcv$Xij{qK5J2l+78f19;xe4rC zzO%ocZ-%-qt!uDF;GB!+e5|$C&U@6nuKG%Si?5us9KM3hKsEV897)S*jg%v`(()S0C1s=J^=IqxdYCn2v<@MLM>Pvj7&S-oVCkN`wlkgq# zZLpQ{91o)BwH(-#+@t@8u(y7X<5u7QWyj3yHLZ8;g&9f91CmCwVPT+G_Sv+(c$;&9%b&%=cO>FA4u4n0M#x zpo_NPxA_>@fzIQN^tEs+y~pqAr(q5&tB>_RhkMv|y>#(#bOw|t()}Rpap=$h0CJKt z6N>si(o3cdjR&BwX^*jXDgeJ*%H#@}04x+9+p0Cd9(niUlg5)$f2ohNLvEftPOj$8v3`|jDziO}Z9SDKYL>6H{ifn4 z9i<$BsB1|>d5|zlji(Kj3&L5oD{ZG1*8L}F3DQ7>B%7Tllf()nkF}!*#J1!B3uLdv zVI)DzXX$V$X`@xsO2I>9y9RiB_?U$AmV69Mp`4%OYhg{=o0ry4!+d&}U(}z&yYw@! z?hi-Fp|gVS0|5N-VR421z84HRsZp_o{%)r;3+ukD-16o^-|I8B1Z%e}0B(rwggd4X zuo6e0C`(81)>+k2)z&rWy?eH6xiBPdlb3m>!EuI~(tGa^oRD2y?juDwN96`61LRjO zr*)+=R55$n+Nj!B9pLR`-==y5< zR)w#Hu{4Em;HP00Ey*+W=ddL0!pDD;e<6V%0}K2A280hR+W)tSli~ol8NV{wkqp3h zse1aDGyqO!Rx{Sl0${53dd@nN2eiWFh4Z<66D0R0+}>6?tAtl}r;Cqs-uaq&@1Y>; z7OA@QhogzDiu|37+ym_=2d|pqrM>vm9gTF zY8CpkdQ{w`E}l8MaAM!?GCCcDbk!S4vthHDq$7&1UJ z@%L~mxuK2VY3M1j@{e3Y4QX#aNN?~B{^u9@|0e{Mi_DDz;9+#jgeUO;JV`2NsFDi6 z?u_S|mooq;$XRP%oDD#2agyzJPW6B{j!*D{wR}>bXMl6LFe59$SHWXKvAJ!e>Atd# zBx{!Zw=~+-!S=J9qc}XH?L=YfZ(hH!LNSsiQoazX&LA!2FG5o_nD$XBiR;xL=zMj2 zVSgWOM~;g|;$T7aAF(7E$(BZ}PIPKXAy5pWHes_oF$!Asa_U()?X3i7x7<@>lAN`1z?BatKo1m0AVIWcEt<;npmmj z?`!~Gi|vGixpuJJVZg_26GFDT-#UAU=9Ej`E}m@6jNPSczW0uXx#eUcL$}xZRvx6} zdj{J^D%;hLzWMeLwF}uUl@ofZAINX=8sUc8lSZk5VkUV`?WCGmo-`}^?sX-{*kF26 zoJBmE$^zg%GE;lYJn%93qW!8hg{joX%kYt~0`15*^Yw5bUCsslB0NZ+^0oR0n8o~h z8GjmD$kys#{TiC4HS$0DFZyo-ZxR1T#rzdrD;$8Csk2k&#sg5QmCCs~^26w3mj zhp@*+&BZ`*TnApYYy`5agCj{e9x>2U(cK7!rjGN~^RCBZjr*lm(jsTS++lLQJl0*( zDk}GtIPZAdFG>Wt?ptB^s58lHsiH7X&7iT$df|&Yot9LCMMT0_Nm4_sOM0@$WU|X+at`igJT zKR^pBsaN!;qkOhO4=7%!zk&bZf9S^n%|WrkbMVM};YuI?=aW|^)h?WS$!wW1CJ6wT zv&Qs$8UPz@1(t3`0P4YQf}Rr#S~;R|PiwURuRG7#PM8)I;63kN2A`)s_nr10!8eRI zrP0zN=fd16@-K29cXcaPZYuXYvuzucx9SAnM!QMvPqs@{g<cH)=#B{+tz_^gI$?x2sJ5`=4Lw7T)MOmbD_AIk4R2Hg_z1!_! zYB^FxswuQqe{V^^XM>6^>lQcUf@S`j)GX2 zUdrD91%?@e-xcOP##fEwp#Vr}vr_NJ0PvgfbLO@r00!oEF;`CmAj|Hs(kuYdU{7Ja zDHL49MszUuC*X87bVS+S2W5Gdxq1mVm->c))>fQtPXR1bi^VJcYWHmV`{UWp=@pP>mC5|Os=^~|`xRIQo z3)LCod6LEIkaOZQ(uv(9L9iJ8nRTQROs0RcziA7YOLc838x0{Hpt-e;&_Q=;SG3Cz z(=S?S{t-H94$tT5$WN>CM4h9Sv>zYxP5v2*_&+^xUij2-0HPvW#(CoaI2%7N*b#J!&x!}qTld5>R%@ZER1Mo*uIYY@*0Gef7&n(OX zot4wyJTe;qyI9S(C&w9Z-?0;}wpL3D_cU-05zc3cKH2jCHq7lQjq;^CDqAJ_qg2(k z!FEy3QNlbo?F|)OUG4orIHBZ_GSXGSsm>+kWLX@gM$sn9aPg|zlMYZ%iV5U8tw$oD zLI`_HO2LL?8k<3Tz<%U8)7dh(kW|oKuygPTS*oqnKEc_`IOQJR`j=mQgN9&VbHRrp?b zt$oeGARf0AA6X6*TjvUKLu#kINDepDMC^}tB})TZPJFlCXui&InL(O z(r^jET2h<$yfUm#F7*HTXw1q0ppn&TIhGB;Td|HX zJ{N*bj&MB3_A%s$`=+ys_2 zR=Mwu9jiZ*c~Vbdf%=8~D&G={kpc9PqKRJemL`+YVsp}t?Ivf%(c~igfkwg2gllG2 z2Hqe`wVSLb451->v6c^gRO5u7hwW${&*uej0o}+mbu+q0-|~feIaGp`*A;(9bck)! zpZmw7U0Q4ZmH(pu5s-@bzcuDobb2@d8&apH42cJzsZq!ZHvo`jsg`p+6M+80I$Ml6 z5LCtG;6}?1P~FwkanEjxobD;O68u>MI;k&Gd!*r;tqM(JWOLOOXWTB;&*%$Y6GfoD*k~Cu}f{ zfqO{}O=e}`L-MoslJ$b|G@5VJmP0=+&5QH%uruw=*YX0mlK#xix*0vAANex994f~u z>(t*7onYJb*Z~E3V}KCV4x!$m$7yaDDUp%EFrv#GI>wAJ3z@0DIN39$4d5lX|&YQ`5||s z{Ht8gJSa0}*?9ja0a+pY?`3vm=LVlTzq+(LHx{1^};wF#F`}K;Xck@JJ2;Bb+DjG;4`sJKUnHs?ac| zk2l3r32rgirRUy`cwBZdd8icXjInH%XUL)MdDe2ua;1#twe66yLfz>N6Fh1a;+2L7 zlhoZLQ+_PmQ>`>jDJ>evNSdoo5;^&kW|B){Q^MI=5(oQ{iL4|o59g7)>;~-vcM)0Z z&sM;jWRzytEH%$1+6b?RP z2kM$T5wv$TbDXd)3@+(e?J6&@_yk`WPXhF&jhBLb2;a#bEf16CI!u{o^P#gfK;}<5UCj&4dm8ADh zE4&|5jJ)t(#8M$=x+xjN;-&VHxs&6Z?uIzTwl1r&H`KjP_$fCVHME=QcY{4<)MRQnHI}uqZcHA zcjtSNol^dY-$S$Lc-~15#6=&w|N3k!+W$*I>5<7%0DOtAoNyr?fLlo=49-*l(lah( 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

FPT(ZDY|NnUVQK!xWaFi<$tGEC-Def%w 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Ð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%0DYL=OnVP=49f?%sHgu;*cs{KTMe8^yD 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 diff --git a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/DiscordRpc.uplugin b/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/DiscordRpc.uplugin deleted file mode 100644 index 309df129cf..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/DiscordRpc.uplugin +++ /dev/null @@ -1,29 +0,0 @@ -{ - "FileVersion": 3, - "Version": 1, - "VersionName": "1.0", - "FriendlyName": "Discord RPC", - "Description": "Wrap the Discord RPC library.", - "Category": "Messaging", - "CreatedBy": "Chris Marsh ", - "CreatedByURL": "https://discordapp.com/", - "DocsURL": "", - "MarketplaceURL": "", - "SupportURL": "", - "CanContainContent": true, - "IsBetaVersion": true, - "Installed": false, - "Modules": [ - { - "Name": "DiscordRpc", - "Type": "Runtime", - "LoadingPhase": "PreDefault", - "WhitelistPlatforms" : - [ - "Win64", - "Linux", - "Mac" - ] - } - ] -} \ No newline at end of file diff --git a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Resources/Icon128.png b/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Resources/Icon128.png deleted file mode 100644 index 8b7f8e1c6a2c71c9e20d4e9e819455056c43d75e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9834 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 v=ZE9U=m|iZs(=4 diff --git a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Resources/discord.png b/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Resources/discord.png deleted file mode 100644 index 8b7f8e1c6a2c71c9e20d4e9e819455056c43d75e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9834 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 v=ZE9U=m|iZs(=4 diff --git a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/DiscordRpc.Build.cs b/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/DiscordRpc.Build.cs deleted file mode 100644 index 4b06325520..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/DiscordRpc.Build.cs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. - -using UnrealBuildTool; -using System.IO; - -public class DiscordRpc : ModuleRules -{ -#if WITH_FORWARDED_MODULE_RULES_CTOR - public DiscordRpc(ReadOnlyTargetRules Target) : base(Target) -#else - public DiscordRpc(TargetInfo Target) -#endif - { - Definitions.Add("DISCORD_DYNAMIC_LIB=1"); - - PublicIncludePaths.AddRange( - new string[] { - "DiscordRpc/Public" - } - ); - - PrivateIncludePaths.AddRange( - new string[] { - "DiscordRpc/Private" - } - ); - - PublicDependencyModuleNames.AddRange( - new string[] - { - "Core", - "DiscordRpcLibrary" - } - ); - - PrivateDependencyModuleNames.AddRange( - new string[] - { - "CoreUObject", - "Engine", - "Slate", - "SlateCore", - "Projects" - } - ); - - DynamicallyLoadedModuleNames.AddRange( - new string[] - { - // ... add any modules that your module loads dynamically here ... - } - ); - - string BaseDirectory = Path.GetFullPath(Path.Combine(ModuleDirectory, "..", "..", "Source", "ThirdParty", "DiscordRpcLibrary")); - PublicIncludePaths.Add(Path.Combine(BaseDirectory, "Include")); - } -} \ No newline at end of file diff --git a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpc.cpp b/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpc.cpp deleted file mode 100644 index d539dab034..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpc.cpp +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. - -#include "DiscordRpcPrivatePCH.h" -#include "IPluginManager.h" -#include "ModuleManager.h" - -#define LOCTEXT_NAMESPACE "FDiscordRpcModule" - -void FDiscordRpcModule::StartupModule() -{ -#if !PLATFORM_LINUX -#if defined(DISCORD_DYNAMIC_LIB) - // Get the base directory of this plugin - FString BaseDir = IPluginManager::Get().FindPlugin("DiscordRpc")->GetBaseDir(); - const FString SDKDir = - FPaths::Combine(*BaseDir, TEXT("Source"), TEXT("ThirdParty"), TEXT("DiscordRpcLibrary")); -#if PLATFORM_WINDOWS - const FString LibName = TEXT("discord-rpc"); - const FString LibDir = FPaths::Combine(*SDKDir, TEXT("Win64")); - if (!LoadDependency(LibDir, LibName, DiscordRpcLibraryHandle)) { - FMessageDialog::Open( - EAppMsgType::Ok, - LOCTEXT(LOCTEXT_NAMESPACE, - "Failed to load DiscordRpc plugin. Plug-in will not be functional.")); - FreeDependency(DiscordRpcLibraryHandle); - } -#elif PLATFORM_MAC - const FString LibName = TEXT("libdiscord-rpc"); - const FString LibDir = FPaths::Combine(*SDKDir, TEXT("Mac")); - if (!LoadDependency(LibDir, LibName, DiscordRpcLibraryHandle)) { - FMessageDialog::Open( - EAppMsgType::Ok, - LOCTEXT(LOCTEXT_NAMESPACE, - "Failed to load DiscordRpc plugin. Plug-in will not be functional.")); - FreeDependency(DiscordRpcLibraryHandle); - } -#endif -#endif -#endif -} - -void FDiscordRpcModule::ShutdownModule() -{ - // Free the dll handle -#if !PLATFORM_LINUX -#if defined(DISCORD_DYNAMIC_LIB) - FreeDependency(DiscordRpcLibraryHandle); -#endif -#endif -} - -bool FDiscordRpcModule::LoadDependency(const FString& Dir, const FString& Name, void*& Handle) -{ - FString Lib = Name + TEXT(".") + FPlatformProcess::GetModuleExtension(); - FString Path = Dir.IsEmpty() ? *Lib : FPaths::Combine(*Dir, *Lib); - - Handle = FPlatformProcess::GetDllHandle(*Path); - - if (Handle == nullptr) { - return false; - } - - return true; -} - -void FDiscordRpcModule::FreeDependency(void*& Handle) -{ - if (Handle != nullptr) { - FPlatformProcess::FreeDllHandle(Handle); - Handle = nullptr; - } -} - -#undef LOCTEXT_NAMESPACE - -IMPLEMENT_MODULE(FDiscordRpcModule, DiscordRpc) \ No newline at end of file diff --git a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcBlueprint.cpp b/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcBlueprint.cpp deleted file mode 100644 index 95388df0b4..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcBlueprint.cpp +++ /dev/null @@ -1,171 +0,0 @@ -#include "DiscordRpcPrivatePCH.h" -#include "DiscordRpcBlueprint.h" -#include "discord_rpc.h" - -DEFINE_LOG_CATEGORY(Discord) - -static UDiscordRpc* self = nullptr; - -static void ReadyHandler(const DiscordUser* connectedUser) -{ - FDiscordUserData ud; - ud.userId = ANSI_TO_TCHAR(connectedUser->userId); - ud.username = ANSI_TO_TCHAR(connectedUser->username); - ud.discriminator = ANSI_TO_TCHAR(connectedUser->discriminator); - ud.avatar = ANSI_TO_TCHAR(connectedUser->avatar); - UE_LOG(Discord, - Log, - TEXT("Discord connected to %s - %s#%s"), - *ud.userId, - *ud.username, - *ud.discriminator); - if (self) { - self->IsConnected = true; - self->OnConnected.Broadcast(ud); - } -} - -static void DisconnectHandler(int errorCode, const char* message) -{ - auto msg = FString(message); - UE_LOG(Discord, Log, TEXT("Discord disconnected (%d): %s"), errorCode, *msg); - if (self) { - self->IsConnected = false; - self->OnDisconnected.Broadcast(errorCode, msg); - } -} - -static void ErroredHandler(int errorCode, const char* message) -{ - auto msg = FString(message); - UE_LOG(Discord, Log, TEXT("Discord error (%d): %s"), errorCode, *msg); - if (self) { - self->OnErrored.Broadcast(errorCode, msg); - } -} - -static void JoinGameHandler(const char* joinSecret) -{ - auto secret = FString(joinSecret); - UE_LOG(Discord, Log, TEXT("Discord join %s"), *secret); - if (self) { - self->OnJoin.Broadcast(secret); - } -} - -static void SpectateGameHandler(const char* spectateSecret) -{ - auto secret = FString(spectateSecret); - UE_LOG(Discord, Log, TEXT("Discord spectate %s"), *secret); - if (self) { - self->OnSpectate.Broadcast(secret); - } -} - -static void JoinRequestHandler(const DiscordUser* request) -{ - FDiscordUserData ud; - ud.userId = ANSI_TO_TCHAR(request->userId); - ud.username = ANSI_TO_TCHAR(request->username); - ud.discriminator = ANSI_TO_TCHAR(request->discriminator); - ud.avatar = ANSI_TO_TCHAR(request->avatar); - UE_LOG(Discord, - Log, - TEXT("Discord join request from %s - %s#%s"), - *ud.userId, - *ud.username, - *ud.discriminator); - if (self) { - self->OnJoinRequest.Broadcast(ud); - } -} - -void UDiscordRpc::Initialize(const FString& applicationId, - bool autoRegister, - const FString& optionalSteamId) -{ - self = this; - IsConnected = false; - DiscordEventHandlers handlers{}; - handlers.ready = ReadyHandler; - handlers.disconnected = DisconnectHandler; - handlers.errored = ErroredHandler; - if (OnJoin.IsBound()) { - handlers.joinGame = JoinGameHandler; - } - if (OnSpectate.IsBound()) { - handlers.spectateGame = SpectateGameHandler; - } - if (OnJoinRequest.IsBound()) { - handlers.joinRequest = JoinRequestHandler; - } - auto appId = StringCast(*applicationId); - auto steamId = StringCast(*optionalSteamId); - Discord_Initialize( - (const char*)appId.Get(), &handlers, autoRegister, (const char*)steamId.Get()); -} - -void UDiscordRpc::Shutdown() -{ - Discord_Shutdown(); - self = nullptr; -} - -void UDiscordRpc::RunCallbacks() -{ - Discord_RunCallbacks(); -} - -void UDiscordRpc::UpdatePresence() -{ - DiscordRichPresence rp{}; - - auto state = StringCast(*RichPresence.state); - rp.state = state.Get(); - - auto details = StringCast(*RichPresence.details); - rp.details = details.Get(); - - auto largeImageKey = StringCast(*RichPresence.largeImageKey); - rp.largeImageKey = largeImageKey.Get(); - - auto largeImageText = StringCast(*RichPresence.largeImageText); - rp.largeImageText = largeImageText.Get(); - - auto smallImageKey = StringCast(*RichPresence.smallImageKey); - rp.smallImageKey = smallImageKey.Get(); - - auto smallImageText = StringCast(*RichPresence.smallImageText); - rp.smallImageText = smallImageText.Get(); - - auto partyId = StringCast(*RichPresence.partyId); - rp.partyId = partyId.Get(); - - auto matchSecret = StringCast(*RichPresence.matchSecret); - rp.matchSecret = matchSecret.Get(); - - auto joinSecret = StringCast(*RichPresence.joinSecret); - rp.joinSecret = joinSecret.Get(); - - auto spectateSecret = StringCast(*RichPresence.spectateSecret); - rp.spectateSecret = spectateSecret.Get(); - rp.startTimestamp = RichPresence.startTimestamp; - rp.endTimestamp = RichPresence.endTimestamp; - rp.partySize = RichPresence.partySize; - rp.partyMax = RichPresence.partyMax; - rp.instance = RichPresence.instance; - - Discord_UpdatePresence(&rp); -} - -void UDiscordRpc::ClearPresence() -{ - Discord_ClearPresence(); -} - -void UDiscordRpc::Respond(const FString& userId, int reply) -{ - UE_LOG(Discord, Log, TEXT("Responding %d to join request from %s"), reply, *userId); - FTCHARToUTF8 utf8_userid(*userId); - Discord_Respond(utf8_userid.Get(), reply); -} diff --git a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcPrivatePCH.h b/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcPrivatePCH.h deleted file mode 100644 index 0c66aba443..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcPrivatePCH.h +++ /dev/null @@ -1,2 +0,0 @@ -#include "Core.h" -#include "DiscordRpc.h" \ No newline at end of file diff --git a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpc.h b/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpc.h deleted file mode 100644 index 727833b091..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpc.h +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include "ModuleManager.h" - -class FDiscordRpcModule : public IModuleInterface { -public: - /** IModuleInterface implementation */ - virtual void StartupModule() override; - virtual void ShutdownModule() override; - -private: - /** Handle to the test dll we will load */ - void* DiscordRpcLibraryHandle; - - /** StartupModule is covered with defines, these functions are the place to put breakpoints */ - static bool LoadDependency(const FString& Dir, const FString& Name, void*& Handle); - static void FreeDependency(void*& Handle); -}; \ No newline at end of file diff --git a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpcBlueprint.h b/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpcBlueprint.h deleted file mode 100644 index 17e2f9b29e..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpcBlueprint.h +++ /dev/null @@ -1,169 +0,0 @@ -#pragma once - -#include "CoreMinimal.h" -#include "Engine.h" -#include "DiscordRpcBlueprint.generated.h" - -// unreal's header tool hates clang-format -// clang-format off - -/** -* Ask to join callback data -*/ -USTRUCT(BlueprintType) -struct FDiscordUserData { - GENERATED_USTRUCT_BODY() - - UPROPERTY(BlueprintReadOnly) - FString userId; - UPROPERTY(BlueprintReadOnly) - FString username; - UPROPERTY(BlueprintReadOnly) - FString discriminator; - UPROPERTY(BlueprintReadOnly) - FString avatar; -}; - -/** -* Valid response codes for Respond function -*/ -UENUM(BlueprintType) -enum class EDiscordJoinResponseCodes : uint8 -{ - DISCORD_REPLY_NO UMETA(DisplayName="No"), - DISCORD_REPLY_YES UMETA(DisplayName="Yes"), - DISCORD_REPLY_IGNORE UMETA(DisplayName="Ignore") -}; - -DECLARE_LOG_CATEGORY_EXTERN(Discord, Log, All); - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDiscordConnected, const FDiscordUserData&, joinRequest); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FDiscordDisconnected, int, errorCode, const FString&, errorMessage); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FDiscordErrored, int, errorCode, const FString&, errorMessage); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDiscordJoin, const FString&, joinSecret); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDiscordSpectate, const FString&, spectateSecret); -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDiscordJoinRequest, const FDiscordUserData&, joinRequest); - -// clang-format on - -/** - * Rich presence data - */ -USTRUCT(BlueprintType) -struct FDiscordRichPresence { - GENERATED_USTRUCT_BODY() - - UPROPERTY(BlueprintReadWrite) - FString state; - UPROPERTY(BlueprintReadWrite) - FString details; - // todo, timestamps are 64bit, does that even matter? - UPROPERTY(BlueprintReadWrite) - int startTimestamp; - UPROPERTY(BlueprintReadWrite) - int endTimestamp; - UPROPERTY(BlueprintReadWrite) - FString largeImageKey; - UPROPERTY(BlueprintReadWrite) - FString largeImageText; - UPROPERTY(BlueprintReadWrite) - FString smallImageKey; - UPROPERTY(BlueprintReadWrite) - FString smallImageText; - UPROPERTY(BlueprintReadWrite) - FString partyId; - UPROPERTY(BlueprintReadWrite) - int partySize; - UPROPERTY(BlueprintReadWrite) - int partyMax; - UPROPERTY(BlueprintReadWrite) - FString matchSecret; - UPROPERTY(BlueprintReadWrite) - FString joinSecret; - UPROPERTY(BlueprintReadWrite) - FString spectateSecret; - UPROPERTY(BlueprintReadWrite) - bool instance; -}; - -/** - * - */ -UCLASS(BlueprintType, meta = (DisplayName = "Discord RPC"), Category = "Discord") -class DISCORDRPC_API UDiscordRpc : public UObject { - GENERATED_BODY() - -public: - UFUNCTION(BlueprintCallable, - meta = (DisplayName = "Initialize connection", Keywords = "Discord rpc"), - Category = "Discord") - void Initialize(const FString& applicationId, - bool autoRegister, - const FString& optionalSteamId); - - UFUNCTION(BlueprintCallable, - meta = (DisplayName = "Shut down connection", Keywords = "Discord rpc"), - Category = "Discord") - void Shutdown(); - - UFUNCTION(BlueprintCallable, - meta = (DisplayName = "Check for callbacks", Keywords = "Discord rpc"), - Category = "Discord") - void RunCallbacks(); - - UFUNCTION(BlueprintCallable, - meta = (DisplayName = "Send presence", Keywords = "Discord rpc"), - Category = "Discord") - void UpdatePresence(); - - UFUNCTION(BlueprintCallable, - meta = (DisplayName = "Clear presence", Keywords = "Discord rpc"), - Category = "Discord") - void ClearPresence(); - - UFUNCTION(BlueprintCallable, - meta = (DisplayName = "Respond to join request", Keywords = "Discord rpc"), - Category = "Discord") - void Respond(const FString& userId, int reply); - - UPROPERTY(BlueprintReadOnly, - meta = (DisplayName = "Is Discord connected", Keywords = "Discord rpc"), - Category = "Discord") - bool IsConnected; - - UPROPERTY(BlueprintAssignable, - meta = (DisplayName = "On connection", Keywords = "Discord rpc"), - Category = "Discord") - FDiscordConnected OnConnected; - - UPROPERTY(BlueprintAssignable, - meta = (DisplayName = "On disconnection", Keywords = "Discord rpc"), - Category = "Discord") - FDiscordDisconnected OnDisconnected; - - UPROPERTY(BlueprintAssignable, - meta = (DisplayName = "On error message", Keywords = "Discord rpc"), - Category = "Discord") - FDiscordErrored OnErrored; - - UPROPERTY(BlueprintAssignable, - meta = (DisplayName = "When Discord user presses join", Keywords = "Discord rpc"), - Category = "Discord") - FDiscordJoin OnJoin; - - UPROPERTY(BlueprintAssignable, - meta = (DisplayName = "When Discord user presses spectate", Keywords = "Discord rpc"), - Category = "Discord") - FDiscordSpectate OnSpectate; - - UPROPERTY(BlueprintAssignable, - meta = (DisplayName = "When Discord another user sends a join request", - Keywords = "Discord rpc"), - Category = "Discord") - FDiscordJoinRequest OnJoinRequest; - - UPROPERTY(BlueprintReadWrite, - meta = (DisplayName = "Rich presence info", Keywords = "Discord rpc"), - Category = "Discord") - FDiscordRichPresence RichPresence; -}; diff --git a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/ThirdParty/DiscordRpcLibrary/DiscordRpcLibrary.Build.cs b/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/ThirdParty/DiscordRpcLibrary/DiscordRpcLibrary.Build.cs deleted file mode 100644 index ba8d83499f..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/ThirdParty/DiscordRpcLibrary/DiscordRpcLibrary.Build.cs +++ /dev/null @@ -1,59 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - -using System.IO; -using UnrealBuildTool; - -public class DiscordRpcLibrary : ModuleRules -{ -#if WITH_FORWARDED_MODULE_RULES_CTOR - public DiscordRpcLibrary(ReadOnlyTargetRules Target) : base(Target) -#else - public DiscordRpcLibrary(TargetInfo Target) -#endif - { - Type = ModuleType.External; - Definitions.Add("DISCORD_DYNAMIC_LIB=1"); - - string BaseDirectory = Path.GetFullPath(Path.Combine(ModuleDirectory, "..", "..", "ThirdParty", "DiscordRpcLibrary")); - - if (Target.Platform == UnrealTargetPlatform.Win64) - { - string lib = Path.Combine(BaseDirectory, "Win64"); - - // Include headers - PublicIncludePaths.Add(Path.Combine(BaseDirectory, "Include")); - - // Add the import library - PublicLibraryPaths.Add(lib); - PublicAdditionalLibraries.Add(Path.Combine(lib, "discord-rpc.lib")); - - // Dynamic - RuntimeDependencies.Add(new RuntimeDependency(Path.Combine(lib, "discord-rpc.dll"))); - PublicDelayLoadDLLs.Add("discord-rpc.dll"); - } - else if (Target.Platform == UnrealTargetPlatform.Linux) - { - string lib = Path.Combine(BaseDirectory, "Linux", "x86_64-unknown-linux-gnu"); - - // Include headers - PublicIncludePaths.Add(Path.Combine(BaseDirectory, "Include")); - - // Add the import library - PublicLibraryPaths.Add(lib); - PublicAdditionalLibraries.Add(Path.Combine(lib, "libdiscord-rpc.so")); - RuntimeDependencies.Add(new RuntimeDependency(Path.Combine(lib, "libdiscord-rpc.so"))); - } - else if (Target.Platform == UnrealTargetPlatform.Mac) - { - string lib = Path.Combine(BaseDirectory, "Mac"); - - // Include headers - PublicIncludePaths.Add(Path.Combine(BaseDirectory, "Include")); - - // Add the import library - PublicLibraryPaths.Add(lib); - PublicAdditionalLibraries.Add(Path.Combine(lib, "libdiscord-rpc.dylib")); - RuntimeDependencies.Add(new RuntimeDependency(Path.Combine(lib, "libdiscord-rpc.dylib"))); - } - } -} \ No newline at end of file diff --git a/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus.Target.cs b/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus.Target.cs deleted file mode 100644 index 0c7c3c8889..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus.Target.cs +++ /dev/null @@ -1,14 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - -using UnrealBuildTool; -using System.Collections.Generic; - -public class unrealstatusTarget : TargetRules -{ - public unrealstatusTarget(TargetInfo Target) : base(Target) - { - Type = TargetType.Game; - - ExtraModuleNames.AddRange( new string[] { "unrealstatus" } ); - } -} diff --git a/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.Build.cs b/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.Build.cs deleted file mode 100644 index 9560370eb0..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.Build.cs +++ /dev/null @@ -1,23 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - -using UnrealBuildTool; - -public class unrealstatus : ModuleRules -{ - public unrealstatus(ReadOnlyTargetRules Target) : base(Target) - { - PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; - - PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" }); - - PrivateDependencyModuleNames.AddRange(new string[] { }); - - // Uncomment if you are using Slate UI - // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); - - // Uncomment if you are using online features - // PrivateDependencyModuleNames.Add("OnlineSubsystem"); - - // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true - } -} diff --git a/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.cpp b/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.cpp deleted file mode 100644 index 9dd5388652..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.cpp +++ /dev/null @@ -1,6 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - -#include "unrealstatus.h" -#include "Modules/ModuleManager.h" - -IMPLEMENT_PRIMARY_GAME_MODULE(FDefaultGameModuleImpl, unrealstatus, "unrealstatus"); diff --git a/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.h b/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.h deleted file mode 100644 index 73407dd15a..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.h +++ /dev/null @@ -1,5 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - -#pragma once - -#include "CoreMinimal.h" diff --git a/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatusGameModeBase.cpp b/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatusGameModeBase.cpp deleted file mode 100644 index 1af30948cd..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatusGameModeBase.cpp +++ /dev/null @@ -1,3 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - -#include "unrealstatusGameModeBase.h" diff --git a/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatusGameModeBase.h b/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatusGameModeBase.h deleted file mode 100644 index 8dd9bd4740..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatusGameModeBase.h +++ /dev/null @@ -1,15 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - -#pragma once - -#include "CoreMinimal.h" -#include "GameFramework/GameModeBase.h" -#include "unrealstatusGameModeBase.generated.h" - -/** - * - */ -UCLASS() -class UNREALSTATUS_API AunrealstatusGameModeBase : public AGameModeBase { - GENERATED_BODY() -}; diff --git a/deps/discord-rpc/examples/unrealstatus/Source/unrealstatusEditor.Target.cs b/deps/discord-rpc/examples/unrealstatus/Source/unrealstatusEditor.Target.cs deleted file mode 100644 index 2e8ad02286..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/Source/unrealstatusEditor.Target.cs +++ /dev/null @@ -1,14 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - -using UnrealBuildTool; -using System.Collections.Generic; - -public class unrealstatusEditorTarget : TargetRules -{ - public unrealstatusEditorTarget(TargetInfo Target) : base(Target) - { - Type = TargetType.Editor; - - ExtraModuleNames.AddRange( new string[] { "unrealstatus" } ); - } -} diff --git a/deps/discord-rpc/examples/unrealstatus/unrealstatus.uproject b/deps/discord-rpc/examples/unrealstatus/unrealstatus.uproject deleted file mode 100644 index 8a4a40b4e2..0000000000 --- a/deps/discord-rpc/examples/unrealstatus/unrealstatus.uproject +++ /dev/null @@ -1,19 +0,0 @@ -{ - "FileVersion": 3, - "EngineAssociation": "4.18", - "Category": "", - "Description": "", - "Modules": [ - { - "Name": "unrealstatus", - "Type": "Runtime", - "LoadingPhase": "Default" - } - ], - "TargetPlatforms": [ - "LinuxNoEditor", - "MacNoEditor", - "WindowsNoEditor", - "AllDesktop" - ] -} \ No newline at end of file diff --git a/deps/discord-rpc/include/discord_register.h b/deps/discord-rpc/include/discord_register.h index 16fb42f328..3bd96b1f48 100644 --- a/deps/discord-rpc/include/discord_register.h +++ b/deps/discord-rpc/include/discord_register.h @@ -1,18 +1,6 @@ #pragma once -#if defined(DISCORD_DYNAMIC_LIB) -#if defined(_WIN32) -#if defined(DISCORD_BUILDING_SDK) -#define DISCORD_EXPORT __declspec(dllexport) -#else -#define DISCORD_EXPORT __declspec(dllimport) -#endif -#else -#define DISCORD_EXPORT __attribute__((visibility("default"))) -#endif -#else #define DISCORD_EXPORT -#endif #ifdef __cplusplus extern "C" { diff --git a/deps/discord-rpc/include/discord_rpc.h b/deps/discord-rpc/include/discord_rpc.h index 7ca5c4280b..05c562911f 100644 --- a/deps/discord-rpc/include/discord_rpc.h +++ b/deps/discord-rpc/include/discord_rpc.h @@ -1,19 +1,20 @@ #pragma once #include -// clang-format off +/* clang-format off */ # define DISCORD_EXPORT -// clang-format on +/* clang-format on */ #ifdef __cplusplus extern "C" { #endif -typedef struct DiscordRichPresence { - const char* state; /* max 128 bytes */ - const char* details; /* max 128 bytes */ +typedef struct DiscordRichPresence +{ + const char* state; /* max 128 bytes */ + const char* details; /* max 128 bytes */ int64_t startTimestamp; int64_t endTimestamp; const char* largeImageKey; /* max 32 bytes */ @@ -29,14 +30,16 @@ typedef struct DiscordRichPresence { int8_t instance; } DiscordRichPresence; -typedef struct DiscordUser { +typedef struct DiscordUser +{ const char* userId; const char* username; const char* discriminator; const char* avatar; } DiscordUser; -typedef struct DiscordEventHandlers { +typedef struct DiscordEventHandlers +{ void (*ready)(const DiscordUser* request); void (*disconnected)(int errorCode, const char* message); void (*errored)(int errorCode, const char* message); @@ -58,7 +61,8 @@ DISCORD_EXPORT void Discord_Shutdown(void); /* checks for incoming messages, dispatches callbacks */ DISCORD_EXPORT void Discord_RunCallbacks(void); -/* If you disable the lib starting its own io thread, you'll need to call this from your own */ +/* If you disable the lib starting its own I/O thread, + * you'll need to call this from your own */ #ifdef DISCORD_DISABLE_IO_THREAD DISCORD_EXPORT void Discord_UpdateConnection(void); #endif @@ -66,7 +70,8 @@ DISCORD_EXPORT void Discord_UpdateConnection(void); DISCORD_EXPORT void Discord_UpdatePresence(const DiscordRichPresence* presence); DISCORD_EXPORT void Discord_ClearPresence(void); -DISCORD_EXPORT void Discord_Respond(const char* userid, /* DISCORD_REPLY_ */ int reply); +DISCORD_EXPORT void Discord_Respond(const char* userid, + /* DISCORD_REPLY_ */ int reply); DISCORD_EXPORT void Discord_UpdateHandlers(DiscordEventHandlers* handlers); diff --git a/deps/discord-rpc/src/connection.h b/deps/discord-rpc/src/connection.h index a8f99b9f10..d3fa231d5e 100644 --- a/deps/discord-rpc/src/connection.h +++ b/deps/discord-rpc/src/connection.h @@ -1,11 +1,11 @@ #pragma once -// This is to wrap the platform specific kinds of connect/read/write. +/* This is to wrap the platform specific kinds of connect/read/write. */ #include #include -// not really connectiony, but need per-platform +/* not really connectiony, but need per-platform */ int GetProcessId(); struct BaseConnection { diff --git a/deps/discord-rpc/src/connection_win.cpp b/deps/discord-rpc/src/connection_win.cpp index 4398e255e0..76ac52d08e 100644 --- a/deps/discord-rpc/src/connection_win.cpp +++ b/deps/discord-rpc/src/connection_win.cpp @@ -4,7 +4,6 @@ #define NOMCX #define NOSERVICE #define NOIME -#include #include int GetProcessId() @@ -48,7 +47,7 @@ bool BaseConnection::Open() return true; } - auto lastError = GetLastError(); + DWORD lastError = GetLastError(); if (lastError == ERROR_FILE_NOT_FOUND) { if (pipeName[pipeDigit] < L'9') @@ -71,26 +70,24 @@ bool BaseConnection::Close() { auto self = reinterpret_cast(this); ::CloseHandle(self->pipe); - self->pipe = INVALID_HANDLE_VALUE; + self->pipe = INVALID_HANDLE_VALUE; self->isOpen = false; return true; } bool BaseConnection::Write(const void* data, size_t length) { + DWORD bytesWritten = 0; + const DWORD bytesLength = (DWORD)length; if (length == 0) return true; auto self = reinterpret_cast(this); - assert(self); if (!self) return false; if (self->pipe == INVALID_HANDLE_VALUE) return false; - assert(data); if (!data) return false; - const DWORD bytesLength = (DWORD)length; - DWORD bytesWritten = 0; return ::WriteFile(self->pipe, data, bytesLength, &bytesWritten, nullptr) == TRUE && bytesWritten == bytesLength; @@ -98,27 +95,27 @@ bool BaseConnection::Write(const void* data, size_t length) bool BaseConnection::Read(void* data, size_t length) { - assert(data); + DWORD bytesAvailable = 0; if (!data) return false; auto self = reinterpret_cast(this); - assert(self); if (!self) return false; if (self->pipe == INVALID_HANDLE_VALUE) return false; - DWORD bytesAvailable = 0; - if (::PeekNamedPipe(self->pipe, nullptr, 0, nullptr, &bytesAvailable, nullptr)) { + + if (::PeekNamedPipe(self->pipe, nullptr, 0, nullptr, + &bytesAvailable, nullptr)) + { if (bytesAvailable >= length) { DWORD bytesToRead = (DWORD)length; - DWORD bytesRead = 0; - if (::ReadFile(self->pipe, data, bytesToRead, &bytesRead, nullptr) == TRUE) { - assert(bytesToRead == bytesRead); + DWORD bytesRead = 0; + if (::ReadFile(self->pipe, data, bytesToRead, + &bytesRead, nullptr) == TRUE) return true; - } - else - Close(); + + Close(); } } else diff --git a/deps/discord-rpc/src/discord_register_linux.c b/deps/discord-rpc/src/discord_register_linux.c index 3a869cdcbe..0652ebde0e 100644 --- a/deps/discord-rpc/src/discord_register_linux.c +++ b/deps/discord-rpc/src/discord_register_linux.c @@ -10,16 +10,7 @@ #include #include - -static bool Mkdir(const char* path) -{ - int result = mkdir(path, 0755); - if (result == 0) - return true; - if (errno == EEXIST) - return true; - return false; -} +#include /* we want to register games so we can run them from * Discord client as discord-:// */ @@ -64,15 +55,15 @@ void Discord_Register(const char* applicationId, const char* command) snprintf(desktopFilename, sizeof(desktopFilename), "/discord-%s.desktop", applicationId); snprintf(desktopFilePath, sizeof(desktopFilePath), "%s/.local", home); - if (!Mkdir(desktopFilePath)) + if (!path_mkdir(desktopFilePath)) return; - strcat(desktopFilePath, "/share"); - if (!Mkdir(desktopFilePath)) + strlcat(desktopFilePath, "/share", sizeof(desktopFilePath)); + if (!path_mkdir(desktopFilePath)) return; - strcat(desktopFilePath, "/applications"); - if (!Mkdir(desktopFilePath)) + strlcat(desktopFilePath, "/applications", sizeof(desktopFilePath)); + if (!path_mkdir(desktopFilePath)) return; - strcat(desktopFilePath, desktopFilename); + strlcat(desktopFilePath, desktopFilename, sizeof(desktopFilePath)); fp = fopen(desktopFilePath, "w"); if (!fp) @@ -95,6 +86,6 @@ void Discord_RegisterSteamGame( const char* steamId) { char command[256]; - sprintf(command, "xdg-open steam://rungameid/%s", steamId); + snprintf(command, sizeof(command), "xdg-open steam://rungameid/%s", steamId); Discord_Register(applicationId, command); } diff --git a/deps/discord-rpc/src/discord_register_osx.m b/deps/discord-rpc/src/discord_register_osx.m index 3649c3bc78..4975565296 100644 --- a/deps/discord-rpc/src/discord_register_osx.m +++ b/deps/discord-rpc/src/discord_register_osx.m @@ -7,26 +7,26 @@ static void RegisterCommand(const char* applicationId, const char* command) { - // There does not appear to be a way to register arbitrary commands on OSX, so instead we'll save the command - // to a file in the Discord config path, and when it is needed, Discord can try to load the file there, open - // the command therein (will pass to js's window.open, so requires a url-like thing) + /* There does not appear to be a way to register arbitrary commands on OSX, so instead we'll save the command + * to a file in the Discord config path, and when it is needed, Discord can try to load the file there, open + * the command therein (will pass to js's window.open, so requires a url-like thing) + */ - // Note: will not work for sandboxed apps - NSString *home = NSHomeDirectory(); - if (!home) { - return; - } + /* Note: will not work for sandboxed apps */ + NSString *home = NSHomeDirectory(); + if (!home) + return; - NSString *path = [[[[[[home stringByAppendingPathComponent:@"Library"] - stringByAppendingPathComponent:@"Application Support"] - stringByAppendingPathComponent:@"discord"] - stringByAppendingPathComponent:@"games"] - stringByAppendingPathComponent:[NSString stringWithUTF8String:applicationId]] - stringByAppendingPathExtension:@"json"]; - [[NSFileManager defaultManager] createDirectoryAtPath:[path stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil]; + NSString *path = [[[[[[home stringByAppendingPathComponent:@"Library"] + stringByAppendingPathComponent:@"Application Support"] + stringByAppendingPathComponent:@"discord"] + stringByAppendingPathComponent:@"games"] + stringByAppendingPathComponent:[NSString stringWithUTF8String:applicationId]] + stringByAppendingPathExtension:@"json"]; + [[NSFileManager defaultManager] createDirectoryAtPath:[path stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil]; - NSString *jsonBuffer = [NSString stringWithFormat:@"{\"command\": \"%s\"}", command]; - [jsonBuffer writeToFile:path atomically:NO encoding:NSUTF8StringEncoding error:nil]; + NSString *jsonBuffer = [NSString stringWithFormat:@"{\"command\": \"%s\"}", command]; + [jsonBuffer writeToFile:path atomically:NO encoding:NSUTF8StringEncoding error:nil]; } static void RegisterURL(const char* applicationId) @@ -34,38 +34,42 @@ static void RegisterURL(const char* applicationId) char url[256]; snprintf(url, sizeof(url), "discord-%s", applicationId); CFStringRef cfURL = CFStringCreateWithCString(NULL, url, kCFStringEncodingUTF8); - NSString* myBundleId = [[NSBundle mainBundle] bundleIdentifier]; - if (!myBundleId) { + + if (!myBundleId) + { fprintf(stderr, "No bundle id found\n"); return; } NSURL* myURL = [[NSBundle mainBundle] bundleURL]; - if (!myURL) { + if (!myURL) + { fprintf(stderr, "No bundle url found\n"); return; } OSStatus status = LSSetDefaultHandlerForURLScheme(cfURL, (__bridge CFStringRef)myBundleId); - if (status != noErr) { + if (status != noErr) + { fprintf(stderr, "Error in LSSetDefaultHandlerForURLScheme: %d\n", (int)status); return; } status = LSRegisterURL((__bridge CFURLRef)myURL, true); - if (status != noErr) { + if (status != noErr) + { fprintf(stderr, "Error in LSRegisterURL: %d\n", (int)status); } } void Discord_Register(const char* applicationId, const char* command) { - if (command) { + if (command) RegisterCommand(applicationId, command); - } - else { - // raii lite + else + { + /* RAII Lite */ @autoreleasepool { RegisterURL(applicationId); } @@ -75,6 +79,6 @@ void Discord_Register(const char* applicationId, const char* command) void Discord_RegisterSteamGame(const char* applicationId, const char* steamId) { char command[256]; - snprintf(command, 256, "steam://rungameid/%s", steamId); + snprintf(command, sizeof(command), "steam://rungameid/%s", steamId); Discord_Register(applicationId, command); } diff --git a/deps/discord-rpc/src/discord_rpc.cpp b/deps/discord-rpc/src/discord_rpc.cpp index 957b4e6897..f430746e83 100644 --- a/deps/discord-rpc/src/discord_rpc.cpp +++ b/deps/discord-rpc/src/discord_rpc.cpp @@ -34,17 +34,20 @@ struct QueuedMessage struct User { - // snowflake (64bit int), turned into a ascii decimal string, at most 20 chars +1 null - // terminator = 21 + /* snowflake (64bit int), turned into a ASCII decimal string, + * at most 20 chars +1 null + * terminator = 21 */ char userId[32]; - // 32 unicode glyphs is max name size => 4 bytes per glyph in the worst case, +1 for null - // terminator = 129 + /* 32 unicode glyphs is max name size => 4 bytes per glyph + * in the worst case, +1 for null + * terminator = 129 */ char username[344]; - // 4 decimal digits + 1 null terminator = 5 + /* 4 decimal digits + 1 null terminator = 5 */ char discriminator[8]; - // optional 'a_' + md5 hex digest (32 bytes) + null terminator = 35 + /* optional 'a_' + md5 hex digest (32 bytes) + null terminator = 35 */ char avatar[128]; - // Rounded way up because I'm paranoid about games breaking from future changes in these sizes + /* Rounded way up because I'm paranoid about games breaking + * from future changes in these sizes */ }; static RpcConnection* Connection{nullptr}; @@ -68,8 +71,9 @@ static MsgQueue SendQueue; static MsgQueue JoinAskQueue; static User connectedUser; -// We want to auto connect, and retry on failure, but not as fast as possible. This does expoential -// backoff from 0.5 seconds to 1 minute +/* We want to auto connect, and retry on failure, + * but not as fast as possible. This does exponential + * backoff from 0.5 seconds to 1 minute */ static Backoff ReconnectTimeMs(500, 60 * 1000); static auto NextConnect = std::chrono::system_clock::now(); static int Pid{0}; @@ -118,7 +122,8 @@ public: void Stop() {} void Notify() {} }; -#endif // DISCORD_DISABLE_IO_THREAD +#endif /* DISCORD_DISABLE_IO_THREAD */ + static IoThreadHolder* IoThread{nullptr}; static void UpdateReconnectTime() @@ -146,7 +151,7 @@ static void Discord_UpdateConnection(void) } else { - // reads + /* reads */ for (;;) { @@ -160,7 +165,8 @@ static void Discord_UpdateConnection(void) if (nonce) { - // in responses only -- should use to match up response when needed. + /* in responses only -- + * should use to match up response when needed. */ if (evtName && strcmp(evtName, "ERROR") == 0) { @@ -172,8 +178,8 @@ static void Discord_UpdateConnection(void) } else { - // should have evt == name of event, optional data - if (evtName == nullptr) + /* should have evt == name of event, optional data */ + if (!evtName) continue; auto data = GetObjMember(&message, "data"); @@ -198,11 +204,12 @@ static void Discord_UpdateConnection(void) } else if (strcmp(evtName, "ACTIVITY_JOIN_REQUEST") == 0) { - auto user = GetObjMember(data, "user"); - auto userId = GetStrMember(user, "id"); + auto user = GetObjMember(data, "user"); + auto userId = GetStrMember(user, "id"); auto username = GetStrMember(user, "username"); - auto avatar = GetStrMember(user, "avatar"); - auto joinReq = JoinAskQueue.GetNextAddMessage(); + auto avatar = GetStrMember(user, "avatar"); + auto joinReq = JoinAskQueue.GetNextAddMessage(); + if (userId && username && joinReq) { StringCopy(joinReq->userId, userId); @@ -220,7 +227,7 @@ static void Discord_UpdateConnection(void) } } - // writes + /* writes */ if (QueuedPresence.length) { QueuedMessage local; @@ -229,8 +236,9 @@ static void Discord_UpdateConnection(void) local.Copy(QueuedPresence); QueuedPresence.length = 0; } - if (!Connection->Write(local.buffer, local.length)) { - // if we fail to send, requeue + if (!Connection->Write(local.buffer, local.length)) + { + /* if we fail to send, requeue */ std::lock_guard guard(PresenceMutex); QueuedPresence.Copy(local); } @@ -263,7 +271,8 @@ static bool RegisterForEvent(const char* evtName) static bool DeregisterForEvent(const char* evtName) { auto qmessage = SendQueue.GetNextAddMessage(); - if (qmessage) { + if (qmessage) + { qmessage->length = JsonWriteUnsubscribeCommand(qmessage->buffer, sizeof(qmessage->buffer), Nonce++, evtName); SendQueue.CommitAdd(); @@ -274,13 +283,14 @@ static bool DeregisterForEvent(const char* evtName) return false; } -extern "C" DISCORD_EXPORT void Discord_Initialize(const char* applicationId, - DiscordEventHandlers* handlers, - int autoRegister, - const char* optionalSteamId) +extern "C" DISCORD_EXPORT void Discord_Initialize( + const char* applicationId, + DiscordEventHandlers* handlers, + int autoRegister, + const char* optionalSteamId) { IoThread = new (std::nothrow) IoThreadHolder(); - if (IoThread == nullptr) + if (!IoThread) return; if (autoRegister) @@ -353,7 +363,7 @@ extern "C" DISCORD_EXPORT void Discord_Shutdown(void) Connection->onConnect = nullptr; Connection->onDisconnect = nullptr; Handlers = {}; - if (IoThread != nullptr) + if (IoThread) { IoThread->Stop(); delete IoThread; @@ -382,7 +392,7 @@ extern "C" DISCORD_EXPORT void Discord_ClearPresence(void) extern "C" DISCORD_EXPORT void Discord_Respond(const char* userId, /* DISCORD_REPLY_ */ int reply) { - // if we are not connected, let's not batch up stale messages for later + /* if we are not connected, let's not batch up stale messages for later */ if (!Connection || !Connection->IsOpen()) return; auto qmessage = SendQueue.GetNextAddMessage(); @@ -398,9 +408,10 @@ extern "C" DISCORD_EXPORT void Discord_Respond(const char* userId, /* DISCORD_RE extern "C" DISCORD_EXPORT void Discord_RunCallbacks(void) { - // Note on some weirdness: internally we might connect, get other signals, disconnect any number - // of times inbetween calls here. Externally, we want the sequence to seem sane, so any other - // signals are book-ended by calls to ready and disconnect. + /* Note on some weirdness: internally we might connect, get other signals, disconnect any number + * of times inbetween calls here. Externally, we want the sequence to seem sane, so any other + * signals are book-ended by calls to ready and disconnect. + */ if (!Connection) return; @@ -410,7 +421,7 @@ extern "C" DISCORD_EXPORT void Discord_RunCallbacks(void) if (isConnected) { - // if we are connected, disconnect cb first + /* if we are connected, disconnect cb first */ std::lock_guard guard(HandlerMutex); if (wasDisconnected && Handlers.disconnected) Handlers.disconnected(LastDisconnectErrorCode, LastDisconnectErrorMessage); @@ -450,11 +461,12 @@ extern "C" DISCORD_EXPORT void Discord_RunCallbacks(void) Handlers.spectateGame(SpectateGameSecret); } - // Right now this batches up any requests and sends them all in a burst; I could imagine a world - // where the implementer would rather sequentially accept/reject each one before the next invite - // is sent. I left it this way because I could also imagine wanting to process these all and - // maybe show them in one common dialog and/or start fetching the avatars in parallel, and if - // not it should be trivial for the implementer to make a queue themselves. + /* Right now this batches up any requests and sends them all in a burst; I could imagine a world + * where the implementer would rather sequentially accept/reject each one before the next invite + * is sent. I left it this way because I could also imagine wanting to process these all and + * maybe show them in one common dialog and/or start fetching the avatars in parallel, and if + * not it should be trivial for the implementer to make a queue themselves. + */ while (JoinAskQueue.HavePendingSends()) { auto req = JoinAskQueue.GetNextSendMessage(); @@ -471,7 +483,7 @@ extern "C" DISCORD_EXPORT void Discord_RunCallbacks(void) if (!isConnected) { - // if we are not connected, disconnect message last + /* if we are not connected, disconnect message last */ std::lock_guard guard(HandlerMutex); if (wasDisconnected && Handlers.disconnected) Handlers.disconnected(LastDisconnectErrorCode, LastDisconnectErrorMessage); diff --git a/deps/discord-rpc/src/rpc_connection.cpp b/deps/discord-rpc/src/rpc_connection.cpp index 9e11b7ee4b..f93cb66278 100644 --- a/deps/discord-rpc/src/rpc_connection.cpp +++ b/deps/discord-rpc/src/rpc_connection.cpp @@ -54,7 +54,8 @@ void RpcConnection::Open() sendFrame.length = (uint32_t)JsonWriteHandshakeObj( sendFrame.message, sizeof(sendFrame.message), RpcVersion, appId); - if (connection->Write(&sendFrame, sizeof(MessageFrameHeader) + sendFrame.length)) + if (connection->Write(&sendFrame, + sizeof(MessageFrameHeader) + sendFrame.length)) state = State::SentHandshake; else Close(); @@ -84,12 +85,16 @@ bool RpcConnection::Write(const void* data, size_t length) bool RpcConnection::Read(JsonDocument& message) { + MessageFrame readFrame; + if (state != State::Connected && state != State::SentHandshake) return false; - MessageFrame readFrame; + for (;;) { - bool didRead = connection->Read(&readFrame, sizeof(MessageFrameHeader)); + bool didRead = connection->Read( + &readFrame, sizeof(MessageFrameHeader)); + if (!didRead) { if (!connection->isOpen) @@ -117,13 +122,11 @@ bool RpcConnection::Read(JsonDocument& message) switch (readFrame.opcode) { case Opcode::Close: - { - message.ParseInsitu(readFrame.message); - lastErrorCode = GetIntMember(&message, "code"); - StringCopy(lastErrorMessage, GetStrMember(&message, "message", "")); - Close(); - return false; - } + message.ParseInsitu(readFrame.message); + lastErrorCode = GetIntMember(&message, "code"); + StringCopy(lastErrorMessage, GetStrMember(&message, "message", "")); + Close(); + return false; case Opcode::Frame: message.ParseInsitu(readFrame.message); return true; @@ -136,7 +139,7 @@ bool RpcConnection::Read(JsonDocument& message) break; case Opcode::Handshake: default: - // something bad happened + /* something bad happened */ lastErrorCode = (int)ErrorCode::ReadCorrupt; StringCopy(lastErrorMessage, "Bad ipc frame"); Close(); diff --git a/deps/discord-rpc/src/rpc_connection.h b/deps/discord-rpc/src/rpc_connection.h index bbdd05c792..a4ccb82638 100644 --- a/deps/discord-rpc/src/rpc_connection.h +++ b/deps/discord-rpc/src/rpc_connection.h @@ -3,57 +3,63 @@ #include "connection.h" #include "serialization.h" -// I took this from the buffer size libuv uses for named pipes; I suspect ours would usually be much -// smaller. +/* I took this from the buffer size libuv uses for named pipes; + * I suspect ours would usually be much smaller. */ constexpr size_t MaxRpcFrameSize = 64 * 1024; -struct RpcConnection { - enum class ErrorCode : int { - Success = 0, - PipeClosed = 1, - ReadCorrupt = 2, - }; +struct RpcConnection +{ + enum class ErrorCode : int + { + Success = 0, + PipeClosed = 1, + ReadCorrupt = 2, + }; - enum class Opcode : uint32_t { - Handshake = 0, - Frame = 1, - Close = 2, - Ping = 3, - Pong = 4, - }; + enum class Opcode : uint32_t + { + Handshake = 0, + Frame = 1, + Close = 2, + Ping = 3, + Pong = 4, + }; - struct MessageFrameHeader { - Opcode opcode; - uint32_t length; - }; + struct MessageFrameHeader + { + Opcode opcode; + uint32_t length; + }; - struct MessageFrame : public MessageFrameHeader { - char message[MaxRpcFrameSize - sizeof(MessageFrameHeader)]; - }; + struct MessageFrame : public MessageFrameHeader + { + char message[MaxRpcFrameSize - sizeof(MessageFrameHeader)]; + }; - enum class State : uint32_t { - Disconnected, - SentHandshake, - AwaitingResponse, - Connected, - }; + enum class State : uint32_t + { + Disconnected, + SentHandshake, + AwaitingResponse, + Connected, + }; - BaseConnection* connection{nullptr}; - State state{State::Disconnected}; - void (*onConnect)(JsonDocument& message){nullptr}; - void (*onDisconnect)(int errorCode, const char* message){nullptr}; - char appId[64]{}; - int lastErrorCode{0}; - char lastErrorMessage[256]{}; - RpcConnection::MessageFrame sendFrame; + BaseConnection* connection{nullptr}; + State state{State::Disconnected}; + void (*onConnect)(JsonDocument& message){nullptr}; + void (*onDisconnect)(int errorCode, const char* message){nullptr}; + char appId[64]{}; + int lastErrorCode{0}; + char lastErrorMessage[256]{}; + RpcConnection::MessageFrame sendFrame; - static RpcConnection* Create(const char* applicationId); - static void Destroy(RpcConnection*&); + static RpcConnection* Create(const char* applicationId); + static void Destroy(RpcConnection*&); - inline bool IsOpen() const { return state == State::Connected; } + inline bool IsOpen() const { return state == State::Connected; } - void Open(); - void Close(); - bool Write(const void* data, size_t length); - bool Read(JsonDocument& message); + void Open(); + void Close(); + bool Write(const void* data, size_t length); + bool Read(JsonDocument& message); }; diff --git a/deps/discord-rpc/src/serialization.cpp b/deps/discord-rpc/src/serialization.cpp index 6cc1e9013d..bcf7aa2624 100644 --- a/deps/discord-rpc/src/serialization.cpp +++ b/deps/discord-rpc/src/serialization.cpp @@ -5,25 +5,30 @@ template void NumberToString(char* dest, T number) { - if (!number) { + char temp[32]; + int place = 0; + + if (!number) + { *dest++ = '0'; *dest++ = 0; return; } - if (number < 0) { + + if (number < 0) + { *dest++ = '-'; number = -number; } - char temp[32]; - int place = 0; - while (number) { + + while (number) + { auto digit = number % 10; number = number / 10; temp[place++] = '0' + (char)digit; } - for (--place; place >= 0; --place) { + for (--place; place >= 0; --place) *dest++ = temp[place]; - } *dest = 0; } @@ -66,7 +71,8 @@ struct WriteArray { template void WriteOptionalString(JsonWriter& w, T& k, const char* value) { - if (value && value[0]) { + if (value && value[0]) + { w.Key(k, sizeof(T) - 1); w.String(value); } @@ -74,8 +80,8 @@ void WriteOptionalString(JsonWriter& w, T& k, const char* value) static void JsonWriteNonce(JsonWriter& writer, int nonce) { - WriteKey(writer, "nonce"); char nonceBuffer[32]; + WriteKey(writer, "nonce"); NumberToString(nonceBuffer, nonce); writer.String(nonceBuffer); } @@ -102,24 +108,28 @@ size_t JsonWriteRichPresenceObj(char* dest, WriteKey(writer, "pid"); writer.Int(pid); - if (presence != nullptr) { + if (presence) + { WriteObject activity(writer, "activity"); WriteOptionalString(writer, "state", presence->state); WriteOptionalString(writer, "details", presence->details); - if (presence->startTimestamp || presence->endTimestamp) { - WriteObject timestamps(writer, "timestamps"); + if (presence->startTimestamp || presence->endTimestamp) + { + WriteObject timestamps(writer, "timestamps"); - if (presence->startTimestamp) { - WriteKey(writer, "start"); - writer.Int64(presence->startTimestamp); - } + if (presence->startTimestamp) + { + WriteKey(writer, "start"); + writer.Int64(presence->startTimestamp); + } - if (presence->endTimestamp) { - WriteKey(writer, "end"); - writer.Int64(presence->endTimestamp); - } + if (presence->endTimestamp) + { + WriteKey(writer, "end"); + writer.Int64(presence->endTimestamp); + } } if ((presence->largeImageKey && presence->largeImageKey[0]) || @@ -133,20 +143,25 @@ size_t JsonWriteRichPresenceObj(char* dest, WriteOptionalString(writer, "small_text", presence->smallImageText); } - if ((presence->partyId && presence->partyId[0]) || presence->partySize || - presence->partyMax) { - WriteObject party(writer, "party"); - WriteOptionalString(writer, "id", presence->partyId); - if (presence->partySize && presence->partyMax) { - WriteArray size(writer, "size"); - writer.Int(presence->partySize); - writer.Int(presence->partyMax); - } + if (( + presence->partyId && presence->partyId[0]) || + presence->partySize || + presence->partyMax) + { + WriteObject party(writer, "party"); + WriteOptionalString(writer, "id", presence->partyId); + if (presence->partySize && presence->partyMax) + { + WriteArray size(writer, "size"); + writer.Int(presence->partySize); + writer.Int(presence->partyMax); + } } if ((presence->matchSecret && presence->matchSecret[0]) || (presence->joinSecret && presence->joinSecret[0]) || - (presence->spectateSecret && presence->spectateSecret[0])) { + (presence->spectateSecret && presence->spectateSecret[0])) + { WriteObject secrets(writer, "secrets"); WriteOptionalString(writer, "match", presence->matchSecret); WriteOptionalString(writer, "join", presence->joinSecret); @@ -223,12 +238,10 @@ size_t JsonWriteJoinReply(char* dest, size_t maxLen, const char* userId, int rep WriteObject obj(writer); WriteKey(writer, "cmd"); - if (reply == DISCORD_REPLY_YES) { + if (reply == DISCORD_REPLY_YES) writer.String("SEND_ACTIVITY_JOIN_INVITE"); - } - else { + else writer.String("CLOSE_ACTIVITY_JOIN_REQUEST"); - } WriteKey(writer, "args"); { diff --git a/deps/discord-rpc/src/serialization.h b/deps/discord-rpc/src/serialization.h index da03adbcf1..d1aaa8109e 100644 --- a/deps/discord-rpc/src/serialization.h +++ b/deps/discord-rpc/src/serialization.h @@ -5,12 +5,12 @@ #ifdef _MSC_VER #pragma warning(push) -#pragma warning(disable : 4061) // enum is not explicitly handled by a case label -#pragma warning(disable : 4365) // signed/unsigned mismatch -#pragma warning(disable : 4464) // relative include path contains -#pragma warning(disable : 4668) // is not defined as a preprocessor macro -#pragma warning(disable : 6313) // Incorrect operator -#endif // _MSC_VER +#pragma warning(disable : 4061) /* enum is not explicitly handled by a case label */ +#pragma warning(disable : 4365) /* signed/unsigned mismatch */ +#pragma warning(disable : 4464) /* relative include path contains */ +#pragma warning(disable : 4668) /* is not defined as a preprocessor macro */ +#pragma warning(disable : 6313) /* Incorrect operator */ +#endif /* _MSC_VER */ #include "rapidjson/document.h" #include "rapidjson/stringbuffer.h" @@ -18,27 +18,26 @@ #ifdef _MSC_VER #pragma warning(pop) -#endif // _MSC_VER +#endif /* _MSC_VER */ -// if only there was a standard library function for this +/* if only there was a standard library function for this */ template inline size_t StringCopy(char (&dest)[Len], const char* src) { - if (!src || !Len) { - return 0; - } size_t copied; char* out = dest; - for (copied = 1; *src && copied < Len; ++copied) { + if (!src || !Len) + return 0; + for (copied = 1; *src && copied < Len; ++copied) *out++ = *src++; - } *out = 0; return copied - 1; } -size_t JsonWriteHandshakeObj(char* dest, size_t maxLen, int version, const char* applicationId); +size_t JsonWriteHandshakeObj(char* dest, size_t maxLen, + int version, const char* applicationId); -// Commands +/* Commands */ struct DiscordRichPresence; size_t JsonWriteRichPresenceObj(char* dest, size_t maxLen, @@ -51,50 +50,42 @@ size_t JsonWriteUnsubscribeCommand(char* dest, size_t maxLen, int nonce, const c size_t JsonWriteJoinReply(char* dest, size_t maxLen, const char* userId, int reply, int nonce); -// I want to use as few allocations as I can get away with, and to do that with RapidJson, you need -// to supply some of your own allocators for stuff rather than use the defaults +/* I want to use as few allocations as I can get away with, and to do that with RapidJson, you need + * to supply some of your own allocators for stuff rather than use the defaults + */ -class LinearAllocator { -public: - char* buffer_; - char* end_; - LinearAllocator() - { - assert(0); // needed for some default case in rapidjson, should not use - } - LinearAllocator(char* buffer, size_t size) - : buffer_(buffer) - , end_(buffer + size) - { - } - static const bool kNeedFree = false; - void* Malloc(size_t size) - { - char* res = buffer_; - buffer_ += size; - if (buffer_ > end_) { +class LinearAllocator +{ + public: + char* buffer_; + char* end_; + LinearAllocator() { } + LinearAllocator(char* buffer, size_t size) + : buffer_(buffer) + , end_(buffer + size) { } + static const bool kNeedFree = false; + void* Malloc(size_t size) + { + char* res = buffer_; + buffer_ += size; + if (buffer_ > end_) + { buffer_ = res; return nullptr; - } - return res; - } - void* Realloc(void* originalPtr, size_t originalSize, size_t newSize) - { - if (newSize == 0) { + } + return res; + } + void* Realloc(void* originalPtr, size_t originalSize, size_t newSize) + { + if (newSize == 0) return nullptr; - } - // allocate how much you need in the first place - assert(!originalPtr && !originalSize); - // unused parameter warning - (void)(originalPtr); - (void)(originalSize); - return Malloc(newSize); - } - static void Free(void* ptr) - { - /* shrug */ - (void)ptr; - } + return Malloc(newSize); + } + static void Free(void* ptr) + { + /* shrug */ + (void)ptr; + } }; template @@ -102,13 +93,11 @@ class FixedLinearAllocator : public LinearAllocator { public: char fixedBuffer_[Size]; FixedLinearAllocator() - : LinearAllocator(fixedBuffer_, Size) - { - } + : LinearAllocator(fixedBuffer_, Size) { } static const bool kNeedFree = false; }; -// wonder why this isn't a thing already, maybe I missed it +/* wonder why this isn't a thing already, maybe I missed it */ class DirectStringBuffer { public: using Ch = char; @@ -119,15 +108,12 @@ public: DirectStringBuffer(char* buffer, size_t maxLen) : buffer_(buffer) , end_(buffer + maxLen) - , current_(buffer) - { - } + , current_(buffer) { } void Put(char c) { - if (current_ < end_) { - *current_++ = c; - } + if (current_ < end_) + *current_++ = c; } void Flush() {} size_t GetSize() const { return (size_t)(current_ - buffer_); } @@ -136,80 +122,84 @@ public: using MallocAllocator = rapidjson::CrtAllocator; using PoolAllocator = rapidjson::MemoryPoolAllocator; using UTF8 = rapidjson::UTF8; -// Writer appears to need about 16 bytes per nested object level (with 64bit size_t) +/* Writer appears to need about 16 bytes per nested object level (with 64bit size_t) */ using StackAllocator = FixedLinearAllocator<2048>; constexpr size_t WriterNestingLevels = 2048 / (2 * sizeof(size_t)); using JsonWriterBase = rapidjson::Writer; -class JsonWriter : public JsonWriterBase { -public: - DirectStringBuffer stringBuffer_; - StackAllocator stackAlloc_; +class JsonWriter : public JsonWriterBase +{ + public: + DirectStringBuffer stringBuffer_; + StackAllocator stackAlloc_; - JsonWriter(char* dest, size_t maxLen) - : JsonWriterBase(stringBuffer_, &stackAlloc_, WriterNestingLevels) - , stringBuffer_(dest, maxLen) - , stackAlloc_() - { - } + JsonWriter(char* dest, size_t maxLen) + : JsonWriterBase(stringBuffer_, &stackAlloc_, WriterNestingLevels) + , stringBuffer_(dest, maxLen) + , stackAlloc_() + { + } - size_t Size() const { return stringBuffer_.GetSize(); } + size_t Size() const { return stringBuffer_.GetSize(); } }; using JsonDocumentBase = rapidjson::GenericDocument; -class JsonDocument : public JsonDocumentBase { -public: - static const int kDefaultChunkCapacity = 32 * 1024; - // json parser will use this buffer first, then allocate more if needed; I seriously doubt we - // send any messages that would use all of this, though. - char parseBuffer_[32 * 1024]; - MallocAllocator mallocAllocator_; - PoolAllocator poolAllocator_; - StackAllocator stackAllocator_; - JsonDocument() - : JsonDocumentBase(rapidjson::kObjectType, - &poolAllocator_, - sizeof(stackAllocator_.fixedBuffer_), - &stackAllocator_) - , poolAllocator_(parseBuffer_, sizeof(parseBuffer_), kDefaultChunkCapacity, &mallocAllocator_) - , stackAllocator_() - { - } +class JsonDocument : public JsonDocumentBase +{ + public: + static const int kDefaultChunkCapacity = 32 * 1024; + /* json parser will use this buffer first, then allocate more if needed; I seriously doubt we + * send any messages that would use all of this, though. */ + char parseBuffer_[32 * 1024]; + MallocAllocator mallocAllocator_; + PoolAllocator poolAllocator_; + StackAllocator stackAllocator_; + JsonDocument() + : JsonDocumentBase(rapidjson::kObjectType, + &poolAllocator_, + sizeof(stackAllocator_.fixedBuffer_), + &stackAllocator_) + , poolAllocator_(parseBuffer_, sizeof(parseBuffer_), kDefaultChunkCapacity, &mallocAllocator_) + , stackAllocator_() + { + } }; using JsonValue = rapidjson::GenericValue; inline JsonValue* GetObjMember(JsonValue* obj, const char* name) { - if (obj) { - auto member = obj->FindMember(name); - if (member != obj->MemberEnd() && member->value.IsObject()) { - return &member->value; - } - } - return nullptr; + if (obj) + { + auto member = obj->FindMember(name); + if (member != obj->MemberEnd() && member->value.IsObject()) + return &member->value; + } + return nullptr; } -inline int GetIntMember(JsonValue* obj, const char* name, int notFoundDefault = 0) +inline int GetIntMember(JsonValue* obj, + const char* name, + int notFoundDefault = 0) { - if (obj) { - auto member = obj->FindMember(name); - if (member != obj->MemberEnd() && member->value.IsInt()) { - return member->value.GetInt(); - } - } - return notFoundDefault; + if (obj) + { + auto member = obj->FindMember(name); + if (member != obj->MemberEnd() && member->value.IsInt()) + return member->value.GetInt(); + } + return notFoundDefault; } inline const char* GetStrMember(JsonValue* obj, - const char* name, - const char* notFoundDefault = nullptr) + const char* name, + const char* notFoundDefault = nullptr) { - if (obj) { - auto member = obj->FindMember(name); - if (member != obj->MemberEnd() && member->value.IsString()) { - return member->value.GetString(); - } - } - return notFoundDefault; + if (obj) + { + auto member = obj->FindMember(name); + if (member != obj->MemberEnd() && member->value.IsString()) + return member->value.GetString(); + } + return notFoundDefault; } From ff9701685f7f119e4cb28744017219e56fd03a3d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 22 Jan 2020 19:07:10 +0100 Subject: [PATCH 134/148] Remove some auto variables --- gfx/drivers_shader/shader_gl_core.cpp | 16 ++++++++-------- gfx/drivers_shader/shader_vulkan.cpp | 22 ++++++++++++---------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/gfx/drivers_shader/shader_gl_core.cpp b/gfx/drivers_shader/shader_gl_core.cpp index 6cd7c25062..67c010d88f 100644 --- a/gfx/drivers_shader/shader_gl_core.cpp +++ b/gfx/drivers_shader/shader_gl_core.cpp @@ -2270,14 +2270,14 @@ gl_core_filter_chain_t *gl_core_filter_chain_create_from_preset( } else { - auto ¶m = shader->parameters[shader->num_parameters]; - strlcpy(param.id, meta_param.id.c_str(), sizeof(param.id)); - strlcpy(param.desc, meta_param.desc.c_str(), sizeof(param.desc)); - param.current = meta_param.initial; - param.initial = meta_param.initial; - param.minimum = meta_param.minimum; - param.maximum = meta_param.maximum; - param.step = meta_param.step; + video_shader_parameter *param = &shader->parameters[shader->num_parameters]; + strlcpy(param->id, meta_param.id.c_str(), sizeof(param->id)); + strlcpy(param->desc, meta_param.desc.c_str(), sizeof(param->desc)); + param->current = meta_param.initial; + param->initial = meta_param.initial; + param->minimum = meta_param.minimum; + param->maximum = meta_param.maximum; + param->step = meta_param.step; chain->add_parameter(i, shader->num_parameters, meta_param.id); shader->num_parameters++; } diff --git a/gfx/drivers_shader/shader_vulkan.cpp b/gfx/drivers_shader/shader_vulkan.cpp index 3f5cd45351..4da41ae484 100644 --- a/gfx/drivers_shader/shader_vulkan.cpp +++ b/gfx/drivers_shader/shader_vulkan.cpp @@ -901,8 +901,9 @@ bool vulkan_filter_chain::init_feedback() bool use_feedback = false; for (auto &pass : passes) { - auto &r = pass->get_reflection(); - auto &feedbacks = r.semantic_textures[SLANG_TEXTURE_SEMANTIC_PASS_FEEDBACK]; + const slang_reflection &r = pass->get_reflection(); + auto &feedbacks = r.semantic_textures[ + SLANG_TEXTURE_SEMANTIC_PASS_FEEDBACK]; if (i < feedbacks.size() && feedbacks[i].texture) { @@ -2038,6 +2039,7 @@ void Pass::build_semantic_texture_array_vec4(uint8_t *data, slang_texture_semant unsigned index, unsigned width, unsigned height) { auto &refl = reflection.semantic_textures[semantic]; + if (index >= refl.size()) return; @@ -2699,14 +2701,14 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_from_preset( } else { - auto ¶m = shader->parameters[shader->num_parameters]; - strlcpy(param.id, meta_param.id.c_str(), sizeof(param.id)); - strlcpy(param.desc, meta_param.desc.c_str(), sizeof(param.desc)); - param.current = meta_param.initial; - param.initial = meta_param.initial; - param.minimum = meta_param.minimum; - param.maximum = meta_param.maximum; - param.step = meta_param.step; + video_shader_parameter *param = &shader->parameters[shader->num_parameters]; + strlcpy(param->id, meta_param.id.c_str(), sizeof(param->id)); + strlcpy(param->desc, meta_param.desc.c_str(), sizeof(param->desc)); + param->current = meta_param.initial; + param->initial = meta_param.initial; + param->minimum = meta_param.minimum; + param->maximum = meta_param.maximum; + param->step = meta_param.step; chain->add_parameter(i, shader->num_parameters, meta_param.id); shader->num_parameters++; } From a4564b893982a87df8be2604c8ad12396ab229d1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 22 Jan 2020 19:36:49 +0100 Subject: [PATCH 135/148] Move C oriented code from slang_reflection.cpp to glslang_util.c --- gfx/drivers_shader/glslang_util.c | 50 ++++++++++++++++++++++ gfx/drivers_shader/glslang_util.h | 8 ++++ gfx/drivers_shader/slang_reflection.cpp | 55 ++----------------------- 3 files changed, 61 insertions(+), 52 deletions(-) diff --git a/gfx/drivers_shader/glslang_util.c b/gfx/drivers_shader/glslang_util.c index 3baf4af719..5d67146a9a 100644 --- a/gfx/drivers_shader/glslang_util.c +++ b/gfx/drivers_shader/glslang_util.c @@ -48,6 +48,56 @@ static void get_include_file( strlcpy(include_file, start, len); } +bool slang_texture_semantic_is_array(enum slang_texture_semantic sem) +{ + switch (sem) + { + case SLANG_TEXTURE_SEMANTIC_ORIGINAL_HISTORY: + case SLANG_TEXTURE_SEMANTIC_PASS_OUTPUT: + case SLANG_TEXTURE_SEMANTIC_PASS_FEEDBACK: + case SLANG_TEXTURE_SEMANTIC_USER: + return true; + + default: + break; + } + + return false; +} + +enum slang_texture_semantic slang_name_to_texture_semantic_array( + const char *name, const char **names, + unsigned *index) +{ + unsigned i = 0; + while (*names) + { + const char *n = *names; + enum slang_texture_semantic semantic = (enum slang_texture_semantic)(i); + + if (slang_texture_semantic_is_array(semantic)) + { + size_t baselen = strlen(n); + int cmp = strncmp(n, name, baselen); + + if (cmp == 0) + { + *index = (unsigned)strtoul(name + baselen, NULL, 0); + return semantic; + } + } + else if (string_is_equal(name, n)) + { + *index = 0; + return semantic; + } + + i++; + names++; + } + return SLANG_INVALID_TEXTURE_SEMANTIC; +} + bool glslang_read_shader_file(const char *path, struct string_list *output, bool root_file) { diff --git a/gfx/drivers_shader/glslang_util.h b/gfx/drivers_shader/glslang_util.h index d5ce6b5778..6116435087 100644 --- a/gfx/drivers_shader/glslang_util.h +++ b/gfx/drivers_shader/glslang_util.h @@ -21,6 +21,8 @@ #include +#include "slang_reflection.h" + typedef enum glslang_format { SLANG_FORMAT_UNKNOWN = 0, @@ -75,6 +77,12 @@ enum glslang_format glslang_find_format(const char *fmt); bool glslang_read_shader_file(const char *path, struct string_list *output, bool root_file); +bool slang_texture_semantic_is_array(enum slang_texture_semantic sem); + +enum slang_texture_semantic slang_name_to_texture_semantic_array( + const char *name, const char **names, + unsigned *index); + RETRO_END_DECLS #endif diff --git a/gfx/drivers_shader/slang_reflection.cpp b/gfx/drivers_shader/slang_reflection.cpp index 7b17c39e7f..5f7291c034 100644 --- a/gfx/drivers_shader/slang_reflection.cpp +++ b/gfx/drivers_shader/slang_reflection.cpp @@ -20,6 +20,7 @@ #include #include #include +#include "glslang_util.h" #include "../../verbosity.h" using namespace std; @@ -53,23 +54,6 @@ static const char *semantic_uniform_names[] = { "FrameDirection", }; -static bool slang_texture_semantic_is_array(slang_texture_semantic sem) -{ - switch (sem) - { - case SLANG_TEXTURE_SEMANTIC_ORIGINAL_HISTORY: - case SLANG_TEXTURE_SEMANTIC_PASS_OUTPUT: - case SLANG_TEXTURE_SEMANTIC_PASS_FEEDBACK: - case SLANG_TEXTURE_SEMANTIC_USER: - return true; - - default: - break; - } - - return false; -} - slang_reflection::slang_reflection() { unsigned i; @@ -81,39 +65,6 @@ slang_reflection::slang_reflection() ? 0 : 1); } -static slang_texture_semantic slang_name_to_texture_semantic_array( - const string &name, const char **names, - unsigned *index) -{ - unsigned i = 0; - while (*names) - { - const char *n = *names; - slang_texture_semantic semantic = static_cast(i); - - if (slang_texture_semantic_is_array(semantic)) - { - size_t baselen = strlen(n); - int cmp = strncmp(n, name.c_str(), baselen); - - if (cmp == 0) - { - *index = (unsigned)strtoul(name.c_str() + baselen, nullptr, 0); - return semantic; - } - } - else if (name == n) - { - *index = 0; - return semantic; - } - - i++; - names++; - } - return SLANG_INVALID_TEXTURE_SEMANTIC; -} - static slang_texture_semantic slang_name_to_texture_semantic( const unordered_map &semantic_map, const string &name, unsigned *index) @@ -126,7 +77,7 @@ static slang_texture_semantic slang_name_to_texture_semantic( } return slang_name_to_texture_semantic_array( - name, texture_semantic_names, index); + name.c_str(), texture_semantic_names, index); } static slang_texture_semantic slang_uniform_name_to_texture_semantic( @@ -140,7 +91,7 @@ static slang_texture_semantic slang_uniform_name_to_texture_semantic( return itr->second.semantic; } - return slang_name_to_texture_semantic_array(name, + return slang_name_to_texture_semantic_array(name.c_str(), texture_semantic_uniform_names, index); } From a96672c0fc53c190480e3d656993d7e2608e26dd Mon Sep 17 00:00:00 2001 From: Jamiras Date: Wed, 22 Jan 2020 17:42:55 -0700 Subject: [PATCH 136/148] improve accuracy of progress for smaller payloads; prevent divide by zero for very small payloads --- tasks/task_http.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tasks/task_http.c b/tasks/task_http.c index 78d2f81ccc..17f7335709 100644 --- a/tasks/task_http.c +++ b/tasks/task_http.c @@ -126,7 +126,14 @@ static int task_http_iterate_transfer(retro_task_t *task) if (!net_http_update(http->handle, &pos, &tot)) { - task_set_progress(task, (tot == 0) ? -1 : (signed)pos / (tot / 100)); + if (tot == 0) + task_set_progress(task, -1); + else if (pos < (((size_t)-1) / 100)) + /* prefer multiply then divide for more accurate results */ + task_set_progress(task, (signed)(pos * 100 / tot)); + else + /* but invert the logic if it would cause an overflow */ + task_set_progress(task, MAX((signed)pos / (tot / 100), 100)); return -1; } From 363e7294b6299379c60d97036631c6b83a7a06ed Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Thu, 23 Jan 2020 01:59:39 +0100 Subject: [PATCH 137/148] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 5c292cca10..aee1eb0f40 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,6 @@ # Future - BUGFIX: Fix mouse capture hotkey not working +- CHEEVOS/BUGFIX: Achievement triggers could cause Retroarch to Crash - CHEEVOS: Support for extended Sega CD memory - EMSCRIPTEN: Recreate input event listeners properly - LIBRETRO: Add disk control interface API extension From 9ddd8417c81ad3ca2cdc28a3412d3cb3ad3b163e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 23 Jan 2020 01:11:10 +0100 Subject: [PATCH 138/148] Replace some more auto variables --- gfx/drivers_shader/shader_vulkan.cpp | 14 +++++++------- gfx/drivers_shader/slang_reflection.cpp | 22 +++++++++++----------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/gfx/drivers_shader/shader_vulkan.cpp b/gfx/drivers_shader/shader_vulkan.cpp index 4da41ae484..4200f12fac 100644 --- a/gfx/drivers_shader/shader_vulkan.cpp +++ b/gfx/drivers_shader/shader_vulkan.cpp @@ -2423,8 +2423,8 @@ void Framebuffer::init(DeferredDisposer *disposer) * the world for framebuffer recreation. */ if (memory.memory != VK_NULL_HANDLE && disposer) { - auto d = device; - auto m = memory.memory; + VkDevice d = device; + VkDeviceMemory m = memory.memory; disposer->defer([=] { vkFreeMemory(d, m, nullptr); }); } @@ -2485,11 +2485,11 @@ void Framebuffer::set_size(DeferredDisposer &disposer, const Size2D &size, VkFor * * Fake lambda init captures for C++11. */ - auto d = device; - auto i = image; - auto v = view; - auto fbv = fb_view; - auto fb = framebuffer; + VkDevice d = device; + VkImage i = image; + VkImageView v = view; + VkImageView fbv = fb_view; + VkFramebuffer fb = framebuffer; disposer.defer([=] { if (fb != VK_NULL_HANDLE) diff --git a/gfx/drivers_shader/slang_reflection.cpp b/gfx/drivers_shader/slang_reflection.cpp index 5f7291c034..46f9663c81 100644 --- a/gfx/drivers_shader/slang_reflection.cpp +++ b/gfx/drivers_shader/slang_reflection.cpp @@ -134,9 +134,9 @@ static bool set_ubo_texture_offset( size_t offset, bool push_constant) { resize_minimum(reflection->semantic_textures[semantic], index + 1); - auto &sem = reflection->semantic_textures[semantic][index]; - auto &active = push_constant ? sem.push_constant : sem.uniform; - auto &active_offset = push_constant ? sem.push_constant_offset : sem.ubo_offset; + slang_texture_semantic_meta &sem = reflection->semantic_textures[semantic][index]; + bool &active = push_constant ? sem.push_constant : sem.uniform; + size_t &active_offset = push_constant ? sem.push_constant_offset : sem.ubo_offset; if (active) { @@ -164,9 +164,9 @@ static bool set_ubo_float_parameter_offset( bool push_constant) { resize_minimum(reflection->semantic_float_parameters, index + 1); - auto &sem = reflection->semantic_float_parameters[index]; - auto &active = push_constant ? sem.push_constant : sem.uniform; - auto &active_offset = push_constant ? sem.push_constant_offset : sem.ubo_offset; + slang_semantic_meta &sem = reflection->semantic_float_parameters[index]; + bool &active = push_constant ? sem.push_constant : sem.uniform; + size_t &active_offset = push_constant ? sem.push_constant_offset : sem.ubo_offset; if (active) { @@ -203,9 +203,9 @@ static bool set_ubo_offset( slang_semantic semantic, size_t offset, unsigned num_components, bool push_constant) { - auto &sem = reflection->semantics[semantic]; - auto &active = push_constant ? sem.push_constant : sem.uniform; - auto &active_offset = push_constant ? sem.push_constant_offset : sem.ubo_offset; + slang_semantic_meta &sem = reflection->semantics[semantic]; + bool &active = push_constant ? sem.push_constant : sem.uniform; + size_t &active_offset = push_constant ? sem.push_constant_offset : sem.ubo_offset; if (active) { @@ -288,9 +288,9 @@ static bool add_active_buffer_ranges( { unsigned sem_index = 0; unsigned tex_sem_index = 0; - auto &name = compiler.get_member_name( + const string &name = compiler.get_member_name( resource.base_type_id, ranges[i].index); - auto &type = compiler.get_type( + const SPIRType &type = compiler.get_type( compiler.get_type(resource.base_type_id).member_types[ ranges[i].index]); slang_semantic sem = slang_uniform_name_to_semantic( From 60e087b8e7c2fab339b0a2ce433e2c2cc0ac4236 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 23 Jan 2020 04:49:35 +0100 Subject: [PATCH 139/148] (Discord) Add header include --- deps/discord-rpc/src/discord_register_linux.c | 1 + 1 file changed, 1 insertion(+) diff --git a/deps/discord-rpc/src/discord_register_linux.c b/deps/discord-rpc/src/discord_register_linux.c index 0652ebde0e..8eec618cb3 100644 --- a/deps/discord-rpc/src/discord_register_linux.c +++ b/deps/discord-rpc/src/discord_register_linux.c @@ -11,6 +11,7 @@ #include #include +#include /* we want to register games so we can run them from * Discord client as discord-:// */ From d0d1c5bb374487bc41d793184a57295af493f4cb Mon Sep 17 00:00:00 2001 From: Jamiras Date: Wed, 22 Jan 2020 18:05:05 -0700 Subject: [PATCH 140/148] allow characters other than / to follow port --- libretro-common/net/net_http.c | 73 +++++++++++++++++++++++++++------- 1 file changed, 58 insertions(+), 15 deletions(-) diff --git a/libretro-common/net/net_http.c b/libretro-common/net/net_http.c index 23a1a8c593..97dbb4253d 100644 --- a/libretro-common/net/net_http.c +++ b/libretro-common/net/net_http.c @@ -318,37 +318,80 @@ bool net_http_connection_iterate(struct http_connection_t *conn) bool net_http_connection_done(struct http_connection_t *conn) { + int has_port = 0; + if (!conn) return false; - if (*conn->scan == '\0') + if (!conn->domain || !*conn->domain) return false; - if (conn->port == 0) - { - if (conn->sock_state.ssl) - conn->port = 443; - else - conn->port = 80; - } - if (*conn->scan == ':') { + /* domain followed by port, split off the port */ *conn->scan++ = '\0'; if (!isdigit((int)(*conn->scan))) return false; conn->port = (int)strtoul(conn->scan, &conn->scan, 10); - - if (*conn->scan != '/') - return false; + has_port = 1; + } + else if (conn->port == 0) + { + /* port not specified, default to standard HTTP or HTTPS port */ + if (conn->sock_state.ssl) + conn->port = 443; + else + conn->port = 80; } - *conn->scan = '\0'; - conn->location = conn->scan + 1; + if (*conn->scan == '/') + { + /* domain followed by location - split off the location */ + /* site.com/path.html or site.com:80/path.html */ + *conn->scan = '\0'; + conn->location = conn->scan + 1; + return true; + } + else if (!*conn->scan) + { + /* domain with no location - point location at empty string */ + /* site.com or site.com:80 */ + conn->location = conn->scan; + return true; + } + else if (*conn->scan == '?') + { + /* domain with no location, but still has query parms - point location at the query parms */ + /* site.com?param=3 or site.com:80?param=3 */ + if (!has_port) + { + /* if there wasn't a port, we have to expand the urlcopy so we can separate the two parts */ + size_t domain_len = strlen(conn->domain); + size_t location_len = strlen(conn->scan); + char* urlcopy = (char*)malloc(domain_len + location_len + 2); + memcpy(urlcopy, conn->domain, domain_len); + urlcopy[domain_len] = '\0'; + memcpy(urlcopy + domain_len + 1, conn->scan, location_len + 1); - return true; + free(conn->urlcopy); + conn->domain = conn->urlcopy = urlcopy; + conn->location = conn->scan = urlcopy + domain_len + 1; + } + else + { + /* there was a port, so overwriting the : will terminate the domain and we can just point at the ? */ + conn->location = conn->scan; + } + + return true; + } + else + { + /* invalid character after domain/port */ + return false; + } } void net_http_connection_free(struct http_connection_t *conn) From c0482ff2eadfc705b5fdc278cda3cc1841fb8b1a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 25 Jan 2020 14:53:04 +0100 Subject: [PATCH 141/148] Get rid of send debug info - if we ever bring this back, needs to be reimplemented according to new infra --- config.def.keybinds.h | 3 - input/input_defines.h | 1 - intl/msg_hash_es.c | 7 - intl/msg_hash_es.h | 36 -- intl/msg_hash_fr.c | 4 - intl/msg_hash_fr.h | 36 -- intl/msg_hash_ja.c | 4 - intl/msg_hash_ja.h | 28 -- intl/msg_hash_ko.c | 4 - intl/msg_hash_ko.h | 36 -- intl/msg_hash_lbl.h | 2 - intl/msg_hash_pl.h | 7 - intl/msg_hash_pt_br.c | 4 - intl/msg_hash_pt_br.h | 36 -- intl/msg_hash_tr.c | 4 - intl/msg_hash_tr.h | 36 -- intl/msg_hash_us.c | 4 - intl/msg_hash_us.h | 36 -- menu/cbs/menu_cbs_ok.c | 9 - menu/cbs/menu_cbs_sublabel.c | 4 - menu/drivers/ozone/ozone_texture.c | 1 - menu/drivers/xmb.c | 1 - menu/menu_displaylist.c | 6 - menu/widgets/menu_dialog.c | 5 - msg_hash.h | 11 - retroarch.c | 689 ----------------------------- 26 files changed, 1014 deletions(-) diff --git a/config.def.keybinds.h b/config.def.keybinds.h index 5271b3a068..7d1900b76b 100644 --- a/config.def.keybinds.h +++ b/config.def.keybinds.h @@ -88,7 +88,6 @@ static const struct retro_keybind retro_keybinds_1[] = { { true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_FPS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, - { true, RARCH_SEND_DEBUG_INFO, MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_NETPLAY_HOST_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_HOST_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, @@ -170,7 +169,6 @@ static const struct retro_keybind retro_keybinds_1[] = { { true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_FPS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, - { true, RARCH_SEND_DEBUG_INFO, MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_NETPLAY_HOST_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_HOST_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, @@ -252,7 +250,6 @@ static const struct retro_keybind retro_keybinds_1[] = { { true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_F9, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_F12, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_FPS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, RETROK_F3, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, - { true, RARCH_SEND_DEBUG_INFO, MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, RETROK_F10, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_NETPLAY_HOST_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_HOST_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_i, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, diff --git a/input/input_defines.h b/input/input_defines.h index edd95037bd..52d47aaa53 100644 --- a/input/input_defines.h +++ b/input/input_defines.h @@ -98,7 +98,6 @@ enum RARCH_MUTE, RARCH_OSK, RARCH_FPS_TOGGLE, - RARCH_SEND_DEBUG_INFO, RARCH_NETPLAY_HOST_TOGGLE, RARCH_NETPLAY_GAME_WATCH, RARCH_ENABLE_HOTKEY, diff --git a/intl/msg_hash_es.c b/intl/msg_hash_es.c index 722513b7b1..7442a1a9f3 100644 --- a/intl/msg_hash_es.c +++ b/intl/msg_hash_es.c @@ -127,13 +127,6 @@ int menu_hash_get_help_es_enum(enum msg_hash_enums msg, char *s, size_t len) "Muestra o no el contador de fotogramas\n" "por segundo."); break; - case RARCH_SEND_DEBUG_INFO: - snprintf(s, len, - "Envía información de diagnóstico de\n" - "tu dispositivo y la configuración de RetroArch\n" - "a nuestros servidores para su posterior\n" - "análisis."); - break; case RARCH_NETPLAY_HOST_TOGGLE: snprintf(s, len, "Activa o desactiva el servidor de juego en red."); diff --git a/intl/msg_hash_es.h b/intl/msg_hash_es.h index 19b5cb3ef4..4eb24a0b38 100644 --- a/intl/msg_hash_es.h +++ b/intl/msg_hash_es.h @@ -1358,10 +1358,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Avanzar fotograma" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, - "Enviar datos de depuración" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, "Mostrar FPS" @@ -9361,38 +9357,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PLAYLIST_FUZZY_ARCHIVE_MATCH, "Al buscar entradas asociadas a archivos comprimidos en las listas de reproducción, solo se buscará una coincidencia en el nombre del archivo, en vez de [nombre de archivo]+[contenido]. Activar para evitar duplicados en el historial al cargar archivos comprimidos." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO, - "Enviar información de depuración" - ) -MSG_HASH( - MSG_FAILED_TO_SAVE_DEBUG_INFO, - "Error al guardar la información de depuración." - ) -MSG_HASH( - MSG_FAILED_TO_SEND_DEBUG_INFO, - "Error al enviar la información de depuración al servidor." - ) -MSG_HASH( - MSG_SENDING_DEBUG_INFO, - "Enviando información de depuración..." - ) -MSG_HASH( - MSG_SENT_DEBUG_INFO, - "Información enviada al servidor. Tu identificador es %u." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO, - "Envía información de diagnóstico sobre tu dispositivo y tu configuración de RetroArch a nuestros servidores para su posterior análisis." - ) -MSG_HASH( - MSG_PRESS_TWO_MORE_TIMES_TO_SEND_DEBUG_INFO, - "Vuelve a pulsar el botón dos veces para enviar la información de diagnóstico al equipo de RetroArch." - ) -MSG_HASH( - MSG_PRESS_ONE_MORE_TIME_TO_SEND_DEBUG_INFO, - "Vuelve a pulsar el botón una última vez para enviar la información de diagnóstico al equipo de RetroArch." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIBRATE_ON_KEYPRESS, "Vibrar al pulsar un botón" diff --git a/intl/msg_hash_fr.c b/intl/msg_hash_fr.c index 8331f34291..425d41bb38 100644 --- a/intl/msg_hash_fr.c +++ b/intl/msg_hash_fr.c @@ -118,10 +118,6 @@ int menu_hash_get_help_fr_enum(enum msg_hash_enums msg, char *s, size_t len) snprintf(s, len, "Afficher/masquer le compteur d'images/s."); break; - case RARCH_SEND_DEBUG_INFO: - snprintf(s, len, - "Envoie des informations de diagnostic sur votre appareil et la configuration de RetroArch à nos serveurs pour analyse."); - break; case RARCH_NETPLAY_HOST_TOGGLE: snprintf(s, len, "Activer/désactiver l'hébergement du jeu en réseau."); diff --git a/intl/msg_hash_fr.h b/intl/msg_hash_fr.h index d43cc41437..c261885636 100644 --- a/intl/msg_hash_fr.h +++ b/intl/msg_hash_fr.h @@ -1358,10 +1358,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Avance image par image" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, - "Envoyer les informations de diagnostic" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, "Afficher/masquer les images/s" @@ -9342,38 +9338,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PLAYLIST_FUZZY_ARCHIVE_MATCH, "Lors de la recherche de fichiers compressés dans les listes de lecture, faire correspondre le nom de l'archive uniquement et non [nom]+[contenu]. Activez cette option pour éviter les doublons dans l'historique lors du chargement d'archives." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO, - "Envoyer des informations de diagnostic" - ) -MSG_HASH( - MSG_FAILED_TO_SAVE_DEBUG_INFO, - "Échec d'enregistrement des informations de diagnostic." - ) -MSG_HASH( - MSG_FAILED_TO_SEND_DEBUG_INFO, - "Échec d'envoi des informations de diagnostic au serveur." - ) -MSG_HASH( - MSG_SENDING_DEBUG_INFO, - "Envoi des informations de diagnostic..." - ) -MSG_HASH( - MSG_SENT_DEBUG_INFO, - "Les informations de diagnostic ont été envoyées au serveur avec succès. Votre numéro d'identification est %u." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO, - "Envoyer les informations de diagnostic pour votre appareil et la configuration de RetroArch à nos serveurs pour analyse." - ) -MSG_HASH( - MSG_PRESS_TWO_MORE_TIMES_TO_SEND_DEBUG_INFO, - "Appuyez deux fois de plus pour soumettre les informations de diagnostic à l'équipe de RetroArch." - ) -MSG_HASH( - MSG_PRESS_ONE_MORE_TIME_TO_SEND_DEBUG_INFO, - "Appuyez une fois de plus pour soumettre les informations de diagnostic à l'équipe de RetroArch." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIBRATE_ON_KEYPRESS, "Vibrer à chaque touche pressée" diff --git a/intl/msg_hash_ja.c b/intl/msg_hash_ja.c index 4e8d964758..d3bd7333c8 100644 --- a/intl/msg_hash_ja.c +++ b/intl/msg_hash_ja.c @@ -115,10 +115,6 @@ int menu_hash_get_help_jp_enum(enum msg_hash_enums msg, char *s, size_t len) snprintf(s, len, "Toggles frames per second counter."); break; - case RARCH_SEND_DEBUG_INFO: - snprintf(s, len, - "Sends diagnostic info about your device and RetroArch configuration to our servers for analysis."); - break; case RARCH_NETPLAY_HOST_TOGGLE: snprintf(s, len, "Toggles netplay hosting on/off."); diff --git a/intl/msg_hash_ja.h b/intl/msg_hash_ja.h index c741366bd1..3fbe560087 100644 --- a/intl/msg_hash_ja.h +++ b/intl/msg_hash_ja.h @@ -1292,10 +1292,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "コマ送り" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, - "デバッグ情報の送信" -) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, "FPS表示の切り替え" @@ -8579,30 +8575,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_RUNTIME_AGGREGATE, "総計" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO, - "デバッグ情報の送信" -) -MSG_HASH( - MSG_FAILED_TO_SAVE_DEBUG_INFO, - "デバッグ情報の保存に失敗しました。" -) -MSG_HASH( - MSG_FAILED_TO_SEND_DEBUG_INFO, - "デバッグ情報のサーバへの送信に失敗しました。" -) -MSG_HASH( - MSG_SENDING_DEBUG_INFO, - "デバッグ情報の送信中..." -) -MSG_HASH( - MSG_SENT_DEBUG_INFO, - "デバッグ情報のサーバへの送信に成功しました。ID番号は %u です。" -) -MSG_HASH( - MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO, - "解析のため, デバイスとRetroArch設定に関する情報をサーバーに送信します。" -) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIBRATE_ON_KEYPRESS, "キー入力で振動" diff --git a/intl/msg_hash_ko.c b/intl/msg_hash_ko.c index e6a1f1b8fe..1cf1cd778f 100644 --- a/intl/msg_hash_ko.c +++ b/intl/msg_hash_ko.c @@ -109,10 +109,6 @@ int menu_hash_get_help_ko_enum(enum msg_hash_enums msg, char *s, size_t len) snprintf(s, len, "FPS 표시를 전환합니다."); break; - case RARCH_SEND_DEBUG_INFO: - snprintf(s, len, - "기기 및 RetroArch 설정의 분적 정보를 분석을 위해 서버에 보냅니다."); - break; case RARCH_NETPLAY_HOST_TOGGLE: snprintf(s, len, "넷플레 호스트 켜기/끄기."); diff --git a/intl/msg_hash_ko.h b/intl/msg_hash_ko.h index 774ec24d34..3bf2c431d4 100644 --- a/intl/msg_hash_ko.h +++ b/intl/msg_hash_ko.h @@ -1283,10 +1283,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "다음 프레임" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, - "디버그 정보 보내기" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, "FPS 켜기/끄기" @@ -8979,38 +8975,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_RUNTIME_AGGREGATE, "종합" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO, - "디버그 정보 전송" - ) -MSG_HASH( - MSG_FAILED_TO_SAVE_DEBUG_INFO, - "디버그 정보 저장 실패." - ) -MSG_HASH( - MSG_FAILED_TO_SEND_DEBUG_INFO, - "디버그 정보를 서버에 전송하는데 실패했습니다." - ) -MSG_HASH( - MSG_SENDING_DEBUG_INFO, - "디버그 정보 전송 중..." - ) -MSG_HASH( - MSG_SENT_DEBUG_INFO, - "디버그 정보를 성공적으로 서버에 보냈습니다. ID 번호는 %u 입니다." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO, - "장치 및 RetroArch 설정 분석 정보를 분석을 위해 서버로 전송합니다." - ) -MSG_HASH( - MSG_PRESS_TWO_MORE_TIMES_TO_SEND_DEBUG_INFO, - "분석 정보를 RetroArch 팀에게 보내려면 두 번 더 눌러주십시오." - ) -MSG_HASH( - MSG_PRESS_ONE_MORE_TIME_TO_SEND_DEBUG_INFO, - "분석 정보를 RetroArch 팀에게 보내려면 한 번 더 눌러주십시오." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIBRATE_ON_KEYPRESS, "키 누를 때 진동" diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 766ba2ebd1..1f06eeb122 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -2066,8 +2066,6 @@ MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_SUBLABEL_RUNTIME_TYPE, "playlist_sublabel_runtime_type") MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_SUBLABEL_LAST_PLAYED_STYLE, "playlist_sublabel_last_played_style") -MSG_HASH(MENU_ENUM_LABEL_HELP_SEND_DEBUG_INFO, - "help_send_debug_info") MSG_HASH(MENU_ENUM_LABEL_VIBRATE_ON_KEYPRESS, "vibrate_on_keypress") MSG_HASH(MENU_ENUM_LABEL_ENABLE_DEVICE_VIBRATION, diff --git a/intl/msg_hash_pl.h b/intl/msg_hash_pl.h index 902ee65e8e..2a4787d4c2 100644 --- a/intl/msg_hash_pl.h +++ b/intl/msg_hash_pl.h @@ -4031,10 +4031,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE_STEP, "Krok zmiany rozmiaru bufora (MB)" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO, - "Wyślij informacje o debugowaniu" - ) #ifdef HAVE_LAKKA MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH, @@ -4551,9 +4547,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SHOW_WIMP, MSG_HASH(MENU_ENUM_SUBLABEL_SHOW_WIMP, "Otwiera menu pulpitu, jeśli jest zamknięte." ) -MSG_HASH(MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO, - "Wysyła informacje diagnostyczne o twoim urządzeniu i konfiguracji RetroArch na nasze serwery w celu analizy." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SOUNDS, "Dźwięki menu" diff --git a/intl/msg_hash_pt_br.c b/intl/msg_hash_pt_br.c index 7fa271c066..b098cf32fa 100644 --- a/intl/msg_hash_pt_br.c +++ b/intl/msg_hash_pt_br.c @@ -116,10 +116,6 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len) snprintf(s, len, "Alternar contador de quadros por segundo."); break; - case RARCH_SEND_DEBUG_INFO: - snprintf(s, len, - "Envia informações de diagnóstico sobre o seu dispositivo e a configuração do RetroArch aos nossos servidores para análise."); - break; case RARCH_NETPLAY_HOST_TOGGLE: snprintf(s, len, "Ativar ou desativar a hospedagem de jogo em rede."); diff --git a/intl/msg_hash_pt_br.h b/intl/msg_hash_pt_br.h index f23b669678..227b8643b5 100644 --- a/intl/msg_hash_pt_br.h +++ b/intl/msg_hash_pt_br.h @@ -1302,10 +1302,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Avanço de Quadro" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, - "Enviar informações de depuração" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, "Alternar FPS" @@ -9222,38 +9218,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PLAYLIST_FUZZY_ARCHIVE_MATCH, "Ao pesquisar as listas de reprodução de entradas associadas a arquivos compactados, corresponde apenas ao nome do arquivo morto em vez de [nome do arquivo]+[conteúdo]. Habilite isso para evitar entradas de histórico de conteúdo duplicadas ao carregar arquivos compactados." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO, - "Enviar Informação de Depuração" - ) -MSG_HASH( - MSG_FAILED_TO_SAVE_DEBUG_INFO, - "Falha ao salvar informações de depuração." - ) -MSG_HASH( - MSG_FAILED_TO_SEND_DEBUG_INFO, - "Falha ao enviar informações de depuração para o servidor." - ) -MSG_HASH( - MSG_SENDING_DEBUG_INFO, - "Enviando informações de depuração..." - ) -MSG_HASH( - MSG_SENT_DEBUG_INFO, - "Enviado informações de depuração para o servidor com sucesso. Seu ID é o número %u." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO, - "Envia informações de diagnóstico sobre o seu dispositivo e a configuração do RetroArch aos nossos servidores para análise." - ) -MSG_HASH( - MSG_PRESS_TWO_MORE_TIMES_TO_SEND_DEBUG_INFO, - "Pressione mais duas vezes para enviar informações de diagnóstico para a equipe do RetroArch." - ) -MSG_HASH( - MSG_PRESS_ONE_MORE_TIME_TO_SEND_DEBUG_INFO, - "Pressione mais uma vez para enviar informações de diagnóstico para a equipe do RetroArch." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIBRATE_ON_KEYPRESS, "Vibrar ao Pressionar a Tecla" diff --git a/intl/msg_hash_tr.c b/intl/msg_hash_tr.c index 1b51dd7b1f..ac4c37f5b1 100644 --- a/intl/msg_hash_tr.c +++ b/intl/msg_hash_tr.c @@ -116,10 +116,6 @@ int menu_hash_get_help_tr_enum(enum msg_hash_enums msg, char *s, size_t len) snprintf(s, len, "Saniye sayacındaki kareleri değiştirir."); break; - case RARCH_SEND_DEBUG_INFO: - snprintf(s, len, - "Analiz için cihazınızın ve RetroArch yapılandırmasına ilişkin tanılama bilgilerini sunucularımıza gönderin."); - break; case RARCH_NETPLAY_HOST_TOGGLE: snprintf(s, len, "Netplay barındırma özelliğini açar/kapatır."); diff --git a/intl/msg_hash_tr.h b/intl/msg_hash_tr.h index 47a6755e05..e91e05e357 100644 --- a/intl/msg_hash_tr.h +++ b/intl/msg_hash_tr.h @@ -1279,10 +1279,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Frameadvance" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, - "Hata Ayıklama Bilgisi Gönder" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, "FPS açma-kapama" @@ -8756,38 +8752,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_RUNTIME_AGGREGATE, "Toplam" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO, - "Hata Ayıklama Bilgisi Gönder" - ) -MSG_HASH( - MSG_FAILED_TO_SAVE_DEBUG_INFO, - "Hata ayıklama bilgisi kaydedilemedi." - ) -MSG_HASH( - MSG_FAILED_TO_SEND_DEBUG_INFO, - "Sunucuya hata ayıklama bilgisi gönderilemedi." - ) -MSG_HASH( - MSG_SENDING_DEBUG_INFO, - "Hata ayıklama bilgisi gönderiliyor..." - ) -MSG_HASH( - MSG_SENT_DEBUG_INFO, - "Sunucuya hata ayıklama bilgisi başarıyla gönderildi. Kimlik numaranız %u." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO, - "Analiz için cihazların ve RetroArch yapılandırmasına ilişkin teşhis bilgilerini gönderir." - ) -MSG_HASH( - MSG_PRESS_TWO_MORE_TIMES_TO_SEND_DEBUG_INFO, - "RetroArch ekibine tanılama bilgileri göndermek için iki kez daha basın." - ) -MSG_HASH( - MSG_PRESS_ONE_MORE_TIME_TO_SEND_DEBUG_INFO, - "RetroArch ekibine tanılama bilgileri göndermek için bir kez daha basın." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIBRATE_ON_KEYPRESS, "Tuşa Basınca titret" diff --git a/intl/msg_hash_us.c b/intl/msg_hash_us.c index e74180ace1..d5abf3a67f 100644 --- a/intl/msg_hash_us.c +++ b/intl/msg_hash_us.c @@ -108,10 +108,6 @@ int menu_hash_get_help_us_enum(enum msg_hash_enums msg, char *s, size_t len) snprintf(s, len, "Toggles frames per second counter."); break; - case RARCH_SEND_DEBUG_INFO: - snprintf(s, len, - "Sends diagnostic info about your device and RetroArch configuration to our servers for analysis."); - break; case RARCH_NETPLAY_HOST_TOGGLE: snprintf(s, len, "Toggles netplay hosting on/off."); diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 5aaddcd2d9..78bdce1abf 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -1386,10 +1386,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Frameadvance" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, - "Send Debug Info" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, "FPS toggle" @@ -9438,38 +9434,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PLAYLIST_FUZZY_ARCHIVE_MATCH, "When searching playlists for entries associated with compressed files, match only the archive file name instead of [file name]+[content]. Enable this to avoid duplicate content history entries when loading compressed files." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO, - "Send Debug Info" - ) -MSG_HASH( - MSG_FAILED_TO_SAVE_DEBUG_INFO, - "Failed to save debug info." - ) -MSG_HASH( - MSG_FAILED_TO_SEND_DEBUG_INFO, - "Failed to send debug info to server." - ) -MSG_HASH( - MSG_SENDING_DEBUG_INFO, - "Sending debug info..." - ) -MSG_HASH( - MSG_SENT_DEBUG_INFO, - "Sent debug info to server successfully. Your ID number is %u." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO, - "Sends diagnostic info about your device and RetroArch configuration to our servers for analysis." - ) -MSG_HASH( - MSG_PRESS_TWO_MORE_TIMES_TO_SEND_DEBUG_INFO, - "Press two more times to submit diagnostic info to the RetroArch team." - ) -MSG_HASH( - MSG_PRESS_ONE_MORE_TIME_TO_SEND_DEBUG_INFO, - "Press one more time to submit diagnostic info to the RetroArch team." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIBRATE_ON_KEYPRESS, "Vibrate on key press" diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 4881271f60..7edca8c465 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -5960,12 +5960,6 @@ static int (funcname)(const char *path, const char *label, unsigned type, size_t return generic_action_ok_help(path, label, type, idx, entry_idx, _id, _id2); \ } -static int action_ok_help_send_debug_info(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - command_event(CMD_EVENT_SEND_DEBUG_INFO, NULL); - return 0; -} - default_action_ok_help(action_ok_help_audio_video_troubleshooting, MENU_ENUM_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING, MENU_DIALOG_HELP_AUDIO_VIDEO_TROUBLESHOOTING) default_action_ok_help(action_ok_help, MENU_ENUM_LABEL_HELP, MENU_DIALOG_WELCOME) default_action_ok_help(action_ok_help_controls, MENU_ENUM_LABEL_HELP_CONTROLS, MENU_DIALOG_HELP_CONTROLS) @@ -6646,9 +6640,6 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING: BIND_ACTION_OK(cbs, action_ok_help_audio_video_troubleshooting); break; - case MENU_ENUM_LABEL_HELP_SEND_DEBUG_INFO: - BIND_ACTION_OK(cbs, action_ok_help_send_debug_info); - break; case MENU_ENUM_LABEL_HELP_SCANNING_CONTENT: BIND_ACTION_OK(cbs, action_ok_help_scanning_content); break; diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index 015bef33a5..ae5345063f 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -733,7 +733,6 @@ default_sublabel_macro(action_bind_sublabel_menu_rgui_full_width_layout, default_sublabel_macro(action_bind_sublabel_menu_rgui_extended_ascii, MENU_ENUM_SUBLABEL_MENU_RGUI_EXTENDED_ASCII) default_sublabel_macro(action_bind_sublabel_thumbnails_updater_list, MENU_ENUM_SUBLABEL_THUMBNAILS_UPDATER_LIST) default_sublabel_macro(action_bind_sublabel_pl_thumbnails_updater_list, MENU_ENUM_SUBLABEL_PL_THUMBNAILS_UPDATER_LIST) -default_sublabel_macro(action_bind_sublabel_help_send_debug_info, MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO) default_sublabel_macro(action_bind_sublabel_rdb_entry_detail, MENU_ENUM_SUBLABEL_RDB_ENTRY_DETAIL) default_sublabel_macro(action_bind_sublabel_manual_content_scan_list, MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_LIST) default_sublabel_macro(action_bind_sublabel_manual_content_scan_dir, MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_DIR) @@ -3135,9 +3134,6 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_PL_THUMBNAILS_UPDATER_LIST: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_pl_thumbnails_updater_list); break; - case MENU_ENUM_LABEL_HELP_SEND_DEBUG_INFO: - BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_help_send_debug_info); - break; case MENU_ENUM_LABEL_RDB_ENTRY_DETAIL: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_rdb_entry_detail); break; diff --git a/menu/drivers/ozone/ozone_texture.c b/menu/drivers/ozone/ozone_texture.c index 7bb6d281cf..e69e33c19d 100644 --- a/menu/drivers/ozone/ozone_texture.c +++ b/menu/drivers/ozone/ozone_texture.c @@ -163,7 +163,6 @@ menu_texture_item ozone_entries_icon_get_texture(ozone_handle_t *ozone, case MENU_ENUM_LABEL_HELP_WHAT_IS_A_CORE: case MENU_ENUM_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD: case MENU_ENUM_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING: - case MENU_ENUM_LABEL_HELP_SEND_DEBUG_INFO: return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_HELP]; case MENU_ENUM_LABEL_QUIT_RETROARCH: case MENU_ENUM_LABEL_BLOCK_SRAM_OVERWRITE: diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 15da4b7e7e..3f4659f17d 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -2452,7 +2452,6 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb, case MENU_ENUM_LABEL_HELP_WHAT_IS_A_CORE: case MENU_ENUM_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD: case MENU_ENUM_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING: - case MENU_ENUM_LABEL_HELP_SEND_DEBUG_INFO: return xmb->textures.list[XMB_TEXTURE_HELP]; case MENU_ENUM_LABEL_QUIT_RETROARCH: case MENU_ENUM_LABEL_BLOCK_SRAM_OVERWRITE: diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 8a233614e0..bd9b27c23c 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -4414,12 +4414,6 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct MENU_ENUM_LABEL_HELP_CONTROLS, 0, 0, 0)) count++; - if (menu_entries_append_enum(list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO), - msg_hash_to_str(MENU_ENUM_LABEL_HELP_SEND_DEBUG_INFO), - MENU_ENUM_LABEL_HELP_SEND_DEBUG_INFO, - 0, 0, 0)) - count++; break; case DISPLAYLIST_AUDIO_RESAMPLER_SETTINGS_LIST: if (menu_displaylist_parse_settings_enum(list, diff --git a/menu/widgets/menu_dialog.c b/menu/widgets/menu_dialog.c index 636caa970d..c5657cb3f4 100644 --- a/menu/widgets/menu_dialog.c +++ b/menu/widgets/menu_dialog.c @@ -197,11 +197,6 @@ int menu_dialog_iterate(char *s, size_t len, const char *label) MENU_ENUM_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC, s, len); break; - case MENU_DIALOG_HELP_SEND_DEBUG_INFO: - menu_hash_get_help_enum( - MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO_DESC, - s, len); - break; case MENU_DIALOG_HELP_SCANNING_CONTENT: menu_hash_get_help_enum(MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC, s, len); diff --git a/msg_hash.h b/msg_hash.h index 4f0be461a4..17a37d11f6 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -806,7 +806,6 @@ enum msg_hash_enums MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, - MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_HOST_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, @@ -2708,16 +2707,6 @@ enum msg_hash_enums MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_LAST_PLAYED_STYLE_DM_HM_AM_PM, MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_LAST_PLAYED_STYLE_MD_HM_AM_PM, - MENU_LABEL(HELP_SEND_DEBUG_INFO), - MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO_DESC, - - MSG_FAILED_TO_SAVE_DEBUG_INFO, - MSG_FAILED_TO_SEND_DEBUG_INFO, - MSG_SENDING_DEBUG_INFO, - MSG_SENT_DEBUG_INFO, - MSG_PRESS_TWO_MORE_TIMES_TO_SEND_DEBUG_INFO, - MSG_PRESS_ONE_MORE_TIME_TO_SEND_DEBUG_INFO, - MENU_LABEL(VIBRATE_ON_KEYPRESS), MENU_LABEL(ENABLE_DEVICE_VIBRATION), MENU_LABEL(VIDEO_GPU_INDEX), diff --git a/retroarch.c b/retroarch.c index 426772a3d7..17536d3c88 100644 --- a/retroarch.c +++ b/retroarch.c @@ -974,8 +974,6 @@ static const camera_driver_t *camera_drivers[] = { #define QUIT_DELAY_USEC 3 * 1000000 /* 3 seconds */ -#define DEBUG_INFO_FILENAME "debug_info.txt" - /* Descriptive names for options without short variant. * * Please keep the name in sync with the option name. @@ -3414,7 +3412,6 @@ const struct input_bind_map input_config_bind_map[RARCH_BIND_LIST_END_NULL] = { DECLARE_META_BIND(2, audio_mute, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE), DECLARE_META_BIND(2, osk_toggle, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK), DECLARE_META_BIND(2, fps_toggle, RARCH_FPS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE), - DECLARE_META_BIND(2, send_debug_info, RARCH_SEND_DEBUG_INFO, MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO), DECLARE_META_BIND(2, netplay_host_toggle, RARCH_NETPLAY_HOST_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_HOST_TOGGLE), DECLARE_META_BIND(2, netplay_game_watch, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH), DECLARE_META_BIND(2, enable_hotkey, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY), @@ -3572,9 +3569,6 @@ static void core_free_retro_game_info(struct retro_game_info *dest); static bool core_load(unsigned poll_type_behavior); static bool core_unload_game(void); -#ifdef HAVE_NETWORKING -static void rarch_send_debug_info(void); -#endif static bool rarch_environment_cb(unsigned cmd, void *data); static bool driver_location_get_position(double *lat, double *lon, @@ -3787,7 +3781,6 @@ static const struct cmd_map map[] = { { "MUTE", RARCH_MUTE }, { "OSK", RARCH_OSK }, { "FPS_TOGGLE", RARCH_FPS_TOGGLE }, - { "SEND_DEBUG_INFO", RARCH_SEND_DEBUG_INFO }, { "NETPLAY_HOST_TOGGLE", RARCH_NETPLAY_HOST_TOGGLE }, { "NETPLAY_GAME_WATCH", RARCH_NETPLAY_GAME_WATCH }, { "VOLUME_UP", RARCH_VOLUME_UP }, @@ -6749,11 +6742,6 @@ TODO: Add a setting for these tweaks */ runloop_msg_queue_push(msg, 1, 180, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); } break; - case CMD_EVENT_SEND_DEBUG_INFO: -#ifdef HAVE_NETWORKING - rarch_send_debug_info(); -#endif - break; case CMD_EVENT_FPS_TOGGLE: { settings_t *settings = configuration_settings; @@ -15005,7 +14993,6 @@ static void menu_input_pointer_close_messagebox(void) string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_HELP_SCANNING_CONTENT)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING)) || - string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_HELP_SEND_DEBUG_INFO)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEEVOS_DESCRIPTION))) { /* Have to set this to false, apparently... @@ -15768,7 +15755,6 @@ static void input_menu_keys_pressed(input_bits_t *p_new_state, {RETROK_DELETE, RETRO_DEVICE_ID_JOYPAD_Y }, {0, RARCH_UI_COMPANION_TOGGLE }, {0, RARCH_FPS_TOGGLE }, - {0, RARCH_SEND_DEBUG_INFO }, {0, RARCH_NETPLAY_HOST_TOGGLE }, {0, RARCH_MENU_TOGGLE }, }; @@ -15777,7 +15763,6 @@ static void input_menu_keys_pressed(input_bits_t *p_new_state, ids[10][0] = input_config_binds[0][RARCH_FULLSCREEN_TOGGLE_KEY].key; ids[14][0] = input_config_binds[0][RARCH_UI_COMPANION_TOGGLE].key; ids[15][0] = input_config_binds[0][RARCH_FPS_TOGGLE].key; - ids[16][0] = input_config_binds[0][RARCH_SEND_DEBUG_INFO].key; ids[17][0] = input_config_binds[0][RARCH_NETPLAY_HOST_TOGGLE].key; ids[18][0] = input_config_binds[0][RARCH_MENU_TOGGLE].key; @@ -27209,61 +27194,6 @@ static enum runloop_state runloop_check_state(void) old_pressed = pressed; } - /* Check if we have pressed the "send debug info" button. - * Must press 3 times in a row to activate, but it will - * alert the user of this with each press of the hotkey. */ - { - int any_i; - static uint32_t debug_seq = 0; - static bool old_pressed = false; - static bool old_any_pressed = false; - bool any_pressed = false; - bool pressed = BIT256_GET(current_bits, RARCH_SEND_DEBUG_INFO); - - for (any_i = 0; any_i < ARRAY_SIZE(current_bits.data); any_i++) - { - if (current_bits.data[any_i]) - { - any_pressed = true; - break; - } - } - - if (pressed && !old_pressed) - debug_seq |= pressed ? 1 : 0; - - switch (debug_seq) - { - case 1: /* pressed hotkey one time */ - runloop_msg_queue_push( - msg_hash_to_str(MSG_PRESS_TWO_MORE_TIMES_TO_SEND_DEBUG_INFO), - 2, 180, true, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - break; - case 3: /* pressed hotkey two times */ - runloop_msg_queue_push( - msg_hash_to_str(MSG_PRESS_ONE_MORE_TIME_TO_SEND_DEBUG_INFO), - 2, 180, true, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - break; - case 7: /* pressed hotkey third and final time */ - debug_seq = 0; - command_event(CMD_EVENT_SEND_DEBUG_INFO, NULL); - break; - } - - if (any_pressed && !old_any_pressed) - { - debug_seq <<= 1; - - if (debug_seq > 7) - debug_seq = 0; - } - - old_pressed = pressed; - old_any_pressed = any_pressed; - } - /* Check if we have pressed the FPS toggle button */ HOTKEY_CHECK(RARCH_FPS_TOGGLE, CMD_EVENT_FPS_TOGGLE, true, NULL); @@ -27951,625 +27881,6 @@ void rarch_get_cpu_architecture_string(char *cpu_arch_str, size_t len) } } -#ifdef HAVE_NETWORKING -static bool rarch_write_debug_info(void) -{ - int i; - char str[PATH_MAX_LENGTH]; - char debug_filepath[PATH_MAX_LENGTH]; - gfx_ctx_mode_t mode_info = {0}; - settings_t *settings = configuration_settings; - RFILE *file = NULL; - const frontend_ctx_driver_t *frontend = frontend_get_ptr(); - const char *cpu_model = NULL; - const char *path_config = path_get(RARCH_PATH_CONFIG); - unsigned lang = - *msg_hash_get_uint(MSG_HASH_USER_LANGUAGE); - - str[0] = - debug_filepath[0] = '\0'; - - /* Only print our debug info in English */ - if (lang != RETRO_LANGUAGE_ENGLISH) - msg_hash_set_uint(MSG_HASH_USER_LANGUAGE, RETRO_LANGUAGE_ENGLISH); - - fill_pathname_resolve_relative( - debug_filepath, - path_config, - DEBUG_INFO_FILENAME, - sizeof(debug_filepath)); - - file = filestream_open(debug_filepath, - RETRO_VFS_FILE_ACCESS_WRITE, RETRO_VFS_FILE_ACCESS_HINT_NONE); - - if (!file) - { - RARCH_ERR("Could not open debug info file for writing: %s\n", debug_filepath); - goto error; - } - -#ifdef HAVE_MENU - { - time_t time_; - char timedate[255]; - - timedate[0] = '\0'; - - time(&time_); - - setlocale(LC_TIME, ""); - - strftime(timedate, sizeof(timedate), - "%Y-%m-%d %H:%M:%S", localtime(&time_)); - - filestream_printf(file, "Log Date/Time: %s\n", timedate); - } -#endif - filestream_printf(file, "RetroArch Version: %s\n", PACKAGE_VERSION); - -#ifdef HAVE_LAKKA - if (frontend->get_lakka_version) - { - frontend->get_lakka_version(str, sizeof(str)); - filestream_printf(file, "Lakka Version: %s\n", str); - str[0] = '\0'; - } -#endif - - filestream_printf(file, "RetroArch Build Date: %s\n", __DATE__); -#ifdef HAVE_GIT_VERSION - filestream_printf(file, "RetroArch Git Commit: %s\n", retroarch_git_version); -#endif - - filestream_printf(file, "\n"); - - cpu_model = frontend_driver_get_cpu_model_name(); - - if (!string_is_empty(cpu_model)) - filestream_printf(file, "CPU Model Name: %s\n", cpu_model); - - retroarch_get_capabilities(RARCH_CAPABILITIES_CPU, str, sizeof(str)); - filestream_printf(file, "CPU Capabilities: %s\n", str); - - str[0] = '\0'; - - rarch_get_cpu_architecture_string(str, sizeof(str)); - - filestream_printf(file, "CPU Architecture: %s\n", str); - filestream_printf(file, "CPU Cores: %u\n", cpu_features_get_core_amount()); - - { - uint64_t memory_free = frontend_driver_get_free_memory(); - uint64_t memory_total = frontend_driver_get_total_memory(); - - filestream_printf(file, "Memory: %" PRIu64 "/%" PRIu64 " MB\n", memory_free / 1024 / 1024, memory_total / 1024 / 1024); - } - - filestream_printf(file, "GPU Device: %s\n", !string_is_empty(video_driver_get_gpu_device_string()) ? - video_driver_get_gpu_device_string() : "n/a"); - filestream_printf(file, "GPU API/Driver Version: %s\n", !string_is_empty(video_driver_get_gpu_api_version_string()) ? - video_driver_get_gpu_api_version_string() : "n/a"); - - filestream_printf(file, "\n"); - - video_context_driver_get_video_size(&mode_info); - - filestream_printf(file, "Window Resolution: %u x %u\n", mode_info.width, mode_info.height); - - { - float width = 0, height = 0, refresh = 0.0f; - gfx_ctx_metrics_t metrics; - - metrics.type = DISPLAY_METRIC_PIXEL_WIDTH; - metrics.value = &width; - - video_context_driver_get_metrics(&metrics); - - metrics.type = DISPLAY_METRIC_PIXEL_HEIGHT; - metrics.value = &height; - video_context_driver_get_metrics(&metrics); - - video_context_driver_get_refresh_rate(&refresh); - - filestream_printf(file, "Monitor Resolution: %d x %d @ %.2f Hz (configured for %.2f Hz)\n", (int)width, (int)height, refresh, settings->floats.video_refresh_rate); - } - - filestream_printf(file, "\n"); - - str[0] = '\0'; - - retroarch_get_capabilities(RARCH_CAPABILITIES_COMPILER, str, sizeof(str)); - filestream_printf(file, "%s\n", str); - - str[0] = '\0'; - - filestream_printf(file, "Frontend Identifier: %s\n", frontend->ident); - - if (frontend->get_name) - { - frontend->get_name(str, sizeof(str)); - filestream_printf(file, "Frontend Name: %s\n", str); - str[0] = '\0'; - } - - if (frontend->get_os) - { - int major = 0, minor = 0; - const char *warning = ""; - - frontend->get_os(str, sizeof(str), &major, &minor); - - if (strstr(str, "Build 16299")) - warning = " (WARNING: Fall Creator's Update detected... OpenGL performance may be low)"; - - filestream_printf(file, "Frontend OS: %s (v%d.%d)%s\n", str, major, minor, warning); - - str[0] = '\0'; - } - - filestream_printf(file, "\n"); - filestream_printf(file, "Input Devices (autoconfig is %s):\n", settings->bools.input_autodetect_enable ? "enabled" : "disabled"); - - for (i = 0; i < 4; i++) - { - if (input_is_autoconfigured(i)) - { - unsigned retro_id; - unsigned rebind = 0; - unsigned device = settings->uints.input_libretro_device[i]; - - device &= RETRO_DEVICE_MASK; - - if (device == RETRO_DEVICE_JOYPAD || device == RETRO_DEVICE_ANALOG) - { - for (retro_id = 0; retro_id < RARCH_ANALOG_BIND_LIST_END; retro_id++) - { - char descriptor[300]; - const struct retro_keybind *keybind = &input_config_binds[i][retro_id]; - const struct retro_keybind *auto_bind = (const struct retro_keybind*) - input_config_get_bind_auto(i, retro_id); - - input_config_get_bind_string(descriptor, - keybind, auto_bind, sizeof(descriptor)); - - if (!strstr(descriptor, "Auto") - && auto_bind - && !auto_bind->valid - && (auto_bind->joykey != 0xFFFF) - && !string_is_empty(auto_bind->joykey_label)) - rebind++; - } - } - - if (rebind) - filestream_printf(file, " - Port #%d autoconfigured (WARNING: %u keys rebinded):\n", i, rebind); - else - filestream_printf(file, " - Port #%d autoconfigured:\n", i); - - filestream_printf(file, " - Device name: %s (#%d)\n", - input_config_get_device_name(i), - input_autoconfigure_get_device_name_index(i)); - filestream_printf(file, " - Display name: %s\n", - input_config_get_device_display_name(i) ? - input_config_get_device_display_name(i) : "N/A"); - filestream_printf(file, " - Config path: %s\n", - input_config_get_device_display_name(i) ? - input_config_get_device_config_path(i) : "N/A"); - filestream_printf(file, " - VID/PID: %d/%d (0x%04X/0x%04X)\n", - input_config_get_vid(i), input_config_get_pid(i), - input_config_get_vid(i), input_config_get_pid(i)); - } - else - filestream_printf(file, " - Port #%d not autoconfigured\n", i); - } - - filestream_printf(file, "\n"); - - filestream_printf(file, "Drivers:\n"); - - { - gfx_ctx_ident_t ident_info = {0}; - input_driver_t *input_driver = NULL; - const input_device_driver_t *joypad_driver = NULL; - const char *driver = NULL; -#ifdef HAVE_MENU - driver = menu_driver_ident(); - - if (string_is_equal(driver, settings->arrays.menu_driver)) - filestream_printf(file, " - Menu: %s\n", - !string_is_empty(driver) ? driver : "n/a"); - else - filestream_printf(file, " - Menu: %s (configured for %s)\n", - !string_is_empty(driver) - ? driver - : "n/a", - !string_is_empty(settings->arrays.menu_driver) - ? settings->arrays.menu_driver - : "n/a"); -#endif - driver = video_driver_get_ident(); - - if (string_is_equal(driver, settings->arrays.video_driver)) - filestream_printf(file, " - Video: %s\n", - !string_is_empty(driver) - ? driver - : "n/a"); - else - filestream_printf(file, " - Video: %s (configured for %s)\n", - !string_is_empty(driver) - ? driver - : "n/a", - !string_is_empty(settings->arrays.video_driver) - ? settings->arrays.video_driver - : "n/a"); - - video_context_driver_get_ident(&ident_info); - filestream_printf(file, " - Video Context: %s\n", - ident_info.ident ? ident_info.ident : "n/a"); - - driver = NULL; - if (current_audio) - driver = current_audio->ident; - - if (string_is_equal(driver, settings->arrays.audio_driver)) - filestream_printf(file, " - Audio: %s\n", - !string_is_empty(driver) ? driver : "n/a"); - else - filestream_printf(file, " - Audio: %s (configured for %s)\n", - !string_is_empty(driver) ? driver : "n/a", - !string_is_empty(settings->arrays.audio_driver) ? settings->arrays.audio_driver : "n/a"); - - input_driver = current_input; - - if (input_driver && string_is_equal(input_driver->ident, settings->arrays.input_driver)) - filestream_printf(file, " - Input: %s\n", !string_is_empty(input_driver->ident) ? input_driver->ident : "n/a"); - else - filestream_printf(file, " - Input: %s (configured for %s)\n", !string_is_empty(input_driver->ident) ? input_driver->ident : "n/a", !string_is_empty(settings->arrays.input_driver) ? settings->arrays.input_driver : "n/a"); - - joypad_driver = (input_driver->get_joypad_driver ? input_driver->get_joypad_driver(current_input_data) : NULL); - - if (joypad_driver && string_is_equal(joypad_driver->ident, settings->arrays.input_joypad_driver)) - filestream_printf(file, " - Joypad: %s\n", !string_is_empty(joypad_driver->ident) ? joypad_driver->ident : "n/a"); - else - filestream_printf(file, " - Joypad: %s (configured for %s)\n", !string_is_empty(joypad_driver->ident) ? joypad_driver->ident : "n/a", !string_is_empty(settings->arrays.input_joypad_driver) ? settings->arrays.input_joypad_driver : "n/a"); - } - - filestream_printf(file, "\n"); - - filestream_printf(file, "Configuration related settings:\n"); - filestream_printf(file, " - Save on exit: %s\n", settings->bools.config_save_on_exit ? "yes" : "no"); - filestream_printf(file, " - Load content-specific core options automatically: %s\n", settings->bools.game_specific_options ? "yes" : "no"); - filestream_printf(file, " - Load override files automatically: %s\n", settings->bools.auto_overrides_enable ? "yes" : "no"); - filestream_printf(file, " - Load remap files automatically: %s\n", settings->bools.auto_remaps_enable ? "yes" : "no"); - filestream_printf(file, " - Sort saves in folders: %s\n", settings->bools.sort_savefiles_enable ? "yes" : "no"); - filestream_printf(file, " - Sort states in folders: %s\n", settings->bools.sort_savestates_enable ? "yes" : "no"); - filestream_printf(file, " - Write saves in content dir: %s\n", settings->bools.savefiles_in_content_dir ? "yes" : "no"); - filestream_printf(file, " - Write savestates in content dir: %s\n", settings->bools.savestates_in_content_dir ? "yes" : "no"); - - filestream_printf(file, "\n"); - - filestream_printf(file, "Auto load state: %s\n", settings->bools.savestate_auto_load ? "yes (WARNING: not compatible with all cores)" : "no"); - filestream_printf(file, "Auto save state: %s\n", settings->bools.savestate_auto_save ? "yes" : "no"); - - filestream_printf(file, "\n"); - - filestream_printf(file, "Buildbot cores URL: %s\n", settings->paths.network_buildbot_url); - filestream_printf(file, "Auto-extract downloaded archives: %s\n", settings->bools.network_buildbot_auto_extract_archive ? "yes" : "no"); - - { - size_t count = 0; - core_info_list_t *core_info_list = NULL; - struct string_list *list = NULL; - const char *ext = ".rdb"; - - /* remove dot */ - if (!string_is_empty(ext) && ext[0] == '.' && strlen(ext) > 1) - ext++; - - core_info_get_list(&core_info_list); - - if (core_info_list) - count = core_info_list->count; - - filestream_printf(file, "Core info: %u entries\n", count); - - count = 0; - - list = dir_list_new(settings->paths.path_content_database, ext, false, true, false, true); - - if (list) - { - count = list->size; - string_list_free(list); - } - - filestream_printf(file, "Databases: %u entries\n", count); - } - - filestream_printf(file, "\n"); - - filestream_printf(file, "Performance and latency-sensitive features (may have a large impact depending on the core):\n"); - filestream_printf(file, " - Video:\n"); - filestream_printf(file, " - Runahead: %s\n", settings->bools.run_ahead_enabled ? "yes (WARNING: not compatible with all cores)" : "no"); - filestream_printf(file, " - Rewind: %s\n", settings->bools.rewind_enable ? "yes (WARNING: not compatible with all cores)" : "no"); - filestream_printf(file, " - Hard GPU Sync: %s\n", settings->bools.video_hard_sync ? "yes" : "no"); - filestream_printf(file, " - Frame Delay: %u frames\n", settings->uints.video_frame_delay); - filestream_printf(file, " - Max Swapchain Images: %u\n", settings->uints.video_max_swapchain_images); - filestream_printf(file, " - Max Run Speed: %.1f x\n", settings->floats.fastforward_ratio); - filestream_printf(file, " - Sync to exact content framerate: %s\n", settings->bools.vrr_runloop_enable ? "yes (note: designed for G-Sync/FreeSync displays only)" : "no"); - filestream_printf(file, " - Fullscreen: %s\n", settings->bools.video_fullscreen ? "yes" : "no"); - filestream_printf(file, " - Windowed Fullscreen: %s\n", settings->bools.video_windowed_fullscreen ? "yes" : "no"); - filestream_printf(file, " - Threaded Video: %s\n", settings->bools.video_threaded ? "yes" : "no"); - filestream_printf(file, " - Vsync: %s\n", settings->bools.video_vsync ? "yes" : "no"); - filestream_printf(file, " - Vsync Swap Interval: %u frames\n", settings->uints.video_swap_interval); - filestream_printf(file, " - Black Frame Insertion: %s\n", settings->bools.video_black_frame_insertion ? "yes" : "no"); - filestream_printf(file, " - Bilinear Filtering: %s\n", settings->bools.video_smooth ? "yes" : "no"); - filestream_printf(file, " - Video CPU Filter: %s\n", !string_is_empty(settings->paths.path_softfilter_plugin) ? settings->paths.path_softfilter_plugin : "n/a"); - filestream_printf(file, " - CRT SwitchRes: %s\n", (settings->uints.crt_switch_resolution > CRT_SWITCH_NONE) ? "yes" : "no"); - filestream_printf(file, " - Video Shared Context: %s\n", settings->bools.video_shared_context ? "yes" : "no"); - -#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_SLANG) || defined(HAVE_HLSL) - { - video_shader_ctx_t shader_info = {0}; - - video_shader_driver_get_current_shader(&shader_info); - - if (shader_info.data) - { - if (string_is_equal(shader_info.data->path, runtime_shader_preset)) - filestream_printf(file, " - Video Shader: %s\n", !string_is_empty(runtime_shader_preset) ? runtime_shader_preset : "n/a"); - else - filestream_printf(file, " - Video Shader: %s (configured for %s)\n", !string_is_empty(shader_info.data->path) ? shader_info.data->path : "n/a", !string_is_empty(runtime_shader_preset) ? runtime_shader_preset : "n/a"); - } - else - filestream_printf(file, " - Video Shader: n/a\n"); - } -#endif - - filestream_printf(file, " - Audio:\n"); - filestream_printf(file, " - Audio Enabled: %s\n", settings->bools.audio_enable ? "yes" : "no (WARNING: content framerate will be incorrect)"); - filestream_printf(file, " - Audio Sync: %s\n", settings->bools.audio_sync ? "yes" : "no (WARNING: content framerate will be incorrect)"); - - { - const char *s = NULL; - - switch (settings->uints.audio_resampler_quality) - { - case RESAMPLER_QUALITY_DONTCARE: - s = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DONT_CARE); - break; - case RESAMPLER_QUALITY_LOWEST: - s = msg_hash_to_str(MSG_RESAMPLER_QUALITY_LOWEST); - break; - case RESAMPLER_QUALITY_LOWER: - s = msg_hash_to_str(MSG_RESAMPLER_QUALITY_LOWER); - break; - case RESAMPLER_QUALITY_HIGHER: - s = msg_hash_to_str(MSG_RESAMPLER_QUALITY_HIGHER); - break; - case RESAMPLER_QUALITY_HIGHEST: - s = msg_hash_to_str(MSG_RESAMPLER_QUALITY_HIGHEST); - break; - case RESAMPLER_QUALITY_NORMAL: - s = msg_hash_to_str(MSG_RESAMPLER_QUALITY_NORMAL); - break; - } - - filestream_printf(file, " - Resampler Quality: %s\n", !string_is_empty(s) ? s : "n/a"); - } - - filestream_printf(file, " - Audio Latency: %u ms\n", settings->uints.audio_latency); - filestream_printf(file, " - Dynamic Rate Control (DRC): %.3f\n", *audio_get_float_ptr(AUDIO_ACTION_RATE_CONTROL_DELTA)); - filestream_printf(file, " - Max Timing Skew: %.2f\n", settings->floats.audio_max_timing_skew); - filestream_printf(file, " - Output Rate: %u Hz\n", settings->uints.audio_out_rate); - filestream_printf(file, " - DSP Plugin: %s\n", !string_is_empty(settings->paths.path_audio_dsp_plugin) ? settings->paths.path_audio_dsp_plugin : "n/a"); - - { - core_info_list_t *core_info_list = NULL; - bool found = false; - - filestream_printf(file, "\n"); - filestream_printf(file, "Firmware files found:\n"); - - core_info_get_list(&core_info_list); - - if (core_info_list) - { - unsigned i; - - for (i = 0; i < core_info_list->count; i++) - { - core_info_t *info = &core_info_list->list[i]; - - if (!info) - continue; - - if (info->firmware_count) - { - unsigned j; - bool core_found = false; - - for (j = 0; j < info->firmware_count; j++) - { - core_info_firmware_t *firmware = &info->firmware[j]; - char path[PATH_MAX_LENGTH]; - - if (!firmware) - continue; - - path[0] = '\0'; - - fill_pathname_join( - path, - settings->paths.directory_system, - firmware->path, - sizeof(path)); - - if (filestream_exists(path)) - { - found = true; - - if (!core_found) - { - core_found = true; - filestream_printf(file, " - %s:\n", !string_is_empty(info->core_name) ? info->core_name : path_basename(info->path)); - } - - filestream_printf(file, " - %s (%s)\n", firmware->path, firmware->optional ? "optional" : "required"); - } - } - } - } - } - - if (!found) - filestream_printf(file, " - n/a\n"); - } - - filestream_close(file); - - RARCH_LOG("Wrote debug info to %s\n", debug_filepath); - - msg_hash_set_uint(MSG_HASH_USER_LANGUAGE, lang); - - return true; - -error: - return false; -} - -static void send_debug_info_cb(retro_task_t *task, - void *task_data, void *user_data, const char *error) -{ - if (task_data) - { - http_transfer_data_t *data = (http_transfer_data_t*)task_data; - - if (!data || data->len == 0) - { - RARCH_LOG("%s\n", msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO)); - - runloop_msg_queue_push( - msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO), - 2, 180, true, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_ERROR); - free(task_data); - return; - } - - /* don't use string_is_equal() here instead of the memcmp() because the data isn't NULL-terminated */ - if (!string_is_empty(data->data) && data->len >= 2 && !memcmp(data->data, "OK", 2)) - { - char buf[32] = {0}; - struct string_list *list; - - memcpy(buf, data->data, data->len); - - list = string_split(buf, " "); - - if (list && list->size > 1) - { - unsigned id = 0; - char msg[PATH_MAX_LENGTH]; - - msg[0] = '\0'; - - sscanf(list->elems[1].data, "%u", &id); - - snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_SENT_DEBUG_INFO), id); - - RARCH_LOG("%s\n", msg); - - runloop_msg_queue_push( - msg, - 2, 600, true, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - } - - if (list) - string_list_free(list); - } - else - { - RARCH_LOG("%s\n", msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO)); - - runloop_msg_queue_push( - msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO), - 2, 180, true, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_ERROR); - } - - free(task_data); - } - else - { - RARCH_LOG("%s\n", msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO)); - - runloop_msg_queue_push( - msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO), - 2, 180, true, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_ERROR); - } -} - -static void rarch_send_debug_info(void) -{ - char debug_filepath[PATH_MAX_LENGTH]; - const char *url = "http://lobby.libretro.com/debuginfo/add/"; - char *info_buf = NULL; - const size_t param_buf_size = 65535; - char *param_buf = (char*)malloc(param_buf_size); - char *param_buf_tmp = NULL; - int param_buf_pos = 0; - int64_t len = 0; - const char *path_config = path_get(RARCH_PATH_CONFIG); - bool info_written = rarch_write_debug_info(); - - debug_filepath[0] = - param_buf[0] = '\0'; - - fill_pathname_resolve_relative( - debug_filepath, - path_config, - DEBUG_INFO_FILENAME, - sizeof(debug_filepath)); - - if (info_written) - filestream_read_file(debug_filepath, (void**)&info_buf, &len); - - if (string_is_empty(info_buf) || len == 0 || !info_written) - { - runloop_msg_queue_push( - msg_hash_to_str(MSG_FAILED_TO_SAVE_DEBUG_INFO), - 2, 180, true, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_ERROR); - goto finish; - } - - RARCH_LOG("%s\n", msg_hash_to_str(MSG_SENDING_DEBUG_INFO)); - - runloop_msg_queue_push( - msg_hash_to_str(MSG_SENDING_DEBUG_INFO), - 2, 180, true, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - - param_buf_pos = (int)strlcpy(param_buf, "info=", param_buf_size); - param_buf_tmp = param_buf + param_buf_pos; - - net_http_urlencode(¶m_buf_tmp, info_buf); - - strlcat(param_buf, param_buf_tmp, param_buf_size - param_buf_pos); - - task_push_http_post_transfer(url, param_buf, true, NULL, send_debug_info_cb, NULL); - -finish: - if (param_buf) - free(param_buf); - if (info_buf) - free(info_buf); -} -#endif - void rarch_log_file_init(void) { char log_directory[PATH_MAX_LENGTH]; From 3f598a0f9cbafbf885dab9e49a4552441c0b2f53 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 25 Jan 2020 15:55:11 +0100 Subject: [PATCH 142/148] Revert "Get rid of send debug info - if we ever bring this back, needs to be" This reverts commit c0482ff2eadfc705b5fdc278cda3cc1841fb8b1a. --- config.def.keybinds.h | 3 + input/input_defines.h | 1 + intl/msg_hash_es.c | 7 + intl/msg_hash_es.h | 36 ++ intl/msg_hash_fr.c | 4 + intl/msg_hash_fr.h | 36 ++ intl/msg_hash_ja.c | 4 + intl/msg_hash_ja.h | 28 ++ intl/msg_hash_ko.c | 4 + intl/msg_hash_ko.h | 36 ++ intl/msg_hash_lbl.h | 2 + intl/msg_hash_pl.h | 7 + intl/msg_hash_pt_br.c | 4 + intl/msg_hash_pt_br.h | 36 ++ intl/msg_hash_tr.c | 4 + intl/msg_hash_tr.h | 36 ++ intl/msg_hash_us.c | 4 + intl/msg_hash_us.h | 36 ++ menu/cbs/menu_cbs_ok.c | 9 + menu/cbs/menu_cbs_sublabel.c | 4 + menu/drivers/ozone/ozone_texture.c | 1 + menu/drivers/xmb.c | 1 + menu/menu_displaylist.c | 6 + menu/widgets/menu_dialog.c | 5 + msg_hash.h | 11 + retroarch.c | 689 +++++++++++++++++++++++++++++ 26 files changed, 1014 insertions(+) diff --git a/config.def.keybinds.h b/config.def.keybinds.h index 7d1900b76b..5271b3a068 100644 --- a/config.def.keybinds.h +++ b/config.def.keybinds.h @@ -88,6 +88,7 @@ static const struct retro_keybind retro_keybinds_1[] = { { true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_FPS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, + { true, RARCH_SEND_DEBUG_INFO, MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_NETPLAY_HOST_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_HOST_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, @@ -169,6 +170,7 @@ static const struct retro_keybind retro_keybinds_1[] = { { true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_FPS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, + { true, RARCH_SEND_DEBUG_INFO, MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_NETPLAY_HOST_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_HOST_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, @@ -250,6 +252,7 @@ static const struct retro_keybind retro_keybinds_1[] = { { true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_F9, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_F12, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_FPS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, RETROK_F3, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, + { true, RARCH_SEND_DEBUG_INFO, MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, RETROK_F10, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_NETPLAY_HOST_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_HOST_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_i, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, { true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE, AXIS_NONE, AXIS_NONE, NULL, NULL }, diff --git a/input/input_defines.h b/input/input_defines.h index 52d47aaa53..edd95037bd 100644 --- a/input/input_defines.h +++ b/input/input_defines.h @@ -98,6 +98,7 @@ enum RARCH_MUTE, RARCH_OSK, RARCH_FPS_TOGGLE, + RARCH_SEND_DEBUG_INFO, RARCH_NETPLAY_HOST_TOGGLE, RARCH_NETPLAY_GAME_WATCH, RARCH_ENABLE_HOTKEY, diff --git a/intl/msg_hash_es.c b/intl/msg_hash_es.c index 7442a1a9f3..722513b7b1 100644 --- a/intl/msg_hash_es.c +++ b/intl/msg_hash_es.c @@ -127,6 +127,13 @@ int menu_hash_get_help_es_enum(enum msg_hash_enums msg, char *s, size_t len) "Muestra o no el contador de fotogramas\n" "por segundo."); break; + case RARCH_SEND_DEBUG_INFO: + snprintf(s, len, + "Envía información de diagnóstico de\n" + "tu dispositivo y la configuración de RetroArch\n" + "a nuestros servidores para su posterior\n" + "análisis."); + break; case RARCH_NETPLAY_HOST_TOGGLE: snprintf(s, len, "Activa o desactiva el servidor de juego en red."); diff --git a/intl/msg_hash_es.h b/intl/msg_hash_es.h index 4eb24a0b38..19b5cb3ef4 100644 --- a/intl/msg_hash_es.h +++ b/intl/msg_hash_es.h @@ -1358,6 +1358,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Avanzar fotograma" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, + "Enviar datos de depuración" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, "Mostrar FPS" @@ -9357,6 +9361,38 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PLAYLIST_FUZZY_ARCHIVE_MATCH, "Al buscar entradas asociadas a archivos comprimidos en las listas de reproducción, solo se buscará una coincidencia en el nombre del archivo, en vez de [nombre de archivo]+[contenido]. Activar para evitar duplicados en el historial al cargar archivos comprimidos." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO, + "Enviar información de depuración" + ) +MSG_HASH( + MSG_FAILED_TO_SAVE_DEBUG_INFO, + "Error al guardar la información de depuración." + ) +MSG_HASH( + MSG_FAILED_TO_SEND_DEBUG_INFO, + "Error al enviar la información de depuración al servidor." + ) +MSG_HASH( + MSG_SENDING_DEBUG_INFO, + "Enviando información de depuración..." + ) +MSG_HASH( + MSG_SENT_DEBUG_INFO, + "Información enviada al servidor. Tu identificador es %u." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO, + "Envía información de diagnóstico sobre tu dispositivo y tu configuración de RetroArch a nuestros servidores para su posterior análisis." + ) +MSG_HASH( + MSG_PRESS_TWO_MORE_TIMES_TO_SEND_DEBUG_INFO, + "Vuelve a pulsar el botón dos veces para enviar la información de diagnóstico al equipo de RetroArch." + ) +MSG_HASH( + MSG_PRESS_ONE_MORE_TIME_TO_SEND_DEBUG_INFO, + "Vuelve a pulsar el botón una última vez para enviar la información de diagnóstico al equipo de RetroArch." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIBRATE_ON_KEYPRESS, "Vibrar al pulsar un botón" diff --git a/intl/msg_hash_fr.c b/intl/msg_hash_fr.c index 425d41bb38..8331f34291 100644 --- a/intl/msg_hash_fr.c +++ b/intl/msg_hash_fr.c @@ -118,6 +118,10 @@ int menu_hash_get_help_fr_enum(enum msg_hash_enums msg, char *s, size_t len) snprintf(s, len, "Afficher/masquer le compteur d'images/s."); break; + case RARCH_SEND_DEBUG_INFO: + snprintf(s, len, + "Envoie des informations de diagnostic sur votre appareil et la configuration de RetroArch à nos serveurs pour analyse."); + break; case RARCH_NETPLAY_HOST_TOGGLE: snprintf(s, len, "Activer/désactiver l'hébergement du jeu en réseau."); diff --git a/intl/msg_hash_fr.h b/intl/msg_hash_fr.h index c261885636..d43cc41437 100644 --- a/intl/msg_hash_fr.h +++ b/intl/msg_hash_fr.h @@ -1358,6 +1358,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Avance image par image" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, + "Envoyer les informations de diagnostic" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, "Afficher/masquer les images/s" @@ -9338,6 +9342,38 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PLAYLIST_FUZZY_ARCHIVE_MATCH, "Lors de la recherche de fichiers compressés dans les listes de lecture, faire correspondre le nom de l'archive uniquement et non [nom]+[contenu]. Activez cette option pour éviter les doublons dans l'historique lors du chargement d'archives." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO, + "Envoyer des informations de diagnostic" + ) +MSG_HASH( + MSG_FAILED_TO_SAVE_DEBUG_INFO, + "Échec d'enregistrement des informations de diagnostic." + ) +MSG_HASH( + MSG_FAILED_TO_SEND_DEBUG_INFO, + "Échec d'envoi des informations de diagnostic au serveur." + ) +MSG_HASH( + MSG_SENDING_DEBUG_INFO, + "Envoi des informations de diagnostic..." + ) +MSG_HASH( + MSG_SENT_DEBUG_INFO, + "Les informations de diagnostic ont été envoyées au serveur avec succès. Votre numéro d'identification est %u." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO, + "Envoyer les informations de diagnostic pour votre appareil et la configuration de RetroArch à nos serveurs pour analyse." + ) +MSG_HASH( + MSG_PRESS_TWO_MORE_TIMES_TO_SEND_DEBUG_INFO, + "Appuyez deux fois de plus pour soumettre les informations de diagnostic à l'équipe de RetroArch." + ) +MSG_HASH( + MSG_PRESS_ONE_MORE_TIME_TO_SEND_DEBUG_INFO, + "Appuyez une fois de plus pour soumettre les informations de diagnostic à l'équipe de RetroArch." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIBRATE_ON_KEYPRESS, "Vibrer à chaque touche pressée" diff --git a/intl/msg_hash_ja.c b/intl/msg_hash_ja.c index d3bd7333c8..4e8d964758 100644 --- a/intl/msg_hash_ja.c +++ b/intl/msg_hash_ja.c @@ -115,6 +115,10 @@ int menu_hash_get_help_jp_enum(enum msg_hash_enums msg, char *s, size_t len) snprintf(s, len, "Toggles frames per second counter."); break; + case RARCH_SEND_DEBUG_INFO: + snprintf(s, len, + "Sends diagnostic info about your device and RetroArch configuration to our servers for analysis."); + break; case RARCH_NETPLAY_HOST_TOGGLE: snprintf(s, len, "Toggles netplay hosting on/off."); diff --git a/intl/msg_hash_ja.h b/intl/msg_hash_ja.h index 3fbe560087..c741366bd1 100644 --- a/intl/msg_hash_ja.h +++ b/intl/msg_hash_ja.h @@ -1292,6 +1292,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "コマ送り" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, + "デバッグ情報の送信" +) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, "FPS表示の切り替え" @@ -8575,6 +8579,30 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_RUNTIME_AGGREGATE, "総計" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO, + "デバッグ情報の送信" +) +MSG_HASH( + MSG_FAILED_TO_SAVE_DEBUG_INFO, + "デバッグ情報の保存に失敗しました。" +) +MSG_HASH( + MSG_FAILED_TO_SEND_DEBUG_INFO, + "デバッグ情報のサーバへの送信に失敗しました。" +) +MSG_HASH( + MSG_SENDING_DEBUG_INFO, + "デバッグ情報の送信中..." +) +MSG_HASH( + MSG_SENT_DEBUG_INFO, + "デバッグ情報のサーバへの送信に成功しました。ID番号は %u です。" +) +MSG_HASH( + MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO, + "解析のため, デバイスとRetroArch設定に関する情報をサーバーに送信します。" +) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIBRATE_ON_KEYPRESS, "キー入力で振動" diff --git a/intl/msg_hash_ko.c b/intl/msg_hash_ko.c index 1cf1cd778f..e6a1f1b8fe 100644 --- a/intl/msg_hash_ko.c +++ b/intl/msg_hash_ko.c @@ -109,6 +109,10 @@ int menu_hash_get_help_ko_enum(enum msg_hash_enums msg, char *s, size_t len) snprintf(s, len, "FPS 표시를 전환합니다."); break; + case RARCH_SEND_DEBUG_INFO: + snprintf(s, len, + "기기 및 RetroArch 설정의 분적 정보를 분석을 위해 서버에 보냅니다."); + break; case RARCH_NETPLAY_HOST_TOGGLE: snprintf(s, len, "넷플레 호스트 켜기/끄기."); diff --git a/intl/msg_hash_ko.h b/intl/msg_hash_ko.h index 3bf2c431d4..774ec24d34 100644 --- a/intl/msg_hash_ko.h +++ b/intl/msg_hash_ko.h @@ -1283,6 +1283,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "다음 프레임" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, + "디버그 정보 보내기" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, "FPS 켜기/끄기" @@ -8975,6 +8979,38 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_RUNTIME_AGGREGATE, "종합" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO, + "디버그 정보 전송" + ) +MSG_HASH( + MSG_FAILED_TO_SAVE_DEBUG_INFO, + "디버그 정보 저장 실패." + ) +MSG_HASH( + MSG_FAILED_TO_SEND_DEBUG_INFO, + "디버그 정보를 서버에 전송하는데 실패했습니다." + ) +MSG_HASH( + MSG_SENDING_DEBUG_INFO, + "디버그 정보 전송 중..." + ) +MSG_HASH( + MSG_SENT_DEBUG_INFO, + "디버그 정보를 성공적으로 서버에 보냈습니다. ID 번호는 %u 입니다." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO, + "장치 및 RetroArch 설정 분석 정보를 분석을 위해 서버로 전송합니다." + ) +MSG_HASH( + MSG_PRESS_TWO_MORE_TIMES_TO_SEND_DEBUG_INFO, + "분석 정보를 RetroArch 팀에게 보내려면 두 번 더 눌러주십시오." + ) +MSG_HASH( + MSG_PRESS_ONE_MORE_TIME_TO_SEND_DEBUG_INFO, + "분석 정보를 RetroArch 팀에게 보내려면 한 번 더 눌러주십시오." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIBRATE_ON_KEYPRESS, "키 누를 때 진동" diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 1f06eeb122..766ba2ebd1 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -2066,6 +2066,8 @@ MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_SUBLABEL_RUNTIME_TYPE, "playlist_sublabel_runtime_type") MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_SUBLABEL_LAST_PLAYED_STYLE, "playlist_sublabel_last_played_style") +MSG_HASH(MENU_ENUM_LABEL_HELP_SEND_DEBUG_INFO, + "help_send_debug_info") MSG_HASH(MENU_ENUM_LABEL_VIBRATE_ON_KEYPRESS, "vibrate_on_keypress") MSG_HASH(MENU_ENUM_LABEL_ENABLE_DEVICE_VIBRATION, diff --git a/intl/msg_hash_pl.h b/intl/msg_hash_pl.h index 2a4787d4c2..902ee65e8e 100644 --- a/intl/msg_hash_pl.h +++ b/intl/msg_hash_pl.h @@ -4031,6 +4031,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE_STEP, "Krok zmiany rozmiaru bufora (MB)" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO, + "Wyślij informacje o debugowaniu" + ) #ifdef HAVE_LAKKA MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH, @@ -4547,6 +4551,9 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SHOW_WIMP, MSG_HASH(MENU_ENUM_SUBLABEL_SHOW_WIMP, "Otwiera menu pulpitu, jeśli jest zamknięte." ) +MSG_HASH(MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO, + "Wysyła informacje diagnostyczne o twoim urządzeniu i konfiguracji RetroArch na nasze serwery w celu analizy." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SOUNDS, "Dźwięki menu" diff --git a/intl/msg_hash_pt_br.c b/intl/msg_hash_pt_br.c index b098cf32fa..7fa271c066 100644 --- a/intl/msg_hash_pt_br.c +++ b/intl/msg_hash_pt_br.c @@ -116,6 +116,10 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len) snprintf(s, len, "Alternar contador de quadros por segundo."); break; + case RARCH_SEND_DEBUG_INFO: + snprintf(s, len, + "Envia informações de diagnóstico sobre o seu dispositivo e a configuração do RetroArch aos nossos servidores para análise."); + break; case RARCH_NETPLAY_HOST_TOGGLE: snprintf(s, len, "Ativar ou desativar a hospedagem de jogo em rede."); diff --git a/intl/msg_hash_pt_br.h b/intl/msg_hash_pt_br.h index 227b8643b5..f23b669678 100644 --- a/intl/msg_hash_pt_br.h +++ b/intl/msg_hash_pt_br.h @@ -1302,6 +1302,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Avanço de Quadro" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, + "Enviar informações de depuração" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, "Alternar FPS" @@ -9218,6 +9222,38 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PLAYLIST_FUZZY_ARCHIVE_MATCH, "Ao pesquisar as listas de reprodução de entradas associadas a arquivos compactados, corresponde apenas ao nome do arquivo morto em vez de [nome do arquivo]+[conteúdo]. Habilite isso para evitar entradas de histórico de conteúdo duplicadas ao carregar arquivos compactados." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO, + "Enviar Informação de Depuração" + ) +MSG_HASH( + MSG_FAILED_TO_SAVE_DEBUG_INFO, + "Falha ao salvar informações de depuração." + ) +MSG_HASH( + MSG_FAILED_TO_SEND_DEBUG_INFO, + "Falha ao enviar informações de depuração para o servidor." + ) +MSG_HASH( + MSG_SENDING_DEBUG_INFO, + "Enviando informações de depuração..." + ) +MSG_HASH( + MSG_SENT_DEBUG_INFO, + "Enviado informações de depuração para o servidor com sucesso. Seu ID é o número %u." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO, + "Envia informações de diagnóstico sobre o seu dispositivo e a configuração do RetroArch aos nossos servidores para análise." + ) +MSG_HASH( + MSG_PRESS_TWO_MORE_TIMES_TO_SEND_DEBUG_INFO, + "Pressione mais duas vezes para enviar informações de diagnóstico para a equipe do RetroArch." + ) +MSG_HASH( + MSG_PRESS_ONE_MORE_TIME_TO_SEND_DEBUG_INFO, + "Pressione mais uma vez para enviar informações de diagnóstico para a equipe do RetroArch." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIBRATE_ON_KEYPRESS, "Vibrar ao Pressionar a Tecla" diff --git a/intl/msg_hash_tr.c b/intl/msg_hash_tr.c index ac4c37f5b1..1b51dd7b1f 100644 --- a/intl/msg_hash_tr.c +++ b/intl/msg_hash_tr.c @@ -116,6 +116,10 @@ int menu_hash_get_help_tr_enum(enum msg_hash_enums msg, char *s, size_t len) snprintf(s, len, "Saniye sayacındaki kareleri değiştirir."); break; + case RARCH_SEND_DEBUG_INFO: + snprintf(s, len, + "Analiz için cihazınızın ve RetroArch yapılandırmasına ilişkin tanılama bilgilerini sunucularımıza gönderin."); + break; case RARCH_NETPLAY_HOST_TOGGLE: snprintf(s, len, "Netplay barındırma özelliğini açar/kapatır."); diff --git a/intl/msg_hash_tr.h b/intl/msg_hash_tr.h index e91e05e357..47a6755e05 100644 --- a/intl/msg_hash_tr.h +++ b/intl/msg_hash_tr.h @@ -1279,6 +1279,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Frameadvance" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, + "Hata Ayıklama Bilgisi Gönder" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, "FPS açma-kapama" @@ -8752,6 +8756,38 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_RUNTIME_AGGREGATE, "Toplam" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO, + "Hata Ayıklama Bilgisi Gönder" + ) +MSG_HASH( + MSG_FAILED_TO_SAVE_DEBUG_INFO, + "Hata ayıklama bilgisi kaydedilemedi." + ) +MSG_HASH( + MSG_FAILED_TO_SEND_DEBUG_INFO, + "Sunucuya hata ayıklama bilgisi gönderilemedi." + ) +MSG_HASH( + MSG_SENDING_DEBUG_INFO, + "Hata ayıklama bilgisi gönderiliyor..." + ) +MSG_HASH( + MSG_SENT_DEBUG_INFO, + "Sunucuya hata ayıklama bilgisi başarıyla gönderildi. Kimlik numaranız %u." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO, + "Analiz için cihazların ve RetroArch yapılandırmasına ilişkin teşhis bilgilerini gönderir." + ) +MSG_HASH( + MSG_PRESS_TWO_MORE_TIMES_TO_SEND_DEBUG_INFO, + "RetroArch ekibine tanılama bilgileri göndermek için iki kez daha basın." + ) +MSG_HASH( + MSG_PRESS_ONE_MORE_TIME_TO_SEND_DEBUG_INFO, + "RetroArch ekibine tanılama bilgileri göndermek için bir kez daha basın." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIBRATE_ON_KEYPRESS, "Tuşa Basınca titret" diff --git a/intl/msg_hash_us.c b/intl/msg_hash_us.c index d5abf3a67f..e74180ace1 100644 --- a/intl/msg_hash_us.c +++ b/intl/msg_hash_us.c @@ -108,6 +108,10 @@ int menu_hash_get_help_us_enum(enum msg_hash_enums msg, char *s, size_t len) snprintf(s, len, "Toggles frames per second counter."); break; + case RARCH_SEND_DEBUG_INFO: + snprintf(s, len, + "Sends diagnostic info about your device and RetroArch configuration to our servers for analysis."); + break; case RARCH_NETPLAY_HOST_TOGGLE: snprintf(s, len, "Toggles netplay hosting on/off."); diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 78bdce1abf..5aaddcd2d9 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -1386,6 +1386,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Frameadvance" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, + "Send Debug Info" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, "FPS toggle" @@ -9434,6 +9438,38 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PLAYLIST_FUZZY_ARCHIVE_MATCH, "When searching playlists for entries associated with compressed files, match only the archive file name instead of [file name]+[content]. Enable this to avoid duplicate content history entries when loading compressed files." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO, + "Send Debug Info" + ) +MSG_HASH( + MSG_FAILED_TO_SAVE_DEBUG_INFO, + "Failed to save debug info." + ) +MSG_HASH( + MSG_FAILED_TO_SEND_DEBUG_INFO, + "Failed to send debug info to server." + ) +MSG_HASH( + MSG_SENDING_DEBUG_INFO, + "Sending debug info..." + ) +MSG_HASH( + MSG_SENT_DEBUG_INFO, + "Sent debug info to server successfully. Your ID number is %u." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO, + "Sends diagnostic info about your device and RetroArch configuration to our servers for analysis." + ) +MSG_HASH( + MSG_PRESS_TWO_MORE_TIMES_TO_SEND_DEBUG_INFO, + "Press two more times to submit diagnostic info to the RetroArch team." + ) +MSG_HASH( + MSG_PRESS_ONE_MORE_TIME_TO_SEND_DEBUG_INFO, + "Press one more time to submit diagnostic info to the RetroArch team." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIBRATE_ON_KEYPRESS, "Vibrate on key press" diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 7edca8c465..4881271f60 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -5960,6 +5960,12 @@ static int (funcname)(const char *path, const char *label, unsigned type, size_t return generic_action_ok_help(path, label, type, idx, entry_idx, _id, _id2); \ } +static int action_ok_help_send_debug_info(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + command_event(CMD_EVENT_SEND_DEBUG_INFO, NULL); + return 0; +} + default_action_ok_help(action_ok_help_audio_video_troubleshooting, MENU_ENUM_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING, MENU_DIALOG_HELP_AUDIO_VIDEO_TROUBLESHOOTING) default_action_ok_help(action_ok_help, MENU_ENUM_LABEL_HELP, MENU_DIALOG_WELCOME) default_action_ok_help(action_ok_help_controls, MENU_ENUM_LABEL_HELP_CONTROLS, MENU_DIALOG_HELP_CONTROLS) @@ -6640,6 +6646,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING: BIND_ACTION_OK(cbs, action_ok_help_audio_video_troubleshooting); break; + case MENU_ENUM_LABEL_HELP_SEND_DEBUG_INFO: + BIND_ACTION_OK(cbs, action_ok_help_send_debug_info); + break; case MENU_ENUM_LABEL_HELP_SCANNING_CONTENT: BIND_ACTION_OK(cbs, action_ok_help_scanning_content); break; diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index ae5345063f..015bef33a5 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -733,6 +733,7 @@ default_sublabel_macro(action_bind_sublabel_menu_rgui_full_width_layout, default_sublabel_macro(action_bind_sublabel_menu_rgui_extended_ascii, MENU_ENUM_SUBLABEL_MENU_RGUI_EXTENDED_ASCII) default_sublabel_macro(action_bind_sublabel_thumbnails_updater_list, MENU_ENUM_SUBLABEL_THUMBNAILS_UPDATER_LIST) default_sublabel_macro(action_bind_sublabel_pl_thumbnails_updater_list, MENU_ENUM_SUBLABEL_PL_THUMBNAILS_UPDATER_LIST) +default_sublabel_macro(action_bind_sublabel_help_send_debug_info, MENU_ENUM_SUBLABEL_HELP_SEND_DEBUG_INFO) default_sublabel_macro(action_bind_sublabel_rdb_entry_detail, MENU_ENUM_SUBLABEL_RDB_ENTRY_DETAIL) default_sublabel_macro(action_bind_sublabel_manual_content_scan_list, MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_LIST) default_sublabel_macro(action_bind_sublabel_manual_content_scan_dir, MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_DIR) @@ -3134,6 +3135,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_PL_THUMBNAILS_UPDATER_LIST: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_pl_thumbnails_updater_list); break; + case MENU_ENUM_LABEL_HELP_SEND_DEBUG_INFO: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_help_send_debug_info); + break; case MENU_ENUM_LABEL_RDB_ENTRY_DETAIL: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_rdb_entry_detail); break; diff --git a/menu/drivers/ozone/ozone_texture.c b/menu/drivers/ozone/ozone_texture.c index e69e33c19d..7bb6d281cf 100644 --- a/menu/drivers/ozone/ozone_texture.c +++ b/menu/drivers/ozone/ozone_texture.c @@ -163,6 +163,7 @@ menu_texture_item ozone_entries_icon_get_texture(ozone_handle_t *ozone, case MENU_ENUM_LABEL_HELP_WHAT_IS_A_CORE: case MENU_ENUM_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD: case MENU_ENUM_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING: + case MENU_ENUM_LABEL_HELP_SEND_DEBUG_INFO: return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_HELP]; case MENU_ENUM_LABEL_QUIT_RETROARCH: case MENU_ENUM_LABEL_BLOCK_SRAM_OVERWRITE: diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 3f4659f17d..15da4b7e7e 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -2452,6 +2452,7 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb, case MENU_ENUM_LABEL_HELP_WHAT_IS_A_CORE: case MENU_ENUM_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD: case MENU_ENUM_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING: + case MENU_ENUM_LABEL_HELP_SEND_DEBUG_INFO: return xmb->textures.list[XMB_TEXTURE_HELP]; case MENU_ENUM_LABEL_QUIT_RETROARCH: case MENU_ENUM_LABEL_BLOCK_SRAM_OVERWRITE: diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index bd9b27c23c..8a233614e0 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -4414,6 +4414,12 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct MENU_ENUM_LABEL_HELP_CONTROLS, 0, 0, 0)) count++; + if (menu_entries_append_enum(list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO), + msg_hash_to_str(MENU_ENUM_LABEL_HELP_SEND_DEBUG_INFO), + MENU_ENUM_LABEL_HELP_SEND_DEBUG_INFO, + 0, 0, 0)) + count++; break; case DISPLAYLIST_AUDIO_RESAMPLER_SETTINGS_LIST: if (menu_displaylist_parse_settings_enum(list, diff --git a/menu/widgets/menu_dialog.c b/menu/widgets/menu_dialog.c index c5657cb3f4..636caa970d 100644 --- a/menu/widgets/menu_dialog.c +++ b/menu/widgets/menu_dialog.c @@ -197,6 +197,11 @@ int menu_dialog_iterate(char *s, size_t len, const char *label) MENU_ENUM_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC, s, len); break; + case MENU_DIALOG_HELP_SEND_DEBUG_INFO: + menu_hash_get_help_enum( + MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO_DESC, + s, len); + break; case MENU_DIALOG_HELP_SCANNING_CONTENT: menu_hash_get_help_enum(MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC, s, len); diff --git a/msg_hash.h b/msg_hash.h index 17a37d11f6..4f0be461a4 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -806,6 +806,7 @@ enum msg_hash_enums MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, + MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_HOST_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, @@ -2707,6 +2708,16 @@ enum msg_hash_enums MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_LAST_PLAYED_STYLE_DM_HM_AM_PM, MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_LAST_PLAYED_STYLE_MD_HM_AM_PM, + MENU_LABEL(HELP_SEND_DEBUG_INFO), + MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO_DESC, + + MSG_FAILED_TO_SAVE_DEBUG_INFO, + MSG_FAILED_TO_SEND_DEBUG_INFO, + MSG_SENDING_DEBUG_INFO, + MSG_SENT_DEBUG_INFO, + MSG_PRESS_TWO_MORE_TIMES_TO_SEND_DEBUG_INFO, + MSG_PRESS_ONE_MORE_TIME_TO_SEND_DEBUG_INFO, + MENU_LABEL(VIBRATE_ON_KEYPRESS), MENU_LABEL(ENABLE_DEVICE_VIBRATION), MENU_LABEL(VIDEO_GPU_INDEX), diff --git a/retroarch.c b/retroarch.c index 17536d3c88..426772a3d7 100644 --- a/retroarch.c +++ b/retroarch.c @@ -974,6 +974,8 @@ static const camera_driver_t *camera_drivers[] = { #define QUIT_DELAY_USEC 3 * 1000000 /* 3 seconds */ +#define DEBUG_INFO_FILENAME "debug_info.txt" + /* Descriptive names for options without short variant. * * Please keep the name in sync with the option name. @@ -3412,6 +3414,7 @@ const struct input_bind_map input_config_bind_map[RARCH_BIND_LIST_END_NULL] = { DECLARE_META_BIND(2, audio_mute, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE), DECLARE_META_BIND(2, osk_toggle, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK), DECLARE_META_BIND(2, fps_toggle, RARCH_FPS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE), + DECLARE_META_BIND(2, send_debug_info, RARCH_SEND_DEBUG_INFO, MENU_ENUM_LABEL_VALUE_INPUT_META_SEND_DEBUG_INFO), DECLARE_META_BIND(2, netplay_host_toggle, RARCH_NETPLAY_HOST_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_HOST_TOGGLE), DECLARE_META_BIND(2, netplay_game_watch, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH), DECLARE_META_BIND(2, enable_hotkey, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY), @@ -3569,6 +3572,9 @@ static void core_free_retro_game_info(struct retro_game_info *dest); static bool core_load(unsigned poll_type_behavior); static bool core_unload_game(void); +#ifdef HAVE_NETWORKING +static void rarch_send_debug_info(void); +#endif static bool rarch_environment_cb(unsigned cmd, void *data); static bool driver_location_get_position(double *lat, double *lon, @@ -3781,6 +3787,7 @@ static const struct cmd_map map[] = { { "MUTE", RARCH_MUTE }, { "OSK", RARCH_OSK }, { "FPS_TOGGLE", RARCH_FPS_TOGGLE }, + { "SEND_DEBUG_INFO", RARCH_SEND_DEBUG_INFO }, { "NETPLAY_HOST_TOGGLE", RARCH_NETPLAY_HOST_TOGGLE }, { "NETPLAY_GAME_WATCH", RARCH_NETPLAY_GAME_WATCH }, { "VOLUME_UP", RARCH_VOLUME_UP }, @@ -6742,6 +6749,11 @@ TODO: Add a setting for these tweaks */ runloop_msg_queue_push(msg, 1, 180, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); } break; + case CMD_EVENT_SEND_DEBUG_INFO: +#ifdef HAVE_NETWORKING + rarch_send_debug_info(); +#endif + break; case CMD_EVENT_FPS_TOGGLE: { settings_t *settings = configuration_settings; @@ -14993,6 +15005,7 @@ static void menu_input_pointer_close_messagebox(void) string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_HELP_SCANNING_CONTENT)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING)) || + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_HELP_SEND_DEBUG_INFO)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEEVOS_DESCRIPTION))) { /* Have to set this to false, apparently... @@ -15755,6 +15768,7 @@ static void input_menu_keys_pressed(input_bits_t *p_new_state, {RETROK_DELETE, RETRO_DEVICE_ID_JOYPAD_Y }, {0, RARCH_UI_COMPANION_TOGGLE }, {0, RARCH_FPS_TOGGLE }, + {0, RARCH_SEND_DEBUG_INFO }, {0, RARCH_NETPLAY_HOST_TOGGLE }, {0, RARCH_MENU_TOGGLE }, }; @@ -15763,6 +15777,7 @@ static void input_menu_keys_pressed(input_bits_t *p_new_state, ids[10][0] = input_config_binds[0][RARCH_FULLSCREEN_TOGGLE_KEY].key; ids[14][0] = input_config_binds[0][RARCH_UI_COMPANION_TOGGLE].key; ids[15][0] = input_config_binds[0][RARCH_FPS_TOGGLE].key; + ids[16][0] = input_config_binds[0][RARCH_SEND_DEBUG_INFO].key; ids[17][0] = input_config_binds[0][RARCH_NETPLAY_HOST_TOGGLE].key; ids[18][0] = input_config_binds[0][RARCH_MENU_TOGGLE].key; @@ -27194,6 +27209,61 @@ static enum runloop_state runloop_check_state(void) old_pressed = pressed; } + /* Check if we have pressed the "send debug info" button. + * Must press 3 times in a row to activate, but it will + * alert the user of this with each press of the hotkey. */ + { + int any_i; + static uint32_t debug_seq = 0; + static bool old_pressed = false; + static bool old_any_pressed = false; + bool any_pressed = false; + bool pressed = BIT256_GET(current_bits, RARCH_SEND_DEBUG_INFO); + + for (any_i = 0; any_i < ARRAY_SIZE(current_bits.data); any_i++) + { + if (current_bits.data[any_i]) + { + any_pressed = true; + break; + } + } + + if (pressed && !old_pressed) + debug_seq |= pressed ? 1 : 0; + + switch (debug_seq) + { + case 1: /* pressed hotkey one time */ + runloop_msg_queue_push( + msg_hash_to_str(MSG_PRESS_TWO_MORE_TIMES_TO_SEND_DEBUG_INFO), + 2, 180, true, + NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + break; + case 3: /* pressed hotkey two times */ + runloop_msg_queue_push( + msg_hash_to_str(MSG_PRESS_ONE_MORE_TIME_TO_SEND_DEBUG_INFO), + 2, 180, true, + NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + break; + case 7: /* pressed hotkey third and final time */ + debug_seq = 0; + command_event(CMD_EVENT_SEND_DEBUG_INFO, NULL); + break; + } + + if (any_pressed && !old_any_pressed) + { + debug_seq <<= 1; + + if (debug_seq > 7) + debug_seq = 0; + } + + old_pressed = pressed; + old_any_pressed = any_pressed; + } + /* Check if we have pressed the FPS toggle button */ HOTKEY_CHECK(RARCH_FPS_TOGGLE, CMD_EVENT_FPS_TOGGLE, true, NULL); @@ -27881,6 +27951,625 @@ void rarch_get_cpu_architecture_string(char *cpu_arch_str, size_t len) } } +#ifdef HAVE_NETWORKING +static bool rarch_write_debug_info(void) +{ + int i; + char str[PATH_MAX_LENGTH]; + char debug_filepath[PATH_MAX_LENGTH]; + gfx_ctx_mode_t mode_info = {0}; + settings_t *settings = configuration_settings; + RFILE *file = NULL; + const frontend_ctx_driver_t *frontend = frontend_get_ptr(); + const char *cpu_model = NULL; + const char *path_config = path_get(RARCH_PATH_CONFIG); + unsigned lang = + *msg_hash_get_uint(MSG_HASH_USER_LANGUAGE); + + str[0] = + debug_filepath[0] = '\0'; + + /* Only print our debug info in English */ + if (lang != RETRO_LANGUAGE_ENGLISH) + msg_hash_set_uint(MSG_HASH_USER_LANGUAGE, RETRO_LANGUAGE_ENGLISH); + + fill_pathname_resolve_relative( + debug_filepath, + path_config, + DEBUG_INFO_FILENAME, + sizeof(debug_filepath)); + + file = filestream_open(debug_filepath, + RETRO_VFS_FILE_ACCESS_WRITE, RETRO_VFS_FILE_ACCESS_HINT_NONE); + + if (!file) + { + RARCH_ERR("Could not open debug info file for writing: %s\n", debug_filepath); + goto error; + } + +#ifdef HAVE_MENU + { + time_t time_; + char timedate[255]; + + timedate[0] = '\0'; + + time(&time_); + + setlocale(LC_TIME, ""); + + strftime(timedate, sizeof(timedate), + "%Y-%m-%d %H:%M:%S", localtime(&time_)); + + filestream_printf(file, "Log Date/Time: %s\n", timedate); + } +#endif + filestream_printf(file, "RetroArch Version: %s\n", PACKAGE_VERSION); + +#ifdef HAVE_LAKKA + if (frontend->get_lakka_version) + { + frontend->get_lakka_version(str, sizeof(str)); + filestream_printf(file, "Lakka Version: %s\n", str); + str[0] = '\0'; + } +#endif + + filestream_printf(file, "RetroArch Build Date: %s\n", __DATE__); +#ifdef HAVE_GIT_VERSION + filestream_printf(file, "RetroArch Git Commit: %s\n", retroarch_git_version); +#endif + + filestream_printf(file, "\n"); + + cpu_model = frontend_driver_get_cpu_model_name(); + + if (!string_is_empty(cpu_model)) + filestream_printf(file, "CPU Model Name: %s\n", cpu_model); + + retroarch_get_capabilities(RARCH_CAPABILITIES_CPU, str, sizeof(str)); + filestream_printf(file, "CPU Capabilities: %s\n", str); + + str[0] = '\0'; + + rarch_get_cpu_architecture_string(str, sizeof(str)); + + filestream_printf(file, "CPU Architecture: %s\n", str); + filestream_printf(file, "CPU Cores: %u\n", cpu_features_get_core_amount()); + + { + uint64_t memory_free = frontend_driver_get_free_memory(); + uint64_t memory_total = frontend_driver_get_total_memory(); + + filestream_printf(file, "Memory: %" PRIu64 "/%" PRIu64 " MB\n", memory_free / 1024 / 1024, memory_total / 1024 / 1024); + } + + filestream_printf(file, "GPU Device: %s\n", !string_is_empty(video_driver_get_gpu_device_string()) ? + video_driver_get_gpu_device_string() : "n/a"); + filestream_printf(file, "GPU API/Driver Version: %s\n", !string_is_empty(video_driver_get_gpu_api_version_string()) ? + video_driver_get_gpu_api_version_string() : "n/a"); + + filestream_printf(file, "\n"); + + video_context_driver_get_video_size(&mode_info); + + filestream_printf(file, "Window Resolution: %u x %u\n", mode_info.width, mode_info.height); + + { + float width = 0, height = 0, refresh = 0.0f; + gfx_ctx_metrics_t metrics; + + metrics.type = DISPLAY_METRIC_PIXEL_WIDTH; + metrics.value = &width; + + video_context_driver_get_metrics(&metrics); + + metrics.type = DISPLAY_METRIC_PIXEL_HEIGHT; + metrics.value = &height; + video_context_driver_get_metrics(&metrics); + + video_context_driver_get_refresh_rate(&refresh); + + filestream_printf(file, "Monitor Resolution: %d x %d @ %.2f Hz (configured for %.2f Hz)\n", (int)width, (int)height, refresh, settings->floats.video_refresh_rate); + } + + filestream_printf(file, "\n"); + + str[0] = '\0'; + + retroarch_get_capabilities(RARCH_CAPABILITIES_COMPILER, str, sizeof(str)); + filestream_printf(file, "%s\n", str); + + str[0] = '\0'; + + filestream_printf(file, "Frontend Identifier: %s\n", frontend->ident); + + if (frontend->get_name) + { + frontend->get_name(str, sizeof(str)); + filestream_printf(file, "Frontend Name: %s\n", str); + str[0] = '\0'; + } + + if (frontend->get_os) + { + int major = 0, minor = 0; + const char *warning = ""; + + frontend->get_os(str, sizeof(str), &major, &minor); + + if (strstr(str, "Build 16299")) + warning = " (WARNING: Fall Creator's Update detected... OpenGL performance may be low)"; + + filestream_printf(file, "Frontend OS: %s (v%d.%d)%s\n", str, major, minor, warning); + + str[0] = '\0'; + } + + filestream_printf(file, "\n"); + filestream_printf(file, "Input Devices (autoconfig is %s):\n", settings->bools.input_autodetect_enable ? "enabled" : "disabled"); + + for (i = 0; i < 4; i++) + { + if (input_is_autoconfigured(i)) + { + unsigned retro_id; + unsigned rebind = 0; + unsigned device = settings->uints.input_libretro_device[i]; + + device &= RETRO_DEVICE_MASK; + + if (device == RETRO_DEVICE_JOYPAD || device == RETRO_DEVICE_ANALOG) + { + for (retro_id = 0; retro_id < RARCH_ANALOG_BIND_LIST_END; retro_id++) + { + char descriptor[300]; + const struct retro_keybind *keybind = &input_config_binds[i][retro_id]; + const struct retro_keybind *auto_bind = (const struct retro_keybind*) + input_config_get_bind_auto(i, retro_id); + + input_config_get_bind_string(descriptor, + keybind, auto_bind, sizeof(descriptor)); + + if (!strstr(descriptor, "Auto") + && auto_bind + && !auto_bind->valid + && (auto_bind->joykey != 0xFFFF) + && !string_is_empty(auto_bind->joykey_label)) + rebind++; + } + } + + if (rebind) + filestream_printf(file, " - Port #%d autoconfigured (WARNING: %u keys rebinded):\n", i, rebind); + else + filestream_printf(file, " - Port #%d autoconfigured:\n", i); + + filestream_printf(file, " - Device name: %s (#%d)\n", + input_config_get_device_name(i), + input_autoconfigure_get_device_name_index(i)); + filestream_printf(file, " - Display name: %s\n", + input_config_get_device_display_name(i) ? + input_config_get_device_display_name(i) : "N/A"); + filestream_printf(file, " - Config path: %s\n", + input_config_get_device_display_name(i) ? + input_config_get_device_config_path(i) : "N/A"); + filestream_printf(file, " - VID/PID: %d/%d (0x%04X/0x%04X)\n", + input_config_get_vid(i), input_config_get_pid(i), + input_config_get_vid(i), input_config_get_pid(i)); + } + else + filestream_printf(file, " - Port #%d not autoconfigured\n", i); + } + + filestream_printf(file, "\n"); + + filestream_printf(file, "Drivers:\n"); + + { + gfx_ctx_ident_t ident_info = {0}; + input_driver_t *input_driver = NULL; + const input_device_driver_t *joypad_driver = NULL; + const char *driver = NULL; +#ifdef HAVE_MENU + driver = menu_driver_ident(); + + if (string_is_equal(driver, settings->arrays.menu_driver)) + filestream_printf(file, " - Menu: %s\n", + !string_is_empty(driver) ? driver : "n/a"); + else + filestream_printf(file, " - Menu: %s (configured for %s)\n", + !string_is_empty(driver) + ? driver + : "n/a", + !string_is_empty(settings->arrays.menu_driver) + ? settings->arrays.menu_driver + : "n/a"); +#endif + driver = video_driver_get_ident(); + + if (string_is_equal(driver, settings->arrays.video_driver)) + filestream_printf(file, " - Video: %s\n", + !string_is_empty(driver) + ? driver + : "n/a"); + else + filestream_printf(file, " - Video: %s (configured for %s)\n", + !string_is_empty(driver) + ? driver + : "n/a", + !string_is_empty(settings->arrays.video_driver) + ? settings->arrays.video_driver + : "n/a"); + + video_context_driver_get_ident(&ident_info); + filestream_printf(file, " - Video Context: %s\n", + ident_info.ident ? ident_info.ident : "n/a"); + + driver = NULL; + if (current_audio) + driver = current_audio->ident; + + if (string_is_equal(driver, settings->arrays.audio_driver)) + filestream_printf(file, " - Audio: %s\n", + !string_is_empty(driver) ? driver : "n/a"); + else + filestream_printf(file, " - Audio: %s (configured for %s)\n", + !string_is_empty(driver) ? driver : "n/a", + !string_is_empty(settings->arrays.audio_driver) ? settings->arrays.audio_driver : "n/a"); + + input_driver = current_input; + + if (input_driver && string_is_equal(input_driver->ident, settings->arrays.input_driver)) + filestream_printf(file, " - Input: %s\n", !string_is_empty(input_driver->ident) ? input_driver->ident : "n/a"); + else + filestream_printf(file, " - Input: %s (configured for %s)\n", !string_is_empty(input_driver->ident) ? input_driver->ident : "n/a", !string_is_empty(settings->arrays.input_driver) ? settings->arrays.input_driver : "n/a"); + + joypad_driver = (input_driver->get_joypad_driver ? input_driver->get_joypad_driver(current_input_data) : NULL); + + if (joypad_driver && string_is_equal(joypad_driver->ident, settings->arrays.input_joypad_driver)) + filestream_printf(file, " - Joypad: %s\n", !string_is_empty(joypad_driver->ident) ? joypad_driver->ident : "n/a"); + else + filestream_printf(file, " - Joypad: %s (configured for %s)\n", !string_is_empty(joypad_driver->ident) ? joypad_driver->ident : "n/a", !string_is_empty(settings->arrays.input_joypad_driver) ? settings->arrays.input_joypad_driver : "n/a"); + } + + filestream_printf(file, "\n"); + + filestream_printf(file, "Configuration related settings:\n"); + filestream_printf(file, " - Save on exit: %s\n", settings->bools.config_save_on_exit ? "yes" : "no"); + filestream_printf(file, " - Load content-specific core options automatically: %s\n", settings->bools.game_specific_options ? "yes" : "no"); + filestream_printf(file, " - Load override files automatically: %s\n", settings->bools.auto_overrides_enable ? "yes" : "no"); + filestream_printf(file, " - Load remap files automatically: %s\n", settings->bools.auto_remaps_enable ? "yes" : "no"); + filestream_printf(file, " - Sort saves in folders: %s\n", settings->bools.sort_savefiles_enable ? "yes" : "no"); + filestream_printf(file, " - Sort states in folders: %s\n", settings->bools.sort_savestates_enable ? "yes" : "no"); + filestream_printf(file, " - Write saves in content dir: %s\n", settings->bools.savefiles_in_content_dir ? "yes" : "no"); + filestream_printf(file, " - Write savestates in content dir: %s\n", settings->bools.savestates_in_content_dir ? "yes" : "no"); + + filestream_printf(file, "\n"); + + filestream_printf(file, "Auto load state: %s\n", settings->bools.savestate_auto_load ? "yes (WARNING: not compatible with all cores)" : "no"); + filestream_printf(file, "Auto save state: %s\n", settings->bools.savestate_auto_save ? "yes" : "no"); + + filestream_printf(file, "\n"); + + filestream_printf(file, "Buildbot cores URL: %s\n", settings->paths.network_buildbot_url); + filestream_printf(file, "Auto-extract downloaded archives: %s\n", settings->bools.network_buildbot_auto_extract_archive ? "yes" : "no"); + + { + size_t count = 0; + core_info_list_t *core_info_list = NULL; + struct string_list *list = NULL; + const char *ext = ".rdb"; + + /* remove dot */ + if (!string_is_empty(ext) && ext[0] == '.' && strlen(ext) > 1) + ext++; + + core_info_get_list(&core_info_list); + + if (core_info_list) + count = core_info_list->count; + + filestream_printf(file, "Core info: %u entries\n", count); + + count = 0; + + list = dir_list_new(settings->paths.path_content_database, ext, false, true, false, true); + + if (list) + { + count = list->size; + string_list_free(list); + } + + filestream_printf(file, "Databases: %u entries\n", count); + } + + filestream_printf(file, "\n"); + + filestream_printf(file, "Performance and latency-sensitive features (may have a large impact depending on the core):\n"); + filestream_printf(file, " - Video:\n"); + filestream_printf(file, " - Runahead: %s\n", settings->bools.run_ahead_enabled ? "yes (WARNING: not compatible with all cores)" : "no"); + filestream_printf(file, " - Rewind: %s\n", settings->bools.rewind_enable ? "yes (WARNING: not compatible with all cores)" : "no"); + filestream_printf(file, " - Hard GPU Sync: %s\n", settings->bools.video_hard_sync ? "yes" : "no"); + filestream_printf(file, " - Frame Delay: %u frames\n", settings->uints.video_frame_delay); + filestream_printf(file, " - Max Swapchain Images: %u\n", settings->uints.video_max_swapchain_images); + filestream_printf(file, " - Max Run Speed: %.1f x\n", settings->floats.fastforward_ratio); + filestream_printf(file, " - Sync to exact content framerate: %s\n", settings->bools.vrr_runloop_enable ? "yes (note: designed for G-Sync/FreeSync displays only)" : "no"); + filestream_printf(file, " - Fullscreen: %s\n", settings->bools.video_fullscreen ? "yes" : "no"); + filestream_printf(file, " - Windowed Fullscreen: %s\n", settings->bools.video_windowed_fullscreen ? "yes" : "no"); + filestream_printf(file, " - Threaded Video: %s\n", settings->bools.video_threaded ? "yes" : "no"); + filestream_printf(file, " - Vsync: %s\n", settings->bools.video_vsync ? "yes" : "no"); + filestream_printf(file, " - Vsync Swap Interval: %u frames\n", settings->uints.video_swap_interval); + filestream_printf(file, " - Black Frame Insertion: %s\n", settings->bools.video_black_frame_insertion ? "yes" : "no"); + filestream_printf(file, " - Bilinear Filtering: %s\n", settings->bools.video_smooth ? "yes" : "no"); + filestream_printf(file, " - Video CPU Filter: %s\n", !string_is_empty(settings->paths.path_softfilter_plugin) ? settings->paths.path_softfilter_plugin : "n/a"); + filestream_printf(file, " - CRT SwitchRes: %s\n", (settings->uints.crt_switch_resolution > CRT_SWITCH_NONE) ? "yes" : "no"); + filestream_printf(file, " - Video Shared Context: %s\n", settings->bools.video_shared_context ? "yes" : "no"); + +#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_SLANG) || defined(HAVE_HLSL) + { + video_shader_ctx_t shader_info = {0}; + + video_shader_driver_get_current_shader(&shader_info); + + if (shader_info.data) + { + if (string_is_equal(shader_info.data->path, runtime_shader_preset)) + filestream_printf(file, " - Video Shader: %s\n", !string_is_empty(runtime_shader_preset) ? runtime_shader_preset : "n/a"); + else + filestream_printf(file, " - Video Shader: %s (configured for %s)\n", !string_is_empty(shader_info.data->path) ? shader_info.data->path : "n/a", !string_is_empty(runtime_shader_preset) ? runtime_shader_preset : "n/a"); + } + else + filestream_printf(file, " - Video Shader: n/a\n"); + } +#endif + + filestream_printf(file, " - Audio:\n"); + filestream_printf(file, " - Audio Enabled: %s\n", settings->bools.audio_enable ? "yes" : "no (WARNING: content framerate will be incorrect)"); + filestream_printf(file, " - Audio Sync: %s\n", settings->bools.audio_sync ? "yes" : "no (WARNING: content framerate will be incorrect)"); + + { + const char *s = NULL; + + switch (settings->uints.audio_resampler_quality) + { + case RESAMPLER_QUALITY_DONTCARE: + s = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DONT_CARE); + break; + case RESAMPLER_QUALITY_LOWEST: + s = msg_hash_to_str(MSG_RESAMPLER_QUALITY_LOWEST); + break; + case RESAMPLER_QUALITY_LOWER: + s = msg_hash_to_str(MSG_RESAMPLER_QUALITY_LOWER); + break; + case RESAMPLER_QUALITY_HIGHER: + s = msg_hash_to_str(MSG_RESAMPLER_QUALITY_HIGHER); + break; + case RESAMPLER_QUALITY_HIGHEST: + s = msg_hash_to_str(MSG_RESAMPLER_QUALITY_HIGHEST); + break; + case RESAMPLER_QUALITY_NORMAL: + s = msg_hash_to_str(MSG_RESAMPLER_QUALITY_NORMAL); + break; + } + + filestream_printf(file, " - Resampler Quality: %s\n", !string_is_empty(s) ? s : "n/a"); + } + + filestream_printf(file, " - Audio Latency: %u ms\n", settings->uints.audio_latency); + filestream_printf(file, " - Dynamic Rate Control (DRC): %.3f\n", *audio_get_float_ptr(AUDIO_ACTION_RATE_CONTROL_DELTA)); + filestream_printf(file, " - Max Timing Skew: %.2f\n", settings->floats.audio_max_timing_skew); + filestream_printf(file, " - Output Rate: %u Hz\n", settings->uints.audio_out_rate); + filestream_printf(file, " - DSP Plugin: %s\n", !string_is_empty(settings->paths.path_audio_dsp_plugin) ? settings->paths.path_audio_dsp_plugin : "n/a"); + + { + core_info_list_t *core_info_list = NULL; + bool found = false; + + filestream_printf(file, "\n"); + filestream_printf(file, "Firmware files found:\n"); + + core_info_get_list(&core_info_list); + + if (core_info_list) + { + unsigned i; + + for (i = 0; i < core_info_list->count; i++) + { + core_info_t *info = &core_info_list->list[i]; + + if (!info) + continue; + + if (info->firmware_count) + { + unsigned j; + bool core_found = false; + + for (j = 0; j < info->firmware_count; j++) + { + core_info_firmware_t *firmware = &info->firmware[j]; + char path[PATH_MAX_LENGTH]; + + if (!firmware) + continue; + + path[0] = '\0'; + + fill_pathname_join( + path, + settings->paths.directory_system, + firmware->path, + sizeof(path)); + + if (filestream_exists(path)) + { + found = true; + + if (!core_found) + { + core_found = true; + filestream_printf(file, " - %s:\n", !string_is_empty(info->core_name) ? info->core_name : path_basename(info->path)); + } + + filestream_printf(file, " - %s (%s)\n", firmware->path, firmware->optional ? "optional" : "required"); + } + } + } + } + } + + if (!found) + filestream_printf(file, " - n/a\n"); + } + + filestream_close(file); + + RARCH_LOG("Wrote debug info to %s\n", debug_filepath); + + msg_hash_set_uint(MSG_HASH_USER_LANGUAGE, lang); + + return true; + +error: + return false; +} + +static void send_debug_info_cb(retro_task_t *task, + void *task_data, void *user_data, const char *error) +{ + if (task_data) + { + http_transfer_data_t *data = (http_transfer_data_t*)task_data; + + if (!data || data->len == 0) + { + RARCH_LOG("%s\n", msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO)); + + runloop_msg_queue_push( + msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO), + 2, 180, true, + NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_ERROR); + free(task_data); + return; + } + + /* don't use string_is_equal() here instead of the memcmp() because the data isn't NULL-terminated */ + if (!string_is_empty(data->data) && data->len >= 2 && !memcmp(data->data, "OK", 2)) + { + char buf[32] = {0}; + struct string_list *list; + + memcpy(buf, data->data, data->len); + + list = string_split(buf, " "); + + if (list && list->size > 1) + { + unsigned id = 0; + char msg[PATH_MAX_LENGTH]; + + msg[0] = '\0'; + + sscanf(list->elems[1].data, "%u", &id); + + snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_SENT_DEBUG_INFO), id); + + RARCH_LOG("%s\n", msg); + + runloop_msg_queue_push( + msg, + 2, 600, true, + NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + } + + if (list) + string_list_free(list); + } + else + { + RARCH_LOG("%s\n", msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO)); + + runloop_msg_queue_push( + msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO), + 2, 180, true, + NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_ERROR); + } + + free(task_data); + } + else + { + RARCH_LOG("%s\n", msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO)); + + runloop_msg_queue_push( + msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO), + 2, 180, true, + NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_ERROR); + } +} + +static void rarch_send_debug_info(void) +{ + char debug_filepath[PATH_MAX_LENGTH]; + const char *url = "http://lobby.libretro.com/debuginfo/add/"; + char *info_buf = NULL; + const size_t param_buf_size = 65535; + char *param_buf = (char*)malloc(param_buf_size); + char *param_buf_tmp = NULL; + int param_buf_pos = 0; + int64_t len = 0; + const char *path_config = path_get(RARCH_PATH_CONFIG); + bool info_written = rarch_write_debug_info(); + + debug_filepath[0] = + param_buf[0] = '\0'; + + fill_pathname_resolve_relative( + debug_filepath, + path_config, + DEBUG_INFO_FILENAME, + sizeof(debug_filepath)); + + if (info_written) + filestream_read_file(debug_filepath, (void**)&info_buf, &len); + + if (string_is_empty(info_buf) || len == 0 || !info_written) + { + runloop_msg_queue_push( + msg_hash_to_str(MSG_FAILED_TO_SAVE_DEBUG_INFO), + 2, 180, true, + NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_ERROR); + goto finish; + } + + RARCH_LOG("%s\n", msg_hash_to_str(MSG_SENDING_DEBUG_INFO)); + + runloop_msg_queue_push( + msg_hash_to_str(MSG_SENDING_DEBUG_INFO), + 2, 180, true, + NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + + param_buf_pos = (int)strlcpy(param_buf, "info=", param_buf_size); + param_buf_tmp = param_buf + param_buf_pos; + + net_http_urlencode(¶m_buf_tmp, info_buf); + + strlcat(param_buf, param_buf_tmp, param_buf_size - param_buf_pos); + + task_push_http_post_transfer(url, param_buf, true, NULL, send_debug_info_cb, NULL); + +finish: + if (param_buf) + free(param_buf); + if (info_buf) + free(info_buf); +} +#endif + void rarch_log_file_init(void) { char log_directory[PATH_MAX_LENGTH]; From 571eafd14956eae46cdcc86ddf801a03da72aca3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 25 Jan 2020 15:58:22 +0100 Subject: [PATCH 143/148] Get rid of send debug info in a more safe way that won't mess with people's existing configs --- retroarch.c | 680 ---------------------------------------------------- 1 file changed, 680 deletions(-) diff --git a/retroarch.c b/retroarch.c index 426772a3d7..3e1a99f530 100644 --- a/retroarch.c +++ b/retroarch.c @@ -3572,9 +3572,6 @@ static void core_free_retro_game_info(struct retro_game_info *dest); static bool core_load(unsigned poll_type_behavior); static bool core_unload_game(void); -#ifdef HAVE_NETWORKING -static void rarch_send_debug_info(void); -#endif static bool rarch_environment_cb(unsigned cmd, void *data); static bool driver_location_get_position(double *lat, double *lon, @@ -6750,9 +6747,6 @@ TODO: Add a setting for these tweaks */ } break; case CMD_EVENT_SEND_DEBUG_INFO: -#ifdef HAVE_NETWORKING - rarch_send_debug_info(); -#endif break; case CMD_EVENT_FPS_TOGGLE: { @@ -27209,61 +27203,6 @@ static enum runloop_state runloop_check_state(void) old_pressed = pressed; } - /* Check if we have pressed the "send debug info" button. - * Must press 3 times in a row to activate, but it will - * alert the user of this with each press of the hotkey. */ - { - int any_i; - static uint32_t debug_seq = 0; - static bool old_pressed = false; - static bool old_any_pressed = false; - bool any_pressed = false; - bool pressed = BIT256_GET(current_bits, RARCH_SEND_DEBUG_INFO); - - for (any_i = 0; any_i < ARRAY_SIZE(current_bits.data); any_i++) - { - if (current_bits.data[any_i]) - { - any_pressed = true; - break; - } - } - - if (pressed && !old_pressed) - debug_seq |= pressed ? 1 : 0; - - switch (debug_seq) - { - case 1: /* pressed hotkey one time */ - runloop_msg_queue_push( - msg_hash_to_str(MSG_PRESS_TWO_MORE_TIMES_TO_SEND_DEBUG_INFO), - 2, 180, true, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - break; - case 3: /* pressed hotkey two times */ - runloop_msg_queue_push( - msg_hash_to_str(MSG_PRESS_ONE_MORE_TIME_TO_SEND_DEBUG_INFO), - 2, 180, true, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - break; - case 7: /* pressed hotkey third and final time */ - debug_seq = 0; - command_event(CMD_EVENT_SEND_DEBUG_INFO, NULL); - break; - } - - if (any_pressed && !old_any_pressed) - { - debug_seq <<= 1; - - if (debug_seq > 7) - debug_seq = 0; - } - - old_pressed = pressed; - old_any_pressed = any_pressed; - } - /* Check if we have pressed the FPS toggle button */ HOTKEY_CHECK(RARCH_FPS_TOGGLE, CMD_EVENT_FPS_TOGGLE, true, NULL); @@ -27951,625 +27890,6 @@ void rarch_get_cpu_architecture_string(char *cpu_arch_str, size_t len) } } -#ifdef HAVE_NETWORKING -static bool rarch_write_debug_info(void) -{ - int i; - char str[PATH_MAX_LENGTH]; - char debug_filepath[PATH_MAX_LENGTH]; - gfx_ctx_mode_t mode_info = {0}; - settings_t *settings = configuration_settings; - RFILE *file = NULL; - const frontend_ctx_driver_t *frontend = frontend_get_ptr(); - const char *cpu_model = NULL; - const char *path_config = path_get(RARCH_PATH_CONFIG); - unsigned lang = - *msg_hash_get_uint(MSG_HASH_USER_LANGUAGE); - - str[0] = - debug_filepath[0] = '\0'; - - /* Only print our debug info in English */ - if (lang != RETRO_LANGUAGE_ENGLISH) - msg_hash_set_uint(MSG_HASH_USER_LANGUAGE, RETRO_LANGUAGE_ENGLISH); - - fill_pathname_resolve_relative( - debug_filepath, - path_config, - DEBUG_INFO_FILENAME, - sizeof(debug_filepath)); - - file = filestream_open(debug_filepath, - RETRO_VFS_FILE_ACCESS_WRITE, RETRO_VFS_FILE_ACCESS_HINT_NONE); - - if (!file) - { - RARCH_ERR("Could not open debug info file for writing: %s\n", debug_filepath); - goto error; - } - -#ifdef HAVE_MENU - { - time_t time_; - char timedate[255]; - - timedate[0] = '\0'; - - time(&time_); - - setlocale(LC_TIME, ""); - - strftime(timedate, sizeof(timedate), - "%Y-%m-%d %H:%M:%S", localtime(&time_)); - - filestream_printf(file, "Log Date/Time: %s\n", timedate); - } -#endif - filestream_printf(file, "RetroArch Version: %s\n", PACKAGE_VERSION); - -#ifdef HAVE_LAKKA - if (frontend->get_lakka_version) - { - frontend->get_lakka_version(str, sizeof(str)); - filestream_printf(file, "Lakka Version: %s\n", str); - str[0] = '\0'; - } -#endif - - filestream_printf(file, "RetroArch Build Date: %s\n", __DATE__); -#ifdef HAVE_GIT_VERSION - filestream_printf(file, "RetroArch Git Commit: %s\n", retroarch_git_version); -#endif - - filestream_printf(file, "\n"); - - cpu_model = frontend_driver_get_cpu_model_name(); - - if (!string_is_empty(cpu_model)) - filestream_printf(file, "CPU Model Name: %s\n", cpu_model); - - retroarch_get_capabilities(RARCH_CAPABILITIES_CPU, str, sizeof(str)); - filestream_printf(file, "CPU Capabilities: %s\n", str); - - str[0] = '\0'; - - rarch_get_cpu_architecture_string(str, sizeof(str)); - - filestream_printf(file, "CPU Architecture: %s\n", str); - filestream_printf(file, "CPU Cores: %u\n", cpu_features_get_core_amount()); - - { - uint64_t memory_free = frontend_driver_get_free_memory(); - uint64_t memory_total = frontend_driver_get_total_memory(); - - filestream_printf(file, "Memory: %" PRIu64 "/%" PRIu64 " MB\n", memory_free / 1024 / 1024, memory_total / 1024 / 1024); - } - - filestream_printf(file, "GPU Device: %s\n", !string_is_empty(video_driver_get_gpu_device_string()) ? - video_driver_get_gpu_device_string() : "n/a"); - filestream_printf(file, "GPU API/Driver Version: %s\n", !string_is_empty(video_driver_get_gpu_api_version_string()) ? - video_driver_get_gpu_api_version_string() : "n/a"); - - filestream_printf(file, "\n"); - - video_context_driver_get_video_size(&mode_info); - - filestream_printf(file, "Window Resolution: %u x %u\n", mode_info.width, mode_info.height); - - { - float width = 0, height = 0, refresh = 0.0f; - gfx_ctx_metrics_t metrics; - - metrics.type = DISPLAY_METRIC_PIXEL_WIDTH; - metrics.value = &width; - - video_context_driver_get_metrics(&metrics); - - metrics.type = DISPLAY_METRIC_PIXEL_HEIGHT; - metrics.value = &height; - video_context_driver_get_metrics(&metrics); - - video_context_driver_get_refresh_rate(&refresh); - - filestream_printf(file, "Monitor Resolution: %d x %d @ %.2f Hz (configured for %.2f Hz)\n", (int)width, (int)height, refresh, settings->floats.video_refresh_rate); - } - - filestream_printf(file, "\n"); - - str[0] = '\0'; - - retroarch_get_capabilities(RARCH_CAPABILITIES_COMPILER, str, sizeof(str)); - filestream_printf(file, "%s\n", str); - - str[0] = '\0'; - - filestream_printf(file, "Frontend Identifier: %s\n", frontend->ident); - - if (frontend->get_name) - { - frontend->get_name(str, sizeof(str)); - filestream_printf(file, "Frontend Name: %s\n", str); - str[0] = '\0'; - } - - if (frontend->get_os) - { - int major = 0, minor = 0; - const char *warning = ""; - - frontend->get_os(str, sizeof(str), &major, &minor); - - if (strstr(str, "Build 16299")) - warning = " (WARNING: Fall Creator's Update detected... OpenGL performance may be low)"; - - filestream_printf(file, "Frontend OS: %s (v%d.%d)%s\n", str, major, minor, warning); - - str[0] = '\0'; - } - - filestream_printf(file, "\n"); - filestream_printf(file, "Input Devices (autoconfig is %s):\n", settings->bools.input_autodetect_enable ? "enabled" : "disabled"); - - for (i = 0; i < 4; i++) - { - if (input_is_autoconfigured(i)) - { - unsigned retro_id; - unsigned rebind = 0; - unsigned device = settings->uints.input_libretro_device[i]; - - device &= RETRO_DEVICE_MASK; - - if (device == RETRO_DEVICE_JOYPAD || device == RETRO_DEVICE_ANALOG) - { - for (retro_id = 0; retro_id < RARCH_ANALOG_BIND_LIST_END; retro_id++) - { - char descriptor[300]; - const struct retro_keybind *keybind = &input_config_binds[i][retro_id]; - const struct retro_keybind *auto_bind = (const struct retro_keybind*) - input_config_get_bind_auto(i, retro_id); - - input_config_get_bind_string(descriptor, - keybind, auto_bind, sizeof(descriptor)); - - if (!strstr(descriptor, "Auto") - && auto_bind - && !auto_bind->valid - && (auto_bind->joykey != 0xFFFF) - && !string_is_empty(auto_bind->joykey_label)) - rebind++; - } - } - - if (rebind) - filestream_printf(file, " - Port #%d autoconfigured (WARNING: %u keys rebinded):\n", i, rebind); - else - filestream_printf(file, " - Port #%d autoconfigured:\n", i); - - filestream_printf(file, " - Device name: %s (#%d)\n", - input_config_get_device_name(i), - input_autoconfigure_get_device_name_index(i)); - filestream_printf(file, " - Display name: %s\n", - input_config_get_device_display_name(i) ? - input_config_get_device_display_name(i) : "N/A"); - filestream_printf(file, " - Config path: %s\n", - input_config_get_device_display_name(i) ? - input_config_get_device_config_path(i) : "N/A"); - filestream_printf(file, " - VID/PID: %d/%d (0x%04X/0x%04X)\n", - input_config_get_vid(i), input_config_get_pid(i), - input_config_get_vid(i), input_config_get_pid(i)); - } - else - filestream_printf(file, " - Port #%d not autoconfigured\n", i); - } - - filestream_printf(file, "\n"); - - filestream_printf(file, "Drivers:\n"); - - { - gfx_ctx_ident_t ident_info = {0}; - input_driver_t *input_driver = NULL; - const input_device_driver_t *joypad_driver = NULL; - const char *driver = NULL; -#ifdef HAVE_MENU - driver = menu_driver_ident(); - - if (string_is_equal(driver, settings->arrays.menu_driver)) - filestream_printf(file, " - Menu: %s\n", - !string_is_empty(driver) ? driver : "n/a"); - else - filestream_printf(file, " - Menu: %s (configured for %s)\n", - !string_is_empty(driver) - ? driver - : "n/a", - !string_is_empty(settings->arrays.menu_driver) - ? settings->arrays.menu_driver - : "n/a"); -#endif - driver = video_driver_get_ident(); - - if (string_is_equal(driver, settings->arrays.video_driver)) - filestream_printf(file, " - Video: %s\n", - !string_is_empty(driver) - ? driver - : "n/a"); - else - filestream_printf(file, " - Video: %s (configured for %s)\n", - !string_is_empty(driver) - ? driver - : "n/a", - !string_is_empty(settings->arrays.video_driver) - ? settings->arrays.video_driver - : "n/a"); - - video_context_driver_get_ident(&ident_info); - filestream_printf(file, " - Video Context: %s\n", - ident_info.ident ? ident_info.ident : "n/a"); - - driver = NULL; - if (current_audio) - driver = current_audio->ident; - - if (string_is_equal(driver, settings->arrays.audio_driver)) - filestream_printf(file, " - Audio: %s\n", - !string_is_empty(driver) ? driver : "n/a"); - else - filestream_printf(file, " - Audio: %s (configured for %s)\n", - !string_is_empty(driver) ? driver : "n/a", - !string_is_empty(settings->arrays.audio_driver) ? settings->arrays.audio_driver : "n/a"); - - input_driver = current_input; - - if (input_driver && string_is_equal(input_driver->ident, settings->arrays.input_driver)) - filestream_printf(file, " - Input: %s\n", !string_is_empty(input_driver->ident) ? input_driver->ident : "n/a"); - else - filestream_printf(file, " - Input: %s (configured for %s)\n", !string_is_empty(input_driver->ident) ? input_driver->ident : "n/a", !string_is_empty(settings->arrays.input_driver) ? settings->arrays.input_driver : "n/a"); - - joypad_driver = (input_driver->get_joypad_driver ? input_driver->get_joypad_driver(current_input_data) : NULL); - - if (joypad_driver && string_is_equal(joypad_driver->ident, settings->arrays.input_joypad_driver)) - filestream_printf(file, " - Joypad: %s\n", !string_is_empty(joypad_driver->ident) ? joypad_driver->ident : "n/a"); - else - filestream_printf(file, " - Joypad: %s (configured for %s)\n", !string_is_empty(joypad_driver->ident) ? joypad_driver->ident : "n/a", !string_is_empty(settings->arrays.input_joypad_driver) ? settings->arrays.input_joypad_driver : "n/a"); - } - - filestream_printf(file, "\n"); - - filestream_printf(file, "Configuration related settings:\n"); - filestream_printf(file, " - Save on exit: %s\n", settings->bools.config_save_on_exit ? "yes" : "no"); - filestream_printf(file, " - Load content-specific core options automatically: %s\n", settings->bools.game_specific_options ? "yes" : "no"); - filestream_printf(file, " - Load override files automatically: %s\n", settings->bools.auto_overrides_enable ? "yes" : "no"); - filestream_printf(file, " - Load remap files automatically: %s\n", settings->bools.auto_remaps_enable ? "yes" : "no"); - filestream_printf(file, " - Sort saves in folders: %s\n", settings->bools.sort_savefiles_enable ? "yes" : "no"); - filestream_printf(file, " - Sort states in folders: %s\n", settings->bools.sort_savestates_enable ? "yes" : "no"); - filestream_printf(file, " - Write saves in content dir: %s\n", settings->bools.savefiles_in_content_dir ? "yes" : "no"); - filestream_printf(file, " - Write savestates in content dir: %s\n", settings->bools.savestates_in_content_dir ? "yes" : "no"); - - filestream_printf(file, "\n"); - - filestream_printf(file, "Auto load state: %s\n", settings->bools.savestate_auto_load ? "yes (WARNING: not compatible with all cores)" : "no"); - filestream_printf(file, "Auto save state: %s\n", settings->bools.savestate_auto_save ? "yes" : "no"); - - filestream_printf(file, "\n"); - - filestream_printf(file, "Buildbot cores URL: %s\n", settings->paths.network_buildbot_url); - filestream_printf(file, "Auto-extract downloaded archives: %s\n", settings->bools.network_buildbot_auto_extract_archive ? "yes" : "no"); - - { - size_t count = 0; - core_info_list_t *core_info_list = NULL; - struct string_list *list = NULL; - const char *ext = ".rdb"; - - /* remove dot */ - if (!string_is_empty(ext) && ext[0] == '.' && strlen(ext) > 1) - ext++; - - core_info_get_list(&core_info_list); - - if (core_info_list) - count = core_info_list->count; - - filestream_printf(file, "Core info: %u entries\n", count); - - count = 0; - - list = dir_list_new(settings->paths.path_content_database, ext, false, true, false, true); - - if (list) - { - count = list->size; - string_list_free(list); - } - - filestream_printf(file, "Databases: %u entries\n", count); - } - - filestream_printf(file, "\n"); - - filestream_printf(file, "Performance and latency-sensitive features (may have a large impact depending on the core):\n"); - filestream_printf(file, " - Video:\n"); - filestream_printf(file, " - Runahead: %s\n", settings->bools.run_ahead_enabled ? "yes (WARNING: not compatible with all cores)" : "no"); - filestream_printf(file, " - Rewind: %s\n", settings->bools.rewind_enable ? "yes (WARNING: not compatible with all cores)" : "no"); - filestream_printf(file, " - Hard GPU Sync: %s\n", settings->bools.video_hard_sync ? "yes" : "no"); - filestream_printf(file, " - Frame Delay: %u frames\n", settings->uints.video_frame_delay); - filestream_printf(file, " - Max Swapchain Images: %u\n", settings->uints.video_max_swapchain_images); - filestream_printf(file, " - Max Run Speed: %.1f x\n", settings->floats.fastforward_ratio); - filestream_printf(file, " - Sync to exact content framerate: %s\n", settings->bools.vrr_runloop_enable ? "yes (note: designed for G-Sync/FreeSync displays only)" : "no"); - filestream_printf(file, " - Fullscreen: %s\n", settings->bools.video_fullscreen ? "yes" : "no"); - filestream_printf(file, " - Windowed Fullscreen: %s\n", settings->bools.video_windowed_fullscreen ? "yes" : "no"); - filestream_printf(file, " - Threaded Video: %s\n", settings->bools.video_threaded ? "yes" : "no"); - filestream_printf(file, " - Vsync: %s\n", settings->bools.video_vsync ? "yes" : "no"); - filestream_printf(file, " - Vsync Swap Interval: %u frames\n", settings->uints.video_swap_interval); - filestream_printf(file, " - Black Frame Insertion: %s\n", settings->bools.video_black_frame_insertion ? "yes" : "no"); - filestream_printf(file, " - Bilinear Filtering: %s\n", settings->bools.video_smooth ? "yes" : "no"); - filestream_printf(file, " - Video CPU Filter: %s\n", !string_is_empty(settings->paths.path_softfilter_plugin) ? settings->paths.path_softfilter_plugin : "n/a"); - filestream_printf(file, " - CRT SwitchRes: %s\n", (settings->uints.crt_switch_resolution > CRT_SWITCH_NONE) ? "yes" : "no"); - filestream_printf(file, " - Video Shared Context: %s\n", settings->bools.video_shared_context ? "yes" : "no"); - -#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_SLANG) || defined(HAVE_HLSL) - { - video_shader_ctx_t shader_info = {0}; - - video_shader_driver_get_current_shader(&shader_info); - - if (shader_info.data) - { - if (string_is_equal(shader_info.data->path, runtime_shader_preset)) - filestream_printf(file, " - Video Shader: %s\n", !string_is_empty(runtime_shader_preset) ? runtime_shader_preset : "n/a"); - else - filestream_printf(file, " - Video Shader: %s (configured for %s)\n", !string_is_empty(shader_info.data->path) ? shader_info.data->path : "n/a", !string_is_empty(runtime_shader_preset) ? runtime_shader_preset : "n/a"); - } - else - filestream_printf(file, " - Video Shader: n/a\n"); - } -#endif - - filestream_printf(file, " - Audio:\n"); - filestream_printf(file, " - Audio Enabled: %s\n", settings->bools.audio_enable ? "yes" : "no (WARNING: content framerate will be incorrect)"); - filestream_printf(file, " - Audio Sync: %s\n", settings->bools.audio_sync ? "yes" : "no (WARNING: content framerate will be incorrect)"); - - { - const char *s = NULL; - - switch (settings->uints.audio_resampler_quality) - { - case RESAMPLER_QUALITY_DONTCARE: - s = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DONT_CARE); - break; - case RESAMPLER_QUALITY_LOWEST: - s = msg_hash_to_str(MSG_RESAMPLER_QUALITY_LOWEST); - break; - case RESAMPLER_QUALITY_LOWER: - s = msg_hash_to_str(MSG_RESAMPLER_QUALITY_LOWER); - break; - case RESAMPLER_QUALITY_HIGHER: - s = msg_hash_to_str(MSG_RESAMPLER_QUALITY_HIGHER); - break; - case RESAMPLER_QUALITY_HIGHEST: - s = msg_hash_to_str(MSG_RESAMPLER_QUALITY_HIGHEST); - break; - case RESAMPLER_QUALITY_NORMAL: - s = msg_hash_to_str(MSG_RESAMPLER_QUALITY_NORMAL); - break; - } - - filestream_printf(file, " - Resampler Quality: %s\n", !string_is_empty(s) ? s : "n/a"); - } - - filestream_printf(file, " - Audio Latency: %u ms\n", settings->uints.audio_latency); - filestream_printf(file, " - Dynamic Rate Control (DRC): %.3f\n", *audio_get_float_ptr(AUDIO_ACTION_RATE_CONTROL_DELTA)); - filestream_printf(file, " - Max Timing Skew: %.2f\n", settings->floats.audio_max_timing_skew); - filestream_printf(file, " - Output Rate: %u Hz\n", settings->uints.audio_out_rate); - filestream_printf(file, " - DSP Plugin: %s\n", !string_is_empty(settings->paths.path_audio_dsp_plugin) ? settings->paths.path_audio_dsp_plugin : "n/a"); - - { - core_info_list_t *core_info_list = NULL; - bool found = false; - - filestream_printf(file, "\n"); - filestream_printf(file, "Firmware files found:\n"); - - core_info_get_list(&core_info_list); - - if (core_info_list) - { - unsigned i; - - for (i = 0; i < core_info_list->count; i++) - { - core_info_t *info = &core_info_list->list[i]; - - if (!info) - continue; - - if (info->firmware_count) - { - unsigned j; - bool core_found = false; - - for (j = 0; j < info->firmware_count; j++) - { - core_info_firmware_t *firmware = &info->firmware[j]; - char path[PATH_MAX_LENGTH]; - - if (!firmware) - continue; - - path[0] = '\0'; - - fill_pathname_join( - path, - settings->paths.directory_system, - firmware->path, - sizeof(path)); - - if (filestream_exists(path)) - { - found = true; - - if (!core_found) - { - core_found = true; - filestream_printf(file, " - %s:\n", !string_is_empty(info->core_name) ? info->core_name : path_basename(info->path)); - } - - filestream_printf(file, " - %s (%s)\n", firmware->path, firmware->optional ? "optional" : "required"); - } - } - } - } - } - - if (!found) - filestream_printf(file, " - n/a\n"); - } - - filestream_close(file); - - RARCH_LOG("Wrote debug info to %s\n", debug_filepath); - - msg_hash_set_uint(MSG_HASH_USER_LANGUAGE, lang); - - return true; - -error: - return false; -} - -static void send_debug_info_cb(retro_task_t *task, - void *task_data, void *user_data, const char *error) -{ - if (task_data) - { - http_transfer_data_t *data = (http_transfer_data_t*)task_data; - - if (!data || data->len == 0) - { - RARCH_LOG("%s\n", msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO)); - - runloop_msg_queue_push( - msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO), - 2, 180, true, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_ERROR); - free(task_data); - return; - } - - /* don't use string_is_equal() here instead of the memcmp() because the data isn't NULL-terminated */ - if (!string_is_empty(data->data) && data->len >= 2 && !memcmp(data->data, "OK", 2)) - { - char buf[32] = {0}; - struct string_list *list; - - memcpy(buf, data->data, data->len); - - list = string_split(buf, " "); - - if (list && list->size > 1) - { - unsigned id = 0; - char msg[PATH_MAX_LENGTH]; - - msg[0] = '\0'; - - sscanf(list->elems[1].data, "%u", &id); - - snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_SENT_DEBUG_INFO), id); - - RARCH_LOG("%s\n", msg); - - runloop_msg_queue_push( - msg, - 2, 600, true, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - } - - if (list) - string_list_free(list); - } - else - { - RARCH_LOG("%s\n", msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO)); - - runloop_msg_queue_push( - msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO), - 2, 180, true, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_ERROR); - } - - free(task_data); - } - else - { - RARCH_LOG("%s\n", msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO)); - - runloop_msg_queue_push( - msg_hash_to_str(MSG_FAILED_TO_SEND_DEBUG_INFO), - 2, 180, true, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_ERROR); - } -} - -static void rarch_send_debug_info(void) -{ - char debug_filepath[PATH_MAX_LENGTH]; - const char *url = "http://lobby.libretro.com/debuginfo/add/"; - char *info_buf = NULL; - const size_t param_buf_size = 65535; - char *param_buf = (char*)malloc(param_buf_size); - char *param_buf_tmp = NULL; - int param_buf_pos = 0; - int64_t len = 0; - const char *path_config = path_get(RARCH_PATH_CONFIG); - bool info_written = rarch_write_debug_info(); - - debug_filepath[0] = - param_buf[0] = '\0'; - - fill_pathname_resolve_relative( - debug_filepath, - path_config, - DEBUG_INFO_FILENAME, - sizeof(debug_filepath)); - - if (info_written) - filestream_read_file(debug_filepath, (void**)&info_buf, &len); - - if (string_is_empty(info_buf) || len == 0 || !info_written) - { - runloop_msg_queue_push( - msg_hash_to_str(MSG_FAILED_TO_SAVE_DEBUG_INFO), - 2, 180, true, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_ERROR); - goto finish; - } - - RARCH_LOG("%s\n", msg_hash_to_str(MSG_SENDING_DEBUG_INFO)); - - runloop_msg_queue_push( - msg_hash_to_str(MSG_SENDING_DEBUG_INFO), - 2, 180, true, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - - param_buf_pos = (int)strlcpy(param_buf, "info=", param_buf_size); - param_buf_tmp = param_buf + param_buf_pos; - - net_http_urlencode(¶m_buf_tmp, info_buf); - - strlcat(param_buf, param_buf_tmp, param_buf_size - param_buf_pos); - - task_push_http_post_transfer(url, param_buf, true, NULL, send_debug_info_cb, NULL); - -finish: - if (param_buf) - free(param_buf); - if (info_buf) - free(info_buf); -} -#endif - void rarch_log_file_init(void) { char log_directory[PATH_MAX_LENGTH]; From cfcce71392915b538d0d3a1230c79aa0bee04f92 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 25 Jan 2020 17:17:53 +0100 Subject: [PATCH 144/148] - Add HAVE_BLISSBOX - Do not use logging functions inside internal task functions - should always be done outside at end handler function --- Makefile.common | 6 +++++- griffin/griffin.c | 2 ++ qb/config.libs.sh | 8 +++++++ qb/config.params.sh | 1 + tasks/task_autodetect.c | 46 ++++++++++++++++++++--------------------- 5 files changed, 38 insertions(+), 25 deletions(-) diff --git a/Makefile.common b/Makefile.common index be4a7be9e4..8b97ae33ba 100644 --- a/Makefile.common +++ b/Makefile.common @@ -231,7 +231,6 @@ OBJ += \ managers/state_manager.o \ gfx/drivers_font_renderer/bitmapfont.o \ tasks/task_autodetect.o \ - tasks/task_autodetect_blissbox.o \ input/input_autodetect_builtin.o \ input/input_keymaps.o \ input/input_remapping.o \ @@ -265,6 +264,11 @@ OBJ += \ manual_content_scan.o \ disk_control_interface.o +ifeq ($(HAVE_BLISSBOX), 1) + DEFINES += -DHAVE_BLISSBOX + OBJ += tasks/task_autodetect_blissbox.o +endif + ifeq ($(HAVE_AUDIOMIXER), 1) DEFINES += -DHAVE_AUDIOMIXER OBJ += tasks/task_audio_mixer.o \ diff --git a/griffin/griffin.c b/griffin/griffin.c index b4bd31a673..ae90d9545e 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -607,7 +607,9 @@ FONTS INPUT ============================================================ */ #include "../tasks/task_autodetect.c" +#ifdef HAVE_BLISSBOX #include "../tasks/task_autodetect_blissbox.c" +#endif #ifdef HAVE_AUDIOMIXER #include "../tasks/task_audio_mixer.c" #endif diff --git a/qb/config.libs.sh b/qb/config.libs.sh index 4c63f102a1..b6bdeb0ec0 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -353,6 +353,14 @@ check_platform Win32 WASAPI 'WASAPI is' true check_platform Win32 XAUDIO 'XAudio is' true check_platform Win32 WINMM 'WinMM is' true +if [ "$HAVE_BLISSBOX" != 'no' ]; then + if [ "$HAVE_LIBUSB" != 'no' ] || [ "$OS" = 'Win32' ]; then + add_opt BLISSBOX yes + else + add_opt BLISSBOX no + fi +fi + if [ "$HAVE_OPENGL" != 'no' ] && [ "$HAVE_OPENGLES" != 'yes' ]; then if [ "$OS" = 'Darwin' ]; then check_header OPENGL "OpenGL/gl.h" diff --git a/qb/config.params.sh b/qb/config.params.sh index 9c8c38f660..f4150397ce 100644 --- a/qb/config.params.sh +++ b/qb/config.params.sh @@ -1,5 +1,6 @@ HAVE_LIBRETRO= # Libretro library used HAVE_ASSETS_DIR= # Assets install directory +HAVE_BLISSBOX=auto # Blissbox support HAVE_ANGLE=no # ANGLE support (OpenGL wrapper) HAVE_GDI=yes # GDI support (Win32-only) HAVE_OPENGLES_LIBS= # Link flags for custom GLES library diff --git a/tasks/task_autodetect.c b/tasks/task_autodetect.c index 29b6207302..a242e5d7b0 100644 --- a/tasks/task_autodetect.c +++ b/tasks/task_autodetect.c @@ -27,11 +27,12 @@ #include "../configuration.h" #include "../file_path_special.h" #include "../list_special.h" -#include "../verbosity.h" #include "../retroarch.h" #include "tasks_internal.h" +#ifdef HAVE_BLISSBOX #include "../input/include/blissbox.h" +#endif typedef struct autoconfig_disconnect autoconfig_disconnect_t; @@ -101,6 +102,7 @@ static int input_autoconfigure_joypad_try_from_conf(config_file_t *conf, int input_vid = 0; int input_pid = 0; int score = 0; + bool check_pid = false; ident[0] = input_driver[0] = '\0'; @@ -113,20 +115,30 @@ static int input_autoconfigure_joypad_try_from_conf(config_file_t *conf, if (config_get_int (conf, "input_product_id", &tmp_int)) input_pid = tmp_int; +#ifdef HAVE_BLISSBOX if (params->vid == BLISSBOX_VID) input_pid = BLISSBOX_PID; +#endif + + check_pid = + (params->vid == input_vid) + && (params->pid == input_pid) + && (params->vid != 0) + && (params->pid != 0); + +#ifdef HAVE_BLISSBOX + check_pid = check_pid + && (params->vid != BLISSBOX_VID) + && (params->pid != BLISSBOX_PID); +#endif /* Check for VID/PID */ - if ( (params->vid == input_vid) - && (params->pid == input_pid) - && (params->vid != 0) - && (params->pid != 0) - && (params->vid != BLISSBOX_VID) - && (params->pid != BLISSBOX_PID)) + if (check_pid) score += 3; /* Check for name match */ - if (!string_is_empty(params->name) + if ( + !string_is_empty(params->name) && !string_is_empty(ident) && string_is_equal(ident, params->name)) score += 2; @@ -269,12 +281,7 @@ static bool input_autoconfigure_joypad_from_conf_dir( } if (!list) - { - RARCH_LOG("[Autoconf]: No profiles found.\n"); return false; - } - - RARCH_LOG("[Autoconf]: %d profiles found.\n", (int)list->size); for (i = 0; i < list->size; i++) { @@ -302,7 +309,6 @@ static bool input_autoconfigure_joypad_from_conf_dir( if (index >= 0 && current_best > 0 && best_conf) { - RARCH_LOG("[Autoconf]: selected configuration: %s\n", best_path); input_autoconfigure_joypad_add(best_conf, params, task); ret = 1; } @@ -368,20 +374,12 @@ static void input_autoconfigure_connect_handler(retro_task_t *task) if (input_autoconfigure_joypad_from_conf_internal(params, task)) { - RARCH_LOG("[Autoconf]: no profiles found for %s (%d/%d). Using fallback\n", - !string_is_empty(params->name) ? params->name : "N/A", - params->vid, params->pid); - snprintf(msg, sizeof(msg), "%s (%ld/%ld) %s.", !string_is_empty(params->name) ? params->name : "N/A", (long)params->vid, (long)params->pid, msg_hash_to_str(MSG_DEVICE_NOT_CONFIGURED_FALLBACK)); } #else - RARCH_LOG("[Autoconf]: no profiles found for %s (%d/%d).\n", - !string_is_empty(params->name) ? params->name : "N/A", - params->vid, params->pid); - snprintf(msg, sizeof(msg), "%s (%ld/%ld) %s.", !string_is_empty(params->name) ? params->name : "N/A", (long)params->vid, (long)params->pid, @@ -408,8 +406,6 @@ static void input_autoconfigure_disconnect_handler(retro_task_t *task) task_set_finished(task, true); - RARCH_LOG("%s: %s\n", msg_hash_to_str(MSG_AUTODETECT), params->msg); - if (!string_is_empty(params->msg)) free(params->msg); free(params); @@ -528,8 +524,10 @@ void input_autoconfigure_connect( state->max_users = *( input_driver_get_uint(INPUT_ACTION_MAX_USERS)); +#ifdef HAVE_BLISSBOX if (state->vid == BLISSBOX_VID) input_autoconfigure_override_handler(state); +#endif if (!string_is_empty(state->name)) input_config_set_device_name(state->idx, state->name); From d198bef37be3b4ebbaf3eeccd6289d1b7310bdd7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 25 Jan 2020 17:22:24 +0100 Subject: [PATCH 145/148] task_decompress.c - get rid of logging task_autodetect_blissbox.c - get rid of logging --- tasks/task_autodetect_blissbox.c | 3 --- tasks/task_decompress.c | 26 -------------------------- 2 files changed, 29 deletions(-) diff --git a/tasks/task_autodetect_blissbox.c b/tasks/task_autodetect_blissbox.c index c4a6b0ae51..b234f2494a 100644 --- a/tasks/task_autodetect_blissbox.c +++ b/tasks/task_autodetect_blissbox.c @@ -304,10 +304,7 @@ static const blissbox_pad_type_t* input_autoconfigure_get_blissbox_pad_type_win3 /* Check for some other error */ if (!bResult) - { - RARCH_LOG("[Autoconf]: Error in SetupDiGetDeviceInterfaceDetail: %d.\n", GetLastError()); goto done; - } /* copy device path */ nLength = _tcslen(pInterfaceDetailData->DevicePath) + 1; diff --git a/tasks/task_decompress.c b/tasks/task_decompress.c index 04f34c0567..741d492724 100644 --- a/tasks/task_decompress.c +++ b/tasks/task_decompress.c @@ -23,7 +23,6 @@ #include "tasks_internal.h" #include "../file_path_special.h" -#include "../verbosity.h" #include "../msg_hash.h" #define CALLBACK_ERROR_SIZE 4200 @@ -72,10 +71,6 @@ static int file_decompressed_subdir(const char *name, cdata, cmode, csize, size, crc32, userdata)) goto error; -#if 0 - RARCH_LOG("[deflate subdir] Path: %s, CRC32: 0x%x\n", name, crc32); -#endif - return 1; error: @@ -114,9 +109,6 @@ static int file_decompressed(const char *name, const char *valid_exts, cdata, cmode, csize, size, crc32, userdata)) goto error; -#if 0 - RARCH_LOG("[deflate] Path: %s, CRC32: 0x%x\n", name, crc32); -#endif return 1; error: @@ -280,12 +272,7 @@ void *task_push_decompress( tmp[0] = '\0'; if (string_is_empty(target_dir) || string_is_empty(source_file)) - { - RARCH_WARN( - "[decompress] Empty or null source file or" - " target directory arguments.\n"); return NULL; - } ext = path_get_extension(source_file); @@ -300,26 +287,13 @@ void *task_push_decompress( #endif ) ) - { - RARCH_WARN( - "[decompress] File '%s' does not exist" - " or is not a compressed file.\n", - source_file); return NULL; - } if (!valid_ext || !valid_ext[0]) valid_ext = NULL; if (task_check_decompress(source_file)) - { - RARCH_LOG( - "[decompress] File '%s' already being decompressed.\n", - source_file); return NULL; - } - - RARCH_LOG("[decompress] File '%s.\n", source_file); s = (decompress_state_t*)calloc(1, sizeof(*s)); From e54e12876bbfd2f18c3846033b6f964ca1969907 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 25 Jan 2020 17:51:07 +0100 Subject: [PATCH 146/148] Header cleanups --- core_info.c | 5 ----- database_info.c | 10 ---------- 2 files changed, 15 deletions(-) diff --git a/core_info.c b/core_info.c index 239a7d20f8..023ca851b4 100644 --- a/core_info.c +++ b/core_info.c @@ -21,14 +21,12 @@ #include #include #include -#include #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "retroarch.h" -#include "verbosity.h" #include "core_info.h" #include "file_path_special.h" @@ -610,10 +608,7 @@ static bool core_info_list_update_missing_firmware_internal( info->firmware[i].path, path_size); info->firmware[i].missing = !path_is_valid(path); if (info->firmware[i].missing && !info->firmware[i].optional) - { *set_missing_bios = true; - RARCH_WARN("Firmware missing: %s\n", info->firmware[i].path); - } } free(path); diff --git a/database_info.c b/database_info.c index e0e80af6de..afb851863f 100644 --- a/database_info.c +++ b/database_info.c @@ -29,7 +29,6 @@ #include "core_info.h" #include "database_info.h" -#include "verbosity.h" int database_info_build_query_enum(char *s, size_t len, enum database_query_type type, @@ -105,7 +104,6 @@ int database_info_build_query_enum(char *s, size_t len, add_quotes = false; break; case DATABASE_QUERY_NONE: - RARCH_LOG("Unknown type: %d\n", type); break; } @@ -122,10 +120,6 @@ int database_info_build_query_enum(char *s, size_t len, strlcat(s, "}", len); -#if 0 - RARCH_LOG("query: %s\n", s); -#endif - return 0; } @@ -289,10 +283,6 @@ static int database_cursor_iterate(libretrodb_cursor_t *cur, else if (string_is_equal(str, "md5")) db_info->md5 = bin_to_hex_alloc( (uint8_t*)val->val.binary.buff, val->val.binary.len); - else - { - RARCH_LOG("Unknown key: %s\n", str); - } } rmsgpack_dom_value_free(&item); From 36cbcb12b25f12dcbdb93206adc9f429c60d04ad Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 25 Jan 2020 17:51:38 +0100 Subject: [PATCH 147/148] Update CHANGELOG --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index aee1eb0f40..45876f055b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -5,6 +5,7 @@ - EMSCRIPTEN: Recreate input event listeners properly - LIBRETRO: Add disk control interface API extension - LOCALIZATION: Update Polish translation +- VIDEO: Set hardware 'Bilinear filtering' off by default # 1.8.4 - ANDROID/BUGFIX: Prevent crash when Android device is minimized and you go back to the app From 0e20be17ccb80c3b8b359d872b8191b56d143ab4 Mon Sep 17 00:00:00 2001 From: trioan <59591885+trioan@users.noreply.github.com> Date: Sat, 25 Jan 2020 21:14:28 -0500 Subject: [PATCH 148/148] fix vulkan_framebuffer_generate_mips (msvc2017) {0} initializer --- gfx/common/vulkan_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gfx/common/vulkan_common.c b/gfx/common/vulkan_common.c index 3469d937c1..f8b410b6cd 100644 --- a/gfx/common/vulkan_common.c +++ b/gfx/common/vulkan_common.c @@ -3296,7 +3296,7 @@ void vulkan_framebuffer_generate_mips( for (i = 1; i < levels; i++) { unsigned src_width, src_height, target_width, target_height; - VkImageBlit blit_region = {}; + VkImageBlit blit_region = {0}; /* For subsequent passes, we have to transition * from DST_OPTIMAL to SRC_OPTIMAL,