From f8a4f44b3b0ec7331136461932e24713e7b1513a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 17 Sep 2016 15:25:04 +0200 Subject: [PATCH 01/31] Add dir_get_savestate_size / dir_get_savefile_size --- dirs.c | 18 ++++++++++++++++++ dirs.h | 4 ++++ 2 files changed, 22 insertions(+) diff --git a/dirs.c b/dirs.c index e5c0f3c209..0a86e9cfa2 100644 --- a/dirs.c +++ b/dirs.c @@ -47,6 +47,24 @@ bool dir_is_savestate_empty(void) return string_is_empty(global->dir.savestate); } +size_t dir_get_savestate_size(void) +{ + global_t *global = global_get_ptr(); + + if (!global) + return 0; + return sizeof(global->dir.savestate); +} + +size_t dir_get_savefile_size(void) +{ + global_t *global = global_get_ptr(); + + if (!global) + return 0; + return sizeof(global->dir.savefile); +} + void dir_clear_savefile(void) { global_t *global = global_get_ptr(); diff --git a/dirs.h b/dirs.h index 41fa9f654b..bb6757d25a 100644 --- a/dirs.h +++ b/dirs.h @@ -41,6 +41,10 @@ void dir_set_savefile(const char *path); void dir_set_savestate(const char *path); +size_t dir_get_savestate_size(void); + +size_t dir_get_savefile_size(void); + void dir_clear_all(void); RETRO_END_DECLS From baf2862b8505a8ec6c8fc8a4326d270795f124cc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 17 Sep 2016 15:25:46 +0200 Subject: [PATCH 02/31] Use dir_get_savefile_size/dir_get_savestate_size --- menu/menu_setting.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 2c8d7e9f40..ff4d37eab8 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -6546,7 +6546,7 @@ static bool setting_append_list( CONFIG_DIR( list, list_info, dir_get_savefile_ptr(), - sizeof(global->dir.savefile), + dir_get_savefile_size(), msg_hash_to_str(MENU_ENUM_LABEL_SAVEFILE_DIRECTORY), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SAVEFILE_DIRECTORY), "", @@ -6561,7 +6561,7 @@ static bool setting_append_list( CONFIG_DIR( list, list_info, dir_get_savestate_ptr(), - sizeof(global->dir.savestate), + dir_get_savestate_size(), msg_hash_to_str(MENU_ENUM_LABEL_SAVESTATE_DIRECTORY), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SAVESTATE_DIRECTORY), "", From edb3edfef1ac71a47fbd4c16dcb24fa2f8cd1479 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 17 Sep 2016 15:29:38 +0200 Subject: [PATCH 03/31] Don't use global state anymore for dirs --- dirs.c | 77 +++++++++++++------------------------------------------ runloop.h | 2 -- 2 files changed, 18 insertions(+), 61 deletions(-) diff --git a/dirs.c b/dirs.c index 0a86e9cfa2..b1d3ebdb53 100644 --- a/dirs.c +++ b/dirs.c @@ -27,114 +27,73 @@ #include "dirs.h" -#include "runloop.h" +static char dir_savefile[PATH_MAX_LENGTH] = {0}; +static char dir_savestate[PATH_MAX_LENGTH] = {0}; bool dir_is_savefile_empty(void) { - global_t *global = global_get_ptr(); - - if (!global) - return false; - return string_is_empty(global->dir.savefile); + return string_is_empty(dir_savefile); } bool dir_is_savestate_empty(void) { - global_t *global = global_get_ptr(); - - if (!global) - return false; - return string_is_empty(global->dir.savestate); + return string_is_empty(dir_savestate); } size_t dir_get_savestate_size(void) { - global_t *global = global_get_ptr(); - - if (!global) - return 0; - return sizeof(global->dir.savestate); + return sizeof(dir_savestate); } size_t dir_get_savefile_size(void) { - global_t *global = global_get_ptr(); - - if (!global) - return 0; - return sizeof(global->dir.savefile); + return sizeof(dir_savefile); } void dir_clear_savefile(void) { - global_t *global = global_get_ptr(); - - if (global) - *global->dir.savefile = '\0'; + *dir_savefile = '\0'; } void dir_clear_savestate(void) { - global_t *global = global_get_ptr(); - - if (global) - *global->dir.savestate = '\0'; + *dir_savestate = '\0'; } char *dir_get_savefile_ptr(void) { - global_t *global = global_get_ptr(); - - if (!global) - return NULL; - return global->dir.savefile; + return dir_savefile; } const char *dir_get_savefile(void) { - global_t *global = global_get_ptr(); - - if (!global) - return NULL; - return global->dir.savefile; + return dir_savefile; } char *dir_get_savestate_ptr(void) { - global_t *global = global_get_ptr(); - - if (!global) - return NULL; - return global->dir.savestate; + return dir_savestate; } const char *dir_get_savestate(void) { - global_t *global = global_get_ptr(); - - if (!global) - return NULL; - return global->dir.savestate; + return dir_savestate; } void dir_set_savestate(const char *path) { - global_t *global = global_get_ptr(); - - if (global) - strlcpy(global->dir.savestate, global->name.savefile, - sizeof(global->dir.savestate)); + strlcpy(dir_savestate, path, + sizeof(dir_savestate)); } void dir_set_savefile(const char *path) { - global_t *global = global_get_ptr(); - - if (global) - strlcpy(global->dir.savefile, global->name.savefile, - sizeof(global->dir.savefile)); + strlcpy(dir_savefile, path, + sizeof(dir_savefile)); } void dir_clear_all(void) { + dir_clear_savefile(); + dir_clear_savestate(); } diff --git a/runloop.h b/runloop.h index 0095427b1f..b33eb8968e 100644 --- a/runloop.h +++ b/runloop.h @@ -143,8 +143,6 @@ enum runloop_ctl_state typedef struct rarch_dir { /* Used on reentrancy to use a savestate dir. */ - char savefile[PATH_MAX_LENGTH]; - char savestate[PATH_MAX_LENGTH]; char systemdir[PATH_MAX_LENGTH]; #ifdef HAVE_OVERLAY char osk_overlay[PATH_MAX_LENGTH]; From 63270de821a70fc17533d24c9413495f257fe2fb Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 17 Sep 2016 16:10:49 +0200 Subject: [PATCH 04/31] Create dir_system functions --- dirs.c | 28 ++++++++++++++++++++++++++++ dirs.h | 10 ++++++++++ 2 files changed, 38 insertions(+) diff --git a/dirs.c b/dirs.c index b1d3ebdb53..a42784bc58 100644 --- a/dirs.c +++ b/dirs.c @@ -27,9 +27,15 @@ #include "dirs.h" +static char dir_system[PATH_MAX_LENGTH] = {0}; static char dir_savefile[PATH_MAX_LENGTH] = {0}; static char dir_savestate[PATH_MAX_LENGTH] = {0}; +bool dir_is_system_empty(void) +{ + return string_is_empty(dir_savefile); +} + bool dir_is_savefile_empty(void) { return string_is_empty(dir_savefile); @@ -40,6 +46,11 @@ bool dir_is_savestate_empty(void) return string_is_empty(dir_savestate); } +size_t dir_get_system_size(void) +{ + return sizeof(dir_system); +} + size_t dir_get_savestate_size(void) { return sizeof(dir_savestate); @@ -50,6 +61,11 @@ size_t dir_get_savefile_size(void) return sizeof(dir_savefile); } +void dir_clear_system(void) +{ + *dir_system = '\0'; +} + void dir_clear_savefile(void) { *dir_savefile = '\0'; @@ -65,6 +81,11 @@ char *dir_get_savefile_ptr(void) return dir_savefile; } +const char *dir_get_system(void) +{ + return dir_system; +} + const char *dir_get_savefile(void) { return dir_savefile; @@ -80,6 +101,12 @@ const char *dir_get_savestate(void) return dir_savestate; } +void dir_set_system(const char *path) +{ + strlcpy(dir_system, path, + sizeof(dir_system)); +} + void dir_set_savestate(const char *path) { strlcpy(dir_savestate, path, @@ -94,6 +121,7 @@ void dir_set_savefile(const char *path) void dir_clear_all(void) { + dir_clear_system(); dir_clear_savefile(); dir_clear_savestate(); } diff --git a/dirs.h b/dirs.h index bb6757d25a..3550f66b44 100644 --- a/dirs.h +++ b/dirs.h @@ -25,6 +25,10 @@ bool dir_is_savefile_empty(void); bool dir_is_savestate_empty(void); +bool dir_is_system_empty(void); + +void dir_clear_system(void); + void dir_clear_savefile(void); void dir_clear_savestate(void); @@ -37,10 +41,16 @@ char *dir_get_savestate_ptr(void); const char *dir_get_savestate(void); +const char *dir_get_system(void); + void dir_set_savefile(const char *path); void dir_set_savestate(const char *path); +void dir_set_system(const char *path); + +size_t dir_get_system_size(void); + size_t dir_get_savestate_size(void); size_t dir_get_savefile_size(void); From 4a4c613ee14e4360efe44f0f28ff5ff4cd983c63 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 17 Sep 2016 16:14:25 +0200 Subject: [PATCH 05/31] Start using dir_system functions --- dirs.c | 5 +++++ dirs.h | 2 ++ dynamic.c | 11 +++++++---- runloop.h | 1 - 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/dirs.c b/dirs.c index a42784bc58..89fada36cb 100644 --- a/dirs.c +++ b/dirs.c @@ -81,6 +81,11 @@ char *dir_get_savefile_ptr(void) return dir_savefile; } +char *dir_get_system_ptr(void) +{ + return dir_system; +} + const char *dir_get_system(void) { return dir_system; diff --git a/dirs.h b/dirs.h index 3550f66b44..ef18ff1cfa 100644 --- a/dirs.h +++ b/dirs.h @@ -41,6 +41,8 @@ char *dir_get_savestate_ptr(void); const char *dir_get_savestate(void); +char *dir_get_system_ptr(void); + const char *dir_get_system(void); void dir_set_savefile(const char *path); diff --git a/dynamic.c b/dynamic.c index abd6e37c2d..b82a360c41 100644 --- a/dynamic.c +++ b/dynamic.c @@ -51,6 +51,7 @@ #include "cores/internal_cores.h" #include "frontend/frontend_driver.h" #include "content.h" +#include "dirs.h" #include "paths.h" #include "retroarch.h" #include "runloop.h" @@ -1030,15 +1031,17 @@ bool rarch_environment_cb(unsigned cmd, void *data) if (runloop_ctl(RUNLOOP_CTL_GET_CONTENT_PATH, &fullpath) && fullpath) { + char temp_path[PATH_MAX_LENGTH] = {0}; + RARCH_WARN("SYSTEM DIR is empty, assume CONTENT DIR %s\n", fullpath); - fill_pathname_basedir(global->dir.systemdir, fullpath, - sizeof(global->dir.systemdir)); + fill_pathname_basedir(temp_path, fullpath, sizeof(temp_path)); + dir_set_system(temp_path); } - *(const char**)data = global->dir.systemdir; + *(const char**)data = dir_get_system_ptr(); RARCH_LOG("Environ SYSTEM_DIRECTORY: \"%s\".\n", - global->dir.systemdir); + dir_get_system()); } else { diff --git a/runloop.h b/runloop.h index b33eb8968e..9587b66bd3 100644 --- a/runloop.h +++ b/runloop.h @@ -143,7 +143,6 @@ enum runloop_ctl_state typedef struct rarch_dir { /* Used on reentrancy to use a savestate dir. */ - char systemdir[PATH_MAX_LENGTH]; #ifdef HAVE_OVERLAY char osk_overlay[PATH_MAX_LENGTH]; #endif From 272f045c406f8a5408339fcbfb5ff7afd337a9f4 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 17 Sep 2016 16:15:08 +0200 Subject: [PATCH 06/31] Get rid of unused global variable --- dynamic.c | 1 - 1 file changed, 1 deletion(-) diff --git a/dynamic.c b/dynamic.c index b82a360c41..b504844c87 100644 --- a/dynamic.c +++ b/dynamic.c @@ -940,7 +940,6 @@ bool rarch_environment_cb(unsigned cmd, void *data) { unsigned p; settings_t *settings = config_get_ptr(); - global_t *global = global_get_ptr(); rarch_system_info_t *system = NULL; runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system); From 9852195c9300a73009fe5c886ea446f02234d9f0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 17 Sep 2016 16:21:48 +0200 Subject: [PATCH 07/31] Create osk overlay dir functions --- dirs.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++----------- dirs.h | 56 ++++++++++++++++++++++++++++++++------------- 2 files changed, 99 insertions(+), 28 deletions(-) diff --git a/dirs.c b/dirs.c index 89fada36cb..3e76c4c252 100644 --- a/dirs.c +++ b/dirs.c @@ -27,9 +27,12 @@ #include "dirs.h" -static char dir_system[PATH_MAX_LENGTH] = {0}; -static char dir_savefile[PATH_MAX_LENGTH] = {0}; -static char dir_savestate[PATH_MAX_LENGTH] = {0}; +static char dir_osk_overlay[PATH_MAX_LENGTH] = {0}; +static char dir_system[PATH_MAX_LENGTH] = {0}; +static char dir_savefile[PATH_MAX_LENGTH] = {0}; +static char dir_savestate[PATH_MAX_LENGTH] = {0}; + +/* empty functions */ bool dir_is_system_empty(void) { @@ -46,6 +49,13 @@ bool dir_is_savestate_empty(void) return string_is_empty(dir_savestate); } +bool dir_is_osk_overlay_empty(void) +{ + return string_is_empty(dir_osk_overlay); +} + +/* get size functions */ + size_t dir_get_system_size(void) { return sizeof(dir_system); @@ -61,6 +71,13 @@ size_t dir_get_savefile_size(void) return sizeof(dir_savefile); } +size_t dir_get_osk_overlay_size(void) +{ + return sizeof(dir_osk_overlay); +} + +/* clear functions */ + void dir_clear_system(void) { *dir_system = '\0'; @@ -76,6 +93,26 @@ void dir_clear_savestate(void) *dir_savestate = '\0'; } +void dir_clear_osk_overlay(void) +{ + *dir_osk_overlay = '\0'; +} + +void dir_clear_all(void) +{ + dir_clear_system(); + dir_clear_osk_overlay(); + dir_clear_savefile(); + dir_clear_savestate(); +} + +/* get ptr functions */ + +char *dir_get_osk_overlay_ptr(void) +{ + return dir_osk_overlay; +} + char *dir_get_savefile_ptr(void) { return dir_savefile; @@ -86,6 +123,18 @@ char *dir_get_system_ptr(void) return dir_system; } +char *dir_get_savestate_ptr(void) +{ + return dir_savestate; +} + +/* get functions */ + +const char *dir_get_osk_overlay(void) +{ + return dir_osk_overlay; +} + const char *dir_get_system(void) { return dir_system; @@ -96,14 +145,17 @@ const char *dir_get_savefile(void) return dir_savefile; } -char *dir_get_savestate_ptr(void) +const char *dir_get_savestate(void) { return dir_savestate; } -const char *dir_get_savestate(void) +/* set functions */ + +void dir_set_osk_overlay(const char *path) { - return dir_savestate; + strlcpy(dir_osk_overlay, path, + sizeof(dir_osk_overlay)); } void dir_set_system(const char *path) @@ -123,10 +175,3 @@ void dir_set_savefile(const char *path) strlcpy(dir_savefile, path, sizeof(dir_savefile)); } - -void dir_clear_all(void) -{ - dir_clear_system(); - dir_clear_savefile(); - dir_clear_savestate(); -} diff --git a/dirs.h b/dirs.h index ef18ff1cfa..b8296c1b5b 100644 --- a/dirs.h +++ b/dirs.h @@ -21,35 +21,31 @@ RETRO_BEGIN_DECLS +/* empty functions */ + bool dir_is_savefile_empty(void); bool dir_is_savestate_empty(void); bool dir_is_system_empty(void); +bool dir_is_osk_overlay_empty(void); + +/* clear functions */ + void dir_clear_system(void); void dir_clear_savefile(void); void dir_clear_savestate(void); -char *dir_get_savefile_ptr(void); +void dir_clear_osk_overlay(void); -const char *dir_get_savefile(void); +void dir_clear_all(void); -char *dir_get_savestate_ptr(void); +/* get size functions */ -const char *dir_get_savestate(void); - -char *dir_get_system_ptr(void); - -const char *dir_get_system(void); - -void dir_set_savefile(const char *path); - -void dir_set_savestate(const char *path); - -void dir_set_system(const char *path); +size_t dir_get_osk_overlay_size(void); size_t dir_get_system_size(void); @@ -57,7 +53,37 @@ size_t dir_get_savestate_size(void); size_t dir_get_savefile_size(void); -void dir_clear_all(void); +/* get ptr functions */ + +char *dir_get_osk_overlay_ptr(void); + +char *dir_get_savefile_ptr(void); + +char *dir_get_savestate_ptr(void); + +char *dir_get_system_ptr(void); + +char *dir_get_osk_overlay_ptr(void); + +/* get functions */ + +const char *dir_get_osk_overlay(void); + +const char *dir_get_savefile(void); + +const char *dir_get_savestate(void); + +const char *dir_get_system(void); + +/* set functions */ + +void dir_set_osk_overlay(const char *path); + +void dir_set_savefile(const char *path); + +void dir_set_savestate(const char *path); + +void dir_set_system(const char *path); RETRO_END_DECLS From 5a48f32d6b1ba1b6fe93bd51cf3a81e7d551d980 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 17 Sep 2016 16:28:46 +0200 Subject: [PATCH 08/31] Cleanups --- configuration.c | 26 ++++++++++++++++++-------- menu/menu_setting.c | 6 +++--- runloop.h | 10 ---------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/configuration.c b/configuration.c index 28dfeacd61..3c31c19697 100644 --- a/configuration.c +++ b/configuration.c @@ -652,7 +652,7 @@ static int populate_settings_path(settings_t *settings, struct config_path_setti #endif #ifdef HAVE_OVERLAY SETTING_PATH("osk_overlay_directory", - global->dir.osk_overlay, true, NULL, true); + dir_get_osk_overlay_ptr(), true, NULL, true); #endif #ifndef HAVE_DYNAMIC SETTING_PATH("libretro_path", @@ -1248,20 +1248,30 @@ static void config_set_defaults(void) if (!string_is_empty(g_defaults.dir.osk_overlay)) { - fill_pathname_expand_special(global->dir.osk_overlay, - g_defaults.dir.osk_overlay, sizeof(global->dir.osk_overlay)); + char temp_path[PATH_MAX_LENGTH] = {0}; + + fill_pathname_expand_special(temp_path, + g_defaults.dir.osk_overlay, sizeof(temp_path)); #ifdef RARCH_MOBILE if (string_is_empty(settings->path.osk_overlay)) fill_pathname_join(settings->path.osk_overlay, - global->dir.osk_overlay, + temp_path, "keyboards/modular-keyboard/opaque/big.cfg", sizeof(settings->path.osk_overlay)); #endif + + dir_set_osk_overlay(temp_path); } else - strlcpy(global->dir.osk_overlay, + { + char temp_path[PATH_MAX_LENGTH] = {0}; + + strlcpy(temp_path, settings->directory.overlay, - sizeof(global->dir.osk_overlay)); + sizeof(temp_path)); + + dir_set_osk_overlay(temp_path); + } #endif #ifdef HAVE_MENU if (!string_is_empty(g_defaults.dir.menu_config)) @@ -2037,8 +2047,8 @@ static bool config_load_file(const char *path, bool set_defaults, #ifdef HAVE_OVERLAY if (string_is_equal(settings->directory.overlay, "default")) *settings->directory.overlay = '\0'; - if (string_is_equal(global->dir.osk_overlay, "default")) - *global->dir.osk_overlay = '\0'; + if (string_is_equal(dir_get_osk_overlay(), "default")) + dir_clear_osk_overlay(); #endif if (string_is_equal(settings->directory.system, "default")) *settings->directory.system = '\0'; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index ff4d37eab8..080ec912ee 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -4760,7 +4760,7 @@ static bool setting_append_list( sizeof(settings->path.osk_overlay), msg_hash_to_str(MENU_ENUM_LABEL_KEYBOARD_OVERLAY_PRESET), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_KEYBOARD_OVERLAY_PRESET), - global->dir.osk_overlay, + dir_get_osk_overlay_ptr(), &group_info, &subgroup_info, parent_group, @@ -6469,8 +6469,8 @@ static bool setting_append_list( CONFIG_DIR( list, list_info, - global->dir.osk_overlay, - sizeof(global->dir.osk_overlay), + dir_get_osk_overlay_ptr(), + dir_get_osk_overlay_size(), msg_hash_to_str(MENU_ENUM_LABEL_OSK_OVERLAY_DIRECTORY), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OSK_OVERLAY_DIRECTORY), g_defaults.dir.osk_overlay, diff --git a/runloop.h b/runloop.h index 9587b66bd3..4ab7a9b418 100644 --- a/runloop.h +++ b/runloop.h @@ -140,14 +140,6 @@ enum runloop_ctl_state RUNLOOP_CTL_HTTPSERVER_DESTROY }; -typedef struct rarch_dir -{ - /* Used on reentrancy to use a savestate dir. */ -#ifdef HAVE_OVERLAY - char osk_overlay[PATH_MAX_LENGTH]; -#endif -} rarch_dir_t; - typedef struct rarch_resolution { unsigned idx; @@ -158,8 +150,6 @@ typedef struct rarch_resolution typedef struct global { - rarch_dir_t dir; - struct { bool libretro_device[MAX_USERS]; From 08862746e74eb590c9e5d897d49eed88dbac04df Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 17 Sep 2016 16:31:14 +0200 Subject: [PATCH 09/31] (paths.h) Add comments --- paths.h | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/paths.h b/paths.h index 43f86c13ab..9bbb69f057 100644 --- a/paths.h +++ b/paths.h @@ -29,10 +29,16 @@ enum rarch_content_type RARCH_CONTENT_IMAGE }; +/* init functions */ + void path_init_savefile(void); +/* fill functions */ + void path_fill_names(void); +/* set functions */ + void path_set_redirect(void); void path_set_names(const char *path); @@ -49,8 +55,16 @@ void path_set_config(const char *path); void path_set_config_append(const char *path); +/* get size functions */ + +size_t path_get_core_size(void); + +/* get ptr functions */ + char *path_get_core_ptr(void); +/* get functions */ + const char *path_get_current_savefile_dir(void); const char *path_get_core(void); @@ -61,15 +75,7 @@ const char *path_get_config(void); const char *path_get_config_append(void); -size_t path_get_core_size(void); - -bool path_is_core_empty(void); - -bool path_is_config_empty(void); - -bool path_is_core_options_empty(void); - -bool path_is_config_append_empty(void); +/* clear functions */ void path_clear_core(void); @@ -81,6 +87,16 @@ void path_clear_config_append(void); void path_clear_all(void); +/* is functions */ + +bool path_is_core_empty(void); + +bool path_is_config_empty(void); + +bool path_is_core_options_empty(void); + +bool path_is_config_append_empty(void); + enum rarch_content_type path_is_media_type(const char *path); RETRO_END_DECLS From 70b10e6059c9ead859c1dddcc6340181f37d4fc9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 17 Sep 2016 16:35:38 +0200 Subject: [PATCH 10/31] Get rid of HAVE_CONFIG_H ifdef in dirs.c --- dirs.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/dirs.c b/dirs.c index 3e76c4c252..eabaadf7ff 100644 --- a/dirs.c +++ b/dirs.c @@ -21,10 +21,6 @@ #include #include -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - #include "dirs.h" static char dir_osk_overlay[PATH_MAX_LENGTH] = {0}; From d53373a5cb8b3e0f6ba909a3972d9b4088865908 Mon Sep 17 00:00:00 2001 From: Gregor Richards Date: Sat, 17 Sep 2016 11:24:23 -0400 Subject: [PATCH 11/31] Netplay savestate loading frontend changes Support for the frontend to inform Netplay when a savestate has been loaded, so Netplay can in turn inform the peer. --- command.c | 8 ++++++++ network/netplay/netplay.c | 23 ++++++++++++++++++----- network/netplay/netplay.h | 2 +- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/command.c b/command.c index ca4402a8a5..c5332f9b7c 100644 --- a/command.c +++ b/command.c @@ -1713,6 +1713,10 @@ static void command_event_load_state(const char *path, char *s, size_t len) return; } +#ifdef HAVE_NETPLAY + netplay_driver_ctl(RARCH_NETPLAY_CTL_LOAD_SAVESTATE, NULL); +#endif + if (settings->state_slot < 0) snprintf(s, len, "%s #-1 (auto).", msg_hash_to_str(MSG_LOADED_STATE_FROM_SLOT)); @@ -1740,6 +1744,10 @@ static void command_event_undo_load_state(char *s, size_t len) return; } +#ifdef HAVE_NETPLAY + netplay_driver_ctl(RARCH_NETPLAY_CTL_LOAD_SAVESTATE, NULL); +#endif + strlcpy(s, msg_hash_to_str(MSG_UNDID_LOAD_STATE), len); } diff --git a/network/netplay/netplay.c b/network/netplay/netplay.c index 8ae9e7a11d..8f2c2bd616 100644 --- a/network/netplay/netplay.c +++ b/network/netplay/netplay.c @@ -1170,7 +1170,7 @@ void netplay_frontend_paused(netplay_t *netplay, bool paused) /** * netplay_load_savestate * @netplay : pointer to netplay object - * @serial_info : the savestate being loaded + * @serial_info : the savestate being loaded, NULL means "load it yourself" * @save : whether to save the provided serial_info into the frame buffer * * Inform Netplay of a savestate load and send it to the other side @@ -1178,17 +1178,30 @@ void netplay_frontend_paused(netplay_t *netplay, bool paused) void netplay_load_savestate(netplay_t *netplay, retro_ctx_serialize_info_t *serial_info, bool save) { uint32_t header[3]; + retro_ctx_serialize_info_t tmp_serial_info; if (!netplay->has_connection) return; /* Record it in our own buffer */ - if (save && netplay_delta_frame_ready(netplay, &netplay->buffer[netplay->self_ptr], netplay->self_frame_count)) + if ((save || !serial_info) && netplay_delta_frame_ready(netplay, &netplay->buffer[netplay->self_ptr], netplay->self_frame_count)) { - if (serial_info->size <= netplay->state_size) + if (!serial_info) { - memcpy(netplay->buffer[netplay->self_ptr].state, - serial_info->data_const, serial_info->size); + tmp_serial_info.size = netplay->state_size; + tmp_serial_info.data = netplay->buffer[netplay->self_ptr].state; + if (!core_serialize(&tmp_serial_info)) + return; + tmp_serial_info.data_const = tmp_serial_info.data; + serial_info = &tmp_serial_info; + } + else + { + if (serial_info->size <= netplay->state_size) + { + memcpy(netplay->buffer[netplay->self_ptr].state, + serial_info->data_const, serial_info->size); + } } } diff --git a/network/netplay/netplay.h b/network/netplay/netplay.h index ecac020d55..a2bb44efba 100644 --- a/network/netplay/netplay.h +++ b/network/netplay/netplay.h @@ -187,7 +187,7 @@ void netplay_frontend_paused(netplay_t *netplay, bool paused); /** * netplay_load_savestate * @netplay : pointer to netplay object - * @serial_info : the savestate being loaded + * @serial_info : the savestate being loaded, NULL means "load it yourself" * @save : whether to save the provided serial_info into the frame buffer * * Inform Netplay of a savestate load and send it to the other side From a2a1f34fca3cb604fa84c89b2e2a9f6d92155150 Mon Sep 17 00:00:00 2001 From: gouchi Date: Sat, 17 Sep 2016 17:26:13 +0200 Subject: [PATCH 12/31] Add Coverity Scan to Travis CI --- .travis.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.travis.yml b/.travis.yml index c519643cca..406868fd86 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,6 +23,9 @@ script: - ./configure - make +env: + global: + - secure: "JTh3ZOkb8UhxvkVfhevS79nPfxZ50vqTxoyhDCu0GrOUlhRbwwOswoZty4RwMFu5qpSK5TDRgTYMbyEa9mmiHQSevf3gOA9hXjwjzeYldDQzfrUJ83If9Ci3U7xA7M73AW2vMo4zFNvat/EEGFsUM+z0XagMoUX52kjjrs+7x+w=" addons: apt: packages: @@ -35,3 +38,11 @@ addons: - libsdl-image1.2-dev - libsdl-mixer1.2-dev - libsdl-ttf2.0-dev + coverity_scan: + project: + name: "RetroArch" + description: "RetroArch is the official reference frontend for the libretro API." + notification_email: libretro@gmail.com + build_command_prepend: "./configure; make clean" + build_command: "make" + branch_pattern: coverity_scan From ec2fd5ebd75729469b4ebff546266bf0e7fbf3d3 Mon Sep 17 00:00:00 2001 From: Alcaro Date: Sat, 17 Sep 2016 17:55:42 +0200 Subject: [PATCH 13/31] Fix warning --- network/netplay/netplay.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/network/netplay/netplay.c b/network/netplay/netplay.c index 8ae9e7a11d..6b5eadc4bc 100644 --- a/network/netplay/netplay.c +++ b/network/netplay/netplay.c @@ -792,7 +792,7 @@ static int init_tcp_connection(const struct addrinfo *res, #if defined(IPPROTO_TCP) && defined(TCP_NODELAY) { int flag = 1; - setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof(int)); + setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (void*)&flag, sizeof(int)); } #endif From d7e9c198e63d9f9011c2dfe564ef5bd8974d5fa3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 17 Sep 2016 18:21:29 +0200 Subject: [PATCH 14/31] Cleanups to netplay --- network/netplay/netplay.c | 63 ++++++++++++++++++------------- network/netplay/netplay_private.h | 2 - 2 files changed, 37 insertions(+), 28 deletions(-) diff --git a/network/netplay/netplay.c b/network/netplay/netplay.c index 8f15ec6e7a..2955c660a8 100644 --- a/network/netplay/netplay.c +++ b/network/netplay/netplay.c @@ -45,7 +45,7 @@ enum CMD_OPT_REQUIRE_SYNC = 0x10 }; -void *netplay_data; +static void *netplay_data = NULL; /** * warn_hangup: @@ -58,7 +58,8 @@ static void warn_hangup(void) runloop_msg_queue_push("Netplay has disconnected. Will continue without connection.", 0, 480, false); } -static bool netplay_info_cb(netplay_t* netplay, unsigned frames) { +static bool netplay_info_cb(netplay_t* netplay, unsigned frames) +{ return netplay->net_cbs->info_cb(netplay, frames); } @@ -97,7 +98,7 @@ static bool netplay_can_poll(netplay_t *netplay) static bool get_self_input_state(netplay_t *netplay) { uint32_t state[WORDS_PER_FRAME - 1] = {0, 0, 0}; - struct delta_frame *ptr = &netplay->buffer[netplay->self_ptr]; + struct delta_frame *ptr = &netplay->buffer[netplay->self_ptr]; if (!netplay_delta_frame_ready(netplay, ptr, netplay->self_frame_count)) return false; @@ -159,7 +160,8 @@ static bool get_self_input_state(netplay_t *netplay) if (!netplay->spectate.enabled) /* Spectate sends in its own way */ { - if (!socket_send_all_blocking(netplay->fd, netplay->packet_buffer, sizeof(netplay->packet_buffer), false)) + if (!socket_send_all_blocking(netplay->fd, + netplay->packet_buffer, sizeof(netplay->packet_buffer), false)) { warn_hangup(); netplay->has_connection = false; @@ -274,7 +276,8 @@ static bool netplay_get_cmd(netplay_t *netplay) /* The data's good! */ netplay->buffer[netplay->read_ptr].have_remote = true; - memcpy(netplay->buffer[netplay->read_ptr].real_input_state, buffer + 1, sizeof(buffer) - sizeof(uint32_t)); + memcpy(netplay->buffer[netplay->read_ptr].real_input_state, + buffer + 1, sizeof(buffer) - sizeof(uint32_t)); netplay->read_ptr = NEXT_PTR(netplay->read_ptr); netplay->read_frame_count++; return true; @@ -348,7 +351,8 @@ static bool netplay_get_cmd(netplay_t *netplay) /* Received a CRC for some frame. If we still have it, check if it * matched. This approach could be improved with some quick modular * arithmetic. */ - do { + do + { if (netplay->buffer[tmp_ptr].frame == buffer[0]) { found = true; @@ -1063,9 +1067,9 @@ error: static void netplay_flip_users(netplay_t *netplay) { /* Must be in the future because we may have already sent this frame's data */ - uint32_t flip_frame = netplay->self_frame_count + 1; + uint32_t flip_frame = netplay->self_frame_count + 1; uint32_t flip_frame_net = htonl(flip_frame); - bool command = netplay_command( + bool command = netplay_command( netplay, NETPLAY_CMD_FLIP_PLAYERS, &flip_frame_net, sizeof flip_frame_net, CMD_OPT_HOST_ONLY | CMD_OPT_REQUIRE_SYNC, @@ -1125,13 +1129,14 @@ void netplay_free(netplay_t *netplay) bool netplay_pre_frame(netplay_t *netplay) { retro_assert(netplay && netplay->net_cbs->pre_frame); + + /* FIXME: This is an ugly way to learn we're not paused anymore */ if (netplay->local_paused) - { - /* FIXME: This is an ugly way to learn we're not paused anymore */ netplay_frontend_paused(netplay, false); - } + if (!netplay->net_cbs->pre_frame(netplay)) return false; + return (!netplay->has_connection || (!netplay->stall && !netplay->remote_paused)); } @@ -1164,7 +1169,8 @@ void netplay_frontend_paused(netplay_t *netplay, bool paused) netplay->local_paused = paused; if (netplay->has_connection && !netplay->spectate.enabled) - netplay_send_raw_cmd(netplay, paused ? NETPLAY_CMD_PAUSE : NETPLAY_CMD_RESUME, NULL, 0); + netplay_send_raw_cmd(netplay, paused + ? NETPLAY_CMD_PAUSE : NETPLAY_CMD_RESUME, NULL, 0); } /** @@ -1184,23 +1190,27 @@ void netplay_load_savestate(netplay_t *netplay, retro_ctx_serialize_info_t *seri return; /* Record it in our own buffer */ - if ((save || !serial_info) && netplay_delta_frame_ready(netplay, &netplay->buffer[netplay->self_ptr], netplay->self_frame_count)) + if (save || !serial_info) { - if (!serial_info) + if (netplay_delta_frame_ready(netplay, + &netplay->buffer[netplay->self_ptr], netplay->self_frame_count)) { - tmp_serial_info.size = netplay->state_size; - tmp_serial_info.data = netplay->buffer[netplay->self_ptr].state; - if (!core_serialize(&tmp_serial_info)) - return; - tmp_serial_info.data_const = tmp_serial_info.data; - serial_info = &tmp_serial_info; - } - else - { - if (serial_info->size <= netplay->state_size) + if (!serial_info) { - memcpy(netplay->buffer[netplay->self_ptr].state, - serial_info->data_const, serial_info->size); + tmp_serial_info.size = netplay->state_size; + tmp_serial_info.data = netplay->buffer[netplay->self_ptr].state; + if (!core_serialize(&tmp_serial_info)) + return; + tmp_serial_info.data_const = tmp_serial_info.data; + serial_info = &tmp_serial_info; + } + else + { + if (serial_info->size <= netplay->state_size) + { + memcpy(netplay->buffer[netplay->self_ptr].state, + serial_info->data_const, serial_info->size); + } } } } @@ -1221,6 +1231,7 @@ void netplay_load_savestate(netplay_t *netplay, retro_ctx_serialize_info_t *seri header[0] = htonl(NETPLAY_CMD_LOAD_SAVESTATE); header[1] = htonl(serial_info->size + sizeof(uint32_t)); header[2] = htonl(netplay->self_frame_count); + if (!socket_send_all_blocking(netplay->fd, header, sizeof(header), false)) { warn_hangup(); diff --git a/network/netplay/netplay_private.h b/network/netplay/netplay_private.h index 49fe4fd280..852cf158c4 100644 --- a/network/netplay/netplay_private.h +++ b/network/netplay/netplay_private.h @@ -167,8 +167,6 @@ struct netplay struct netplay_callbacks* net_cbs; }; -extern void *netplay_data; - struct netplay_callbacks* netplay_get_cbs_net(void); struct netplay_callbacks* netplay_get_cbs_spectate(void); From bca82f7413e5251aebb9fe40491a83d92c4a0c0c Mon Sep 17 00:00:00 2001 From: radius Date: Sat, 17 Sep 2016 11:23:59 -0500 Subject: [PATCH 15/31] use a generic globe instead of a chrome icon --- pkg/emscripten/libretro/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/emscripten/libretro/index.html b/pkg/emscripten/libretro/index.html index cf84c55ab3..70f5b9cb2d 100644 --- a/pkg/emscripten/libretro/index.html +++ b/pkg/emscripten/libretro/index.html @@ -118,7 +118,7 @@
@@ -114,18 +114,18 @@
-
+
-
@@ -136,7 +136,6 @@
- diff --git a/pkg/emscripten/libretro/libretro.js b/pkg/emscripten/libretro/libretro.js index 76205bb2f8..e34de6d80a 100644 --- a/pkg/emscripten/libretro/libretro.js +++ b/pkg/emscripten/libretro/libretro.js @@ -45,6 +45,11 @@ var showError = function(error) { } }; +function cleanupStorage() +{ + localStorage.clear(); +} + function dropboxInit() { document.getElementById('btnRun').disabled = true; @@ -329,6 +334,7 @@ $(function() { $('#lblLocal').addClass('active'); preLoadingComplete(); setupFileSystem("browser"); + document.getElementById("btnClean").disabled = false; } }); }); From 64b802b47a0953ef48495ac5e745a48d180b8c04 Mon Sep 17 00:00:00 2001 From: radius Date: Sat, 17 Sep 2016 12:37:35 -0500 Subject: [PATCH 18/31] (ems) add to the other templates too --- pkg/emscripten/embed/embed.js | 18 +++++++++++++----- pkg/emscripten/embed/index.html | 8 ++++++-- pkg/emscripten/itch/index.html | 2 +- pkg/emscripten/itch/itch.js | 2 ++ pkg/emscripten/libretro/index.html | 2 +- 5 files changed, 23 insertions(+), 9 deletions(-) diff --git a/pkg/emscripten/embed/embed.js b/pkg/emscripten/embed/embed.js index 50c285730d..2d876b2de3 100644 --- a/pkg/emscripten/embed/embed.js +++ b/pkg/emscripten/embed/embed.js @@ -3,6 +3,8 @@ * * This provides the basic JavaScript for the RetroArch web player. */ + +/* setup your key for dropbox support */ var client = new Dropbox.Client({ key: "--your-api-key--" }); var BrowserFS = browserfs; var afs; @@ -45,6 +47,12 @@ var showError = function(error) { } }; +function cleanupStorage() +{ + localStorage.clear(); + document.getElementById('btnClean').disabled = true; +} + function dropboxInit() { document.getElementById('btnRun').disabled = true; @@ -106,6 +114,9 @@ function setupFileSystem(backend) mountpoint for browserfs */ var mfs = new BrowserFS.FileSystem.MountableFileSystem(); + /* setup this if you setup your server to serve assets or core assets, + you can find more information in the included README */ + /* create an XmlHttpRequest filesystem for the bundled data uncomment this section if you want XMB assets, Overlays, Shaders, etc. var xfs1 = new BrowserFS.FileSystem.XmlHttpRequest @@ -126,11 +137,6 @@ function setupFileSystem(backend) /* mount the filesystems onto mfs */ mfs.mount('/home/web_user/retroarch/userdata', lsfs); - /* create a memory filesystem for content only - var imfs = new BrowserFS.FileSystem.InMemory();*/ - - /* mount the filesystems onto mfs - mfs.mount('/home/web_user/retroarch/userdata/content/', imfs);*/ } else { @@ -138,6 +144,8 @@ function setupFileSystem(backend) mfs.mount('/home/web_user/retroarch/userdata', afs); } + /* setup this if you setup your server to serve assets or core assets, + you can find more information in the included README */ /* mfs.mount('/home/web_user/retroarch/bundle', xfs1); mfs.mount('/home/web_user/retroarch/userdata/content/', xfs2); diff --git a/pkg/emscripten/embed/index.html b/pkg/emscripten/embed/index.html index 4dde75f28e..273eda2c21 100644 --- a/pkg/emscripten/embed/index.html +++ b/pkg/emscripten/embed/index.html @@ -89,6 +89,9 @@ + - @@ -152,7 +152,7 @@ - + diff --git a/pkg/emscripten/itch/index.html b/pkg/emscripten/itch/index.html index e9d200ceeb..db25960ae8 100644 --- a/pkg/emscripten/itch/index.html +++ b/pkg/emscripten/itch/index.html @@ -88,7 +88,7 @@ - From 29e354a3c6c72329a31da79400763952559f788e Mon Sep 17 00:00:00 2001 From: radius Date: Sat, 17 Sep 2016 15:11:54 -0500 Subject: [PATCH 23/31] (ems) template cleanups --- pkg/emscripten/embed/index.html | 2 +- pkg/emscripten/itch/index.html | 2 +- pkg/emscripten/itch/itch.js | 6 ------ pkg/emscripten/libretro/index.html | 2 +- pkg/emscripten/libretro/libretro.js | 2 +- 5 files changed, 4 insertions(+), 10 deletions(-) diff --git a/pkg/emscripten/embed/index.html b/pkg/emscripten/embed/index.html index e061a243e8..7e9e9b5647 100644 --- a/pkg/emscripten/embed/index.html +++ b/pkg/emscripten/embed/index.html @@ -89,7 +89,7 @@ - diff --git a/pkg/emscripten/itch/index.html b/pkg/emscripten/itch/index.html index db25960ae8..96c6059319 100644 --- a/pkg/emscripten/itch/index.html +++ b/pkg/emscripten/itch/index.html @@ -88,7 +88,7 @@ - diff --git a/pkg/emscripten/itch/itch.js b/pkg/emscripten/itch/itch.js index 240980b641..fa7a0d1136 100644 --- a/pkg/emscripten/itch/itch.js +++ b/pkg/emscripten/itch/itch.js @@ -45,12 +45,6 @@ var showError = function(error) { } }; -function reload() -{ - window.top.location.reload(); - document.getElementById('btnClean').disabled = true; -} - function cleanupStorage() { localStorage.clear(); diff --git a/pkg/emscripten/libretro/index.html b/pkg/emscripten/libretro/index.html index e196fbc911..872002c4f8 100644 --- a/pkg/emscripten/libretro/index.html +++ b/pkg/emscripten/libretro/index.html @@ -87,7 +87,7 @@ - diff --git a/pkg/emscripten/libretro/libretro.js b/pkg/emscripten/libretro/libretro.js index e34de6d80a..868b96fc3a 100644 --- a/pkg/emscripten/libretro/libretro.js +++ b/pkg/emscripten/libretro/libretro.js @@ -48,6 +48,7 @@ var showError = function(error) { function cleanupStorage() { localStorage.clear(); + document.getElementById("btnClean").disabled = true; } function dropboxInit() @@ -334,7 +335,6 @@ $(function() { $('#lblLocal').addClass('active'); preLoadingComplete(); setupFileSystem("browser"); - document.getElementById("btnClean").disabled = false; } }); }); From ed326e047935e5e5e82c52d00539fabd445f6003 Mon Sep 17 00:00:00 2001 From: radius Date: Sat, 17 Sep 2016 15:19:34 -0500 Subject: [PATCH 24/31] (ems) template fixes --- pkg/emscripten/embed/embed.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/emscripten/embed/embed.js b/pkg/emscripten/embed/embed.js index 2d876b2de3..8b0e908a00 100644 --- a/pkg/emscripten/embed/embed.js +++ b/pkg/emscripten/embed/embed.js @@ -56,9 +56,9 @@ function cleanupStorage() function dropboxInit() { document.getElementById('btnRun').disabled = true; - document.getElementById('btnDrop').disabled = true; - $('#icnDrop').removeClass('fa-dropbox'); - $('#icnDrop').addClass('fa-spinner fa-spin'); + //document.getElementById('btnDrop').disabled = true; + //$('#icnDrop').removeClass('fa-dropbox'); + //$('#icnDrop').addClass('fa-spinner fa-spin'); client.authDriver(new Dropbox.AuthDriver.Redirect()); @@ -75,8 +75,8 @@ function dropboxInit() function dropboxSyncComplete() { document.getElementById('btnRun').disabled = false; - $('#icnDrop').removeClass('fa-spinner').removeClass('fa-spin'); - $('#icnDrop').addClass('fa-check'); + //$('#icnDrop').removeClass('fa-spinner').removeClass('fa-spin'); + //$('#icnDrop').addClass('fa-check'); console.log("WEBPLAYER: Sync successful"); setupFileSystem("dropbox"); @@ -170,7 +170,7 @@ function startRetroArch() { $('.webplayer').show(); $('.webplayer-preview').hide(); - document.getElementById('btnDrop').disabled = true; + //document.getElementById('btnDrop').disabled = true; document.getElementById('btnRun').disabled = true; $('#btnFullscreen').removeClass('disabled'); From 7c40d808dfc5df5bb6f3545bc2f61b92e300360e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 17 Sep 2016 23:21:11 +0200 Subject: [PATCH 25/31] (libretro-common) Update --- libretro-common/glsm/glsm.c | 12 ++++++++++++ libretro-common/include/glsm/glsmsym.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/libretro-common/glsm/glsm.c b/libretro-common/glsm/glsm.c index fc92cb8b96..4c4546a1e0 100644 --- a/libretro-common/glsm/glsm.c +++ b/libretro-common/glsm/glsm.c @@ -1851,6 +1851,18 @@ void *rglFenceSync(GLenum condition, GLbitfield flags) #endif } +/* + * + * Core in: + * OpenGL : 3.2 + * OpenGLES : 3.0 + */ +void rglDeleteSync(GLsync sync) { +#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES) && defined(HAVE_OPENGLES3) + glDeleteSync(sync); +#endif +} + /* * * Core in: diff --git a/libretro-common/include/glsm/glsmsym.h b/libretro-common/include/glsm/glsmsym.h index 2ef21bed99..40caa27fcc 100644 --- a/libretro-common/include/glsm/glsmsym.h +++ b/libretro-common/include/glsm/glsmsym.h @@ -161,6 +161,7 @@ RETRO_BEGIN_DECLS #define glClearBufferfi rglClearBufferfi #define glWaitSync rglWaitSync #define glFenceSync rglFenceSync +#define glDeleteSync rglDeleteSync #define glBufferStorage rglBufferStorage #define glFlushMappedBufferRange rglFlushMappedBufferRange #define glClientWaitSync rglClientWaitSync @@ -400,6 +401,7 @@ void rglTexSubImage2D( GLenum target, const GLvoid * pixels); void rglDeleteVertexArrays(GLsizei n, const GLuint *arrays); void *rglFenceSync(GLenum condition, GLbitfield flags); +void rglDeleteSync(GLsync sync); void rglWaitSync(void *sync, GLbitfield flags, uint64_t timeout); void rglBufferStorage(GLenum target, GLsizeiptr size, const GLvoid *data, GLbitfield flags); void rglFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); From be6bce0eb0332ebe87bc7cef93f12fa1ff399aa3 Mon Sep 17 00:00:00 2001 From: radius Date: Sat, 17 Sep 2016 16:58:28 -0500 Subject: [PATCH 26/31] (ems) template fixes --- pkg/emscripten/embed/index.html | 9 --------- pkg/emscripten/itch/index.html | 19 ++++++------------- pkg/emscripten/libretro/index.html | 9 +-------- 3 files changed, 7 insertions(+), 30 deletions(-) diff --git a/pkg/emscripten/embed/index.html b/pkg/emscripten/embed/index.html index 7e9e9b5647..6cc4198c7a 100644 --- a/pkg/emscripten/embed/index.html +++ b/pkg/emscripten/embed/index.html @@ -17,18 +17,9 @@