Skip to content

Commit a02188b

Browse files
warmenhovencscd98
authored andcommitted
Download various asset files on startup if necessary.
1 parent f3e7e87 commit a02188b

1 file changed

Lines changed: 72 additions & 0 deletions

File tree

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"
@@ -3625,6 +3627,53 @@ static void bundle_decompressed(retro_task_t *task,
36253627
command_event(CMD_EVENT_MENU_SAVE_CURRENT_CONFIG, NULL);
36263628
}
36273629

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

37013773
return true;

0 commit comments

Comments
 (0)