Skip to content

Commit b18fe5b

Browse files
warmenhovencscd98
authored andcommitted
Download various asset files on startup if necessary.
1 parent 50b6eff commit b18fe5b

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

menu/menu_driver.c

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040

4141
#ifdef HAVE_NETWORKING
4242
#include "../network/netplay/netplay.h"
43+
#include "../tasks/task_file_transfer.h"
44+
#include <net/net_http.h>
4345
#endif
4446

4547
#include "../audio/audio_driver.h"
@@ -3627,6 +3629,53 @@ static void bundle_decompressed(retro_task_t *task,
36273629
command_event(CMD_EVENT_MENU_SAVE_CURRENT_CONFIG, NULL);
36283630
}
36293631

3632+
#if defined(HAVE_ONLINE_UPDATER) && defined(HAVE_NETWORKING) && defined(HAVE_COMPRESSION) && defined(HAVE_ZLIB)
3633+
static void menu_download(enum msg_hash_enums enum_idx)
3634+
{
3635+
char s[PATH_MAX_LENGTH];
3636+
char s2[PATH_MAX_LENGTH];
3637+
char s3[PATH_MAX_LENGTH];
3638+
const char *path;
3639+
file_transfer_t *transf = NULL;
3640+
settings_t *settings = config_get_ptr();
3641+
const char *network_buildbot_assets_url =
3642+
settings->paths.network_buildbot_assets_url;
3643+
3644+
fill_pathname_join_special(s,
3645+
network_buildbot_assets_url,
3646+
"frontend", sizeof(s));
3647+
3648+
switch (enum_idx)
3649+
{
3650+
case MENU_ENUM_LABEL_CB_UPDATE_ASSETS:
3651+
path = FILE_PATH_ASSETS_ZIP;
3652+
break;
3653+
case MENU_ENUM_LABEL_CB_UPDATE_AUTOCONFIG_PROFILES:
3654+
path = FILE_PATH_AUTOCONFIG_ZIP;
3655+
break;
3656+
case MENU_ENUM_LABEL_CB_UPDATE_CORE_INFO_FILES:
3657+
path = FILE_PATH_CORE_INFO_ZIP;
3658+
break;
3659+
case MENU_ENUM_LABEL_CB_UPDATE_DATABASES:
3660+
path = FILE_PATH_DATABASE_RDB_ZIP;
3661+
break;
3662+
case MENU_ENUM_LABEL_CB_UPDATE_OVERLAYS:
3663+
path = FILE_PATH_OVERLAYS_ZIP;
3664+
break;
3665+
default:
3666+
return;
3667+
}
3668+
3669+
transf = (file_transfer_t*)calloc(1, sizeof(*transf));
3670+
transf->enum_idx = enum_idx;
3671+
strlcpy(transf->path, path, sizeof(transf->path));
3672+
fill_pathname_join_special(s2, s, path, sizeof(s2));
3673+
net_http_urlencode_full(s3, s2, sizeof(s3));
3674+
task_push_http_transfer_file(s3, false,
3675+
msg_hash_to_str(enum_idx), cb_generic_download, transf);
3676+
}
3677+
#endif
3678+
36303679
static bool rarch_menu_init(
36313680
struct menu_state *menu_st,
36323681
menu_dialog_t *p_dialog,
@@ -3698,6 +3747,29 @@ static bool rarch_menu_init(
36983747
configuration_set_int(settings,
36993748
settings->uints.bundle_assets_extract_last_version, 1);
37003749
}
3750+
#if defined(HAVE_ONLINE_UPDATER) && defined(HAVE_NETWORKING) && defined(HAVE_ZLIB)
3751+
else
3752+
{
3753+
#ifdef HAVE_UPDATE_ASSETS
3754+
if (!path_is_directory(settings->paths.directory_assets))
3755+
menu_download(MENU_ENUM_LABEL_CB_UPDATE_ASSETS);
3756+
#endif
3757+
if (!path_is_directory(settings->paths.directory_autoconfig))
3758+
menu_download(MENU_ENUM_LABEL_CB_UPDATE_AUTOCONFIG_PROFILES);
3759+
#ifdef HAVE_UPDATE_CORE_INFO
3760+
if (!path_is_directory(settings->paths.path_libretro_info))
3761+
menu_download(MENU_ENUM_LABEL_CB_UPDATE_CORE_INFO_FILES);
3762+
#endif
3763+
#ifdef HAVE_LIBRETRODB
3764+
if (!path_is_directory(settings->paths.path_content_database))
3765+
menu_download(MENU_ENUM_LABEL_CB_UPDATE_DATABASES);
3766+
#endif
3767+
#if defined(RARCH_MOBILE) && defined(HAVE_OVERLAY)
3768+
if (!path_is_directory(settings->paths.directory_overlay))
3769+
menu_download(MENU_ENUM_LABEL_CB_UPDATE_OVERLAYS);
3770+
#endif
3771+
}
3772+
#endif
37013773
#endif
37023774

37033775
return true;

0 commit comments

Comments
 (0)