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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 z

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

Swc2-Txe#!VY8AKa*9IV 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

pxqyj%q8x;kRQqE05>l)$TU)9TLXyMSgma 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�%DgnKJKnyX94k?k+lx@_1DT1|o`; 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

eDzOz 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 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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

F!X&BmX=CEog6-6*+R&zHTr@6hQs1d5WDU+w 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%0Di3(nDoxp8C1*W#o-L(6yEiWR~CXw z5t&paVJB(VQ-1S8tT?zfRBXaAcQwVM)a#c&(}SWJZ7$K@h8@T`wYG^dQYy*ESM|3q zo?x~}yuGH?AN9oE=&thZ+IK3a9W-4Jy~Qq)0Mq+=_E}zKoQ;Us5_-TLJ$oQBVlNck zE3w%RII#t_!A{>4D+TJb)>z~0JolUFjanEk)`I-g%;Qgxywwk83b(Z$L{b`J?+4Uh zB^1MM1573T>AKHg9qFchYn|YV?~%T<10QNXoOESfho=;1?4_LZ?F>+Z?^_-X07#Q&i*`#pM3Oa3M-KHEA?l!l-Et^dF`l?h#JGBj~rkYoxziTx(QIW6|2TzZYzTCi^R z(Z*6j*9?Tbp}66i6^CLHv09kJuN8wY(6Y@!*5{&Pen8Y||Df&*pOZfZ4C*t)Bu;yr zy%sJE8_sCb+Z@y#qtIIxYpU{UA&n7c_VP$=-g08X(3!=wB*0ooAf2RH!AX;cPP*PT zb} AEs=#CTQ~{5UftPYA;JZj;}KG|vcz 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 z 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%0Dt+P+FtDQD9E{*y#F_^Xx$n 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зayE@+LS)l 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

RRQ~B(L|9g0)CNy9<_c?|PwTG65=5mCH$NFu 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�Eg+Df}KhMcDR+JW7;vx+DO`|teu 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

FBsrw0@S(T3gU&Js5YD3cGPVo(WQ-^~tT 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

p4%6PnO4(NgIK^jkBsQ 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�QQNQfG&tW~u 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 Z(6a-@C7~CI!zSR_{~7Vq#=TKr{U6ce*9HIp 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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 Y#6+c~tb$d4owin1RDW3b!1UGs0=t7|wg3PC 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 zcmeHw34j#E)qfA7A_$@aqFlQOA}Yt;2OjLq9xUg=vZx>|v%9_Q=QxwsF@s^-Q#e;Z8qsAoOqGB`{;~CK?|M#n^H{H|IJu`b?zWDzddaC=qs`u(0 z_3Bl1@65K9$K0@c&z?Q=_t7+07fl=}K5e?|gOA;7zUuLM*7}l%%10keun)5Ta#zo3 z7Y*66{Kd`dC;pIs0Kwi~q-pz7IW-v2spzWxkvv5Wf^BFoXcwp^WpWP&09C`O7gIaq$gty!J^6<4@AS9*8oQ0AtDm3w!~6Oj(03 z5)8ThQN1PP3q)q<;b1gWuZPD}N4$XsZ>V94w>}gMYil2xaxeNero!8-kD2221*+>q zx*l*>Y4;93;QPaXB8aagGA2f>BIIpp(msCUtWr`*4DAVq^qOgPr|b0*?c2&xCmv+N z$xdmj#-Cq#hzVTn_eONI({jCMEh!(5wSQYvlpyvh%IQ0Wz4{-A!Yc zbVEA<3Tyvt@Yjhdp^&$=GSHwe(T)mjt?h*>09A#8EqW-@s#V_gz7HbSmH7R^#ieA_ zh%Xq>_I%#!?*@3L-rNEiwcOsf?*xrHk2g@ZNDoz!q9a<}!|#TAnxHd%^=D|07B`jk z6~JIK1aU{}>il|@FA&fhw1uOGPwtn1oaGDqsE#&$*zw0h33bqu7m&@v7S+N?b!AIh z$nJVWWuR0KlZy0^cGd4|r(qPheSrpFU_n?L-tgsa(RWg)9twE<)Klu^8MC&GfNkn3 z!!f#jSM6Rl9I(my0&jh5g-!%X&IXU)8xB{7OQI1{F!dqgTcm4|>!aQQM&+rx-Y_#* z6%8%WtIyE=GxWx=cG(@LjYH34KBo04%IP`O4Dke;TWFjHBGB~$Vy617?W;eK4c*4t zRz!Ub+Kc-iQ3LOdL91KC5xseq9ty)w=R^)THm=dk))rkm@Zc-oITeip4P}cWwYBbO zBoYkNW{)kZos>N_*r3Vs zfytO+a6+WB`yO>*|2XUvJ>rFzmjxoBR_*1hTUH2ftJeLEo*>zH3Ax~VXWcD$3rV%( zKe&EoI2{U465hx`u*r$tuYj9XXqqqV3wC+kM{kG z{XT~8klQcvhO4{*-LG})dcqOC<6(l)U7o&&!yi3l+XX@D@V}O?c}iB4fa+iGh$I!l+9emg?S-mi zBv|yR6eqO_uV*L}-VjYxnKgxd>)g2x-pV+rP?zR#=~E zmXQHOYhC*0I>^M>X^SZ;NF!COe{u9c6N

I+kVY!z~s{Nl&%2z=a}>j>m87M^}2 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 z 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 diff --git a/deps/discord-rpc/examples/unrealstatus/Content/MouseGameModeBP.uasset b/deps/discord-rpc/examples/unrealstatus/Content/MouseGameModeBP.uasset deleted file mode 100644 index 410af19a9c5524ea0e4e85e1278aee96580ede78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17950 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 T-su7EEem?_lHN`K8RmZgWf#IR 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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�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

T_rEt` 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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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 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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 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,