mirror of
https://github.com/libretro/RetroArch
synced 2025-02-28 12:40:23 +00:00
Start adding 'Content Downloader' options
This commit is contained in:
parent
7634ffb4ac
commit
d20f110a2f
@ -246,7 +246,7 @@ static int deferred_push_disk_options(menu_displaylist_info_t *info)
|
||||
char *core_buf;
|
||||
size_t core_len;
|
||||
|
||||
int cb_core_updater_list(void *data_, size_t len)
|
||||
static int cb_net_generic(void *data_, size_t len)
|
||||
{
|
||||
char *data = (char*)data_;
|
||||
menu_handle_t *menu = menu_driver_get_ptr();
|
||||
@ -273,10 +273,25 @@ int cb_core_updater_list(void *data_, size_t len)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int cb_core_updater_list(void *data_, size_t len)
|
||||
{
|
||||
return cb_net_generic(data_, len);
|
||||
}
|
||||
|
||||
int cb_core_content_list(void *data_, size_t len)
|
||||
{
|
||||
return cb_net_generic(data_, len);
|
||||
}
|
||||
|
||||
static int deferred_push_core_updater_list(menu_displaylist_info_t *info)
|
||||
{
|
||||
return menu_displaylist_push_list(info, DISPLAYLIST_CORES_UPDATER);
|
||||
}
|
||||
|
||||
static int deferred_push_core_content_list(menu_displaylist_info_t *info)
|
||||
{
|
||||
return menu_displaylist_push_list(info, DISPLAYLIST_CORE_CONTENT);
|
||||
}
|
||||
#endif
|
||||
|
||||
static int deferred_push_history_list(menu_displaylist_info_t *info)
|
||||
@ -531,6 +546,11 @@ static int menu_cbs_init_bind_deferred_push_compare_label(menu_file_list_cbs_t *
|
||||
{
|
||||
switch (label_hash)
|
||||
{
|
||||
case MENU_LABEL_DEFERRED_CORE_CONTENT_LIST:
|
||||
#ifdef HAVE_NETWORKING
|
||||
cbs->action_deferred_push = deferred_push_core_content_list;
|
||||
#endif
|
||||
break;
|
||||
case MENU_LABEL_DEFERRED_CORE_UPDATER_LIST:
|
||||
#ifdef HAVE_NETWORKING
|
||||
cbs->action_deferred_push = deferred_push_core_updater_list;
|
||||
|
@ -516,6 +516,43 @@ static int action_ok_core_updater_list(const char *path,
|
||||
|
||||
return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC);
|
||||
}
|
||||
|
||||
static int action_ok_core_content_list(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
char url_path[PATH_MAX_LENGTH] = {0};
|
||||
menu_displaylist_info_t info = {0};
|
||||
menu_list_t *menu_list = menu_list_get_ptr();
|
||||
settings_t *settings = config_get_ptr();
|
||||
if (!menu_list)
|
||||
return -1;
|
||||
|
||||
(void)url_path;
|
||||
|
||||
menu_entries_set_nonblocking_refresh();
|
||||
|
||||
if (settings->network.buildbot_url[0] == '\0')
|
||||
return -1;
|
||||
|
||||
#ifdef HAVE_NETWORKING
|
||||
event_command(EVENT_CMD_NETWORK_INIT);
|
||||
|
||||
fill_pathname_join(url_path, settings->network.buildbot_assets_url,
|
||||
"cores/gw/.index", sizeof(url_path));
|
||||
|
||||
rarch_main_data_msg_queue_push(DATA_TYPE_HTTP, url_path, "cb_core_content_list", 0, 1,
|
||||
true);
|
||||
#endif
|
||||
|
||||
info.list = menu_list->menu_stack;
|
||||
info.type = type;
|
||||
info.directory_ptr = idx;
|
||||
strlcpy(info.path, path, sizeof(info.path));
|
||||
strlcpy(info.label,
|
||||
menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_CONTENT_LIST), sizeof(info.label));
|
||||
|
||||
return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC);
|
||||
}
|
||||
static int action_ok_remap_file(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
@ -1730,6 +1767,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
|
||||
case MENU_LABEL_RECORD_CONFIG:
|
||||
cbs->action_ok = action_ok_record_configfile;
|
||||
break;
|
||||
case MENU_LABEL_DOWNLOAD_CORE_CONTENT:
|
||||
cbs->action_ok = action_ok_core_content_list;
|
||||
break;
|
||||
case MENU_LABEL_VALUE_CORE_UPDATER_LIST:
|
||||
cbs->action_ok = action_ok_core_updater_list;
|
||||
break;
|
||||
|
@ -26,6 +26,10 @@ static const char *menu_hash_to_str_us_label(uint32_t hash)
|
||||
{
|
||||
switch (hash)
|
||||
{
|
||||
case MENU_LABEL_DEFERRED_CORE_CONTENT_LIST:
|
||||
return "deferred_core_content_list";
|
||||
case MENU_LABEL_DOWNLOAD_CORE_CONTENT:
|
||||
return "download_core_content";
|
||||
case MENU_LABEL_SCAN_THIS_DIRECTORY:
|
||||
return "scan_this_directory";
|
||||
case MENU_LABEL_SCAN_FILE:
|
||||
@ -604,6 +608,8 @@ const char *menu_hash_to_str_us(uint32_t hash)
|
||||
|
||||
switch (hash)
|
||||
{
|
||||
case MENU_LABEL_VALUE_DOWNLOAD_CORE_CONTENT:
|
||||
return "Download Content";
|
||||
case MENU_LABEL_VALUE_SCAN_THIS_DIRECTORY:
|
||||
return "<Scan This Directory>";
|
||||
case MENU_LABEL_VALUE_SCAN_FILE:
|
||||
|
@ -1658,6 +1658,13 @@ static int menu_displaylist_parse_add_content_list(menu_displaylist_info_t *info
|
||||
|
||||
(void)global;
|
||||
|
||||
#ifdef HAVE_NETWORKING
|
||||
menu_list_push(info->list,
|
||||
menu_hash_to_str(MENU_LABEL_VALUE_DOWNLOAD_CORE_CONTENT),
|
||||
menu_hash_to_str(MENU_LABEL_DOWNLOAD_CORE_CONTENT),
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LIBRETRODB
|
||||
menu_list_push(info->list,
|
||||
menu_hash_to_str(MENU_LABEL_VALUE_SCAN_DIRECTORY),
|
||||
@ -2253,6 +2260,15 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type)
|
||||
|
||||
need_push = true;
|
||||
break;
|
||||
case DISPLAYLIST_CORE_CONTENT:
|
||||
menu_list_clear(info->list);
|
||||
#ifdef HAVE_NETWORKING
|
||||
menu_list_clear(info->list);
|
||||
print_buf_lines(info->list, core_buf, core_len, MENU_FILE_DOWNLOAD_CORE);
|
||||
need_push = true;
|
||||
need_refresh = true;
|
||||
#endif
|
||||
break;
|
||||
case DISPLAYLIST_CORES_UPDATER:
|
||||
menu_list_clear(info->list);
|
||||
#ifdef HAVE_NETWORKING
|
||||
|
@ -80,7 +80,8 @@ enum
|
||||
DISPLAYLIST_OPTIONS_MANAGEMENT,
|
||||
DISPLAYLIST_OPTIONS_DISK,
|
||||
DISPLAYLIST_OPTIONS_SHADERS,
|
||||
DISPLAYLIST_ADD_CONTENT_LIST
|
||||
DISPLAYLIST_ADD_CONTENT_LIST,
|
||||
DISPLAYLIST_CORE_CONTENT
|
||||
};
|
||||
|
||||
typedef struct menu_displaylist_info
|
||||
|
@ -25,6 +25,11 @@ extern "C" {
|
||||
|
||||
#define MENU_VALUE_SEARCH 0xd0d5febbU
|
||||
|
||||
#define MENU_LABEL_DEFERRED_CORE_CONTENT_LIST 0x76150c63U
|
||||
|
||||
#define MENU_LABEL_VALUE_DOWNLOAD_CORE_CONTENT 0xa8bb22d8U
|
||||
#define MENU_LABEL_DOWNLOAD_CORE_CONTENT 0xc63b1d3fU
|
||||
|
||||
#define MENU_LABEL_SCAN_THIS_DIRECTORY 0x6921b775U
|
||||
#define MENU_LABEL_VALUE_SCAN_THIS_DIRECTORY 0x2911e177U
|
||||
|
||||
|
@ -36,10 +36,12 @@
|
||||
#define CB_UPDATE_DATABASES 0x931eb8d3U
|
||||
#define CB_UPDATE_SHADERS_GLSL 0x0121a186U
|
||||
#define CB_UPDATE_SHADERS_CG 0xc93a53feU
|
||||
#define CB_CORE_CONTENT_LIST 0xebc51227U
|
||||
|
||||
extern char core_updater_path[PATH_MAX_LENGTH];
|
||||
|
||||
int cb_core_updater_list(void *data_, size_t len);
|
||||
int cb_core_content_list(void *data_, size_t len);
|
||||
|
||||
#ifdef HAVE_ZLIB
|
||||
static int zlib_extract_core_callback(const char *name, const char *valid_exts,
|
||||
@ -261,6 +263,9 @@ static int cb_http_conn_default(void *data_, size_t len)
|
||||
case CB_CORE_UPDATER_LIST:
|
||||
http->cb = &cb_core_updater_list;
|
||||
break;
|
||||
case CB_CORE_CONTENT_LIST:
|
||||
http->cb = &cb_core_content_list;
|
||||
break;
|
||||
case CB_UPDATE_ASSETS:
|
||||
http->cb = &cb_update_assets;
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user