Move rarch_defer_core to menu_content.c and rename it

menu_content_defer_core
This commit is contained in:
twinaphex 2016-01-25 05:38:22 +01:00
parent 58b6499cca
commit 4630d625f1
5 changed files with 96 additions and 95 deletions

View File

@ -24,6 +24,7 @@
#include "../menu_shader.h"
#include "../menu_navigation.h"
#include "../menu_hash.h"
#include "../menu_content.h"
#include "../../core_info.h"
#include "../../defaults.h"
@ -415,7 +416,7 @@ static int rarch_defer_core_wrapper(size_t idx, size_t entry_idx, const char *pa
runloop_ctl(RUNLOOP_CTL_CURRENT_CORE_LIST_GET, &list);
ret = rarch_defer_core(list,
ret = menu_content_defer_core(list,
menu_path_new, path, menu_label, menu->deferred_path,
sizeof(menu->deferred_path));
@ -1844,7 +1845,7 @@ static int action_ok_load_archive_detect_core(const char *path,
runloop_ctl(RUNLOOP_CTL_CURRENT_CORE_LIST_GET, &list);
ret = rarch_defer_core(list, menu_path, content_path, label,
ret = menu_content_defer_core(list, menu_path, content_path, label,
menu->deferred_path, sizeof(menu->deferred_path));
fill_pathname_join(detect_content_path, menu_path, content_path,

View File

@ -13,13 +13,16 @@
* If not, see <http://www.gnu.org/licenses/>.
*/
#include <retro_assert.h>
#include <file/file_path.h>
#include "menu_content.h"
#include "menu_driver.h"
#include "menu_display.h"
#include "menu_hash.h"
#include "menu_shader.h"
#include "../core_info.h"
#include "../configuration.h"
#include "../defaults.h"
#include "../frontend/frontend.h"
@ -133,3 +136,72 @@ bool menu_content_load(void)
return true;
}
/**
* menu_content_defer_core:
* @core_info : Core info list handle.
* @dir : Directory. Gets joined with @path.
* @path : Path. Gets joined with @dir.
* @menu_label : Label identifier of menu setting.
* @s : Deferred core path. Will be filled in
* by function.
* @len : Size of @s.
*
* Gets deferred core.
*
* Returns: 0 if there are multiple deferred cores and a
* selection needs to be made from a list, otherwise
* returns -1 and fills in @s with path to core.
**/
int menu_content_defer_core(void *data, const char *dir,
const char *path, const char *menu_label,
char *s, size_t len)
{
char new_core_path[PATH_MAX_LENGTH];
const core_info_t *info = NULL;
size_t supported = 0;
core_info_list_t *core_info = (core_info_list_t*)data;
uint32_t menu_label_hash = menu_hash_calculate(menu_label);
fill_pathname_join(s, dir, path, len);
#ifdef HAVE_COMPRESSION
if (path_is_compressed_file(dir))
{
/* In case of a compressed archive, we have to join with a hash */
/* We are going to write at the position of dir: */
retro_assert(strlen(dir) < strlen(s));
s[strlen(dir)] = '#';
}
#endif
if (core_info)
core_info_list_get_supported_cores(core_info, s, &info,
&supported);
/* We started the menu with 'Load Content', we are
* going to use the current core to load this. */
if (menu_label_hash == MENU_LABEL_LOAD_CONTENT)
{
runloop_ctl(RUNLOOP_CTL_CURRENT_CORE_GET, (void*)&info);
if (info)
{
RARCH_LOG("Use the current core (%s) to load this content...\n", info->path);
supported = 1;
}
}
/* There are multiple deferred cores and a
* selection needs to be made from a list, return 0. */
if (supported != 1)
return 0;
if (info)
strlcpy(new_core_path, info->path, sizeof(new_core_path));
runloop_ctl(RUNLOOP_CTL_SET_CONTENT_PATH, s);
if (path_file_exists(new_core_path))
runloop_ctl(RUNLOOP_CTL_SET_LIBRETRO_PATH, new_core_path);
return -1;
}

View File

@ -35,6 +35,27 @@ extern "C" {
**/
bool menu_content_load(void);
/**
* menu_content_defer_core:
* @core_info : Core info list handle.
* @dir : Directory. Gets joined with @path.
* @path : Path. Gets joined with @dir.
* @menu_label : Label identifier of menu setting.
* @s : Deferred core path. Will be filled in
* by function.
* @len : Size of @s.
*
* Gets deferred core.
*
* Returns: 0 if there are multiple deferred cores and a
* selection needs to be made from a list, otherwise
* returns -1 and fills in @s with path to core.
**/
int menu_content_defer_core(void *data,
const char *dir, const char *path,
const char *menu_label,
char *s, size_t len);
#ifdef __cplusplus
}
#endif

View File

@ -1586,78 +1586,6 @@ void rarch_playlist_load_content(void *data, unsigned idx)
event_cmd_ctl(EVENT_CMD_LOAD_CORE, NULL);
}
/**
* rarch_defer_core:
* @core_info : Core info list handle.
* @dir : Directory. Gets joined with @path.
* @path : Path. Gets joined with @dir.
* @menu_label : Label identifier of menu setting.
* @s : Deferred core path. Will be filled in
* by function.
* @len : Size of @s.
*
* Gets deferred core.
*
* Returns: 0 if there are multiple deferred cores and a
* selection needs to be made from a list, otherwise
* returns -1 and fills in @s with path to core.
**/
int rarch_defer_core(void *data, const char *dir,
const char *path, const char *menu_label,
char *s, size_t len)
{
char new_core_path[PATH_MAX_LENGTH];
const core_info_t *info = NULL;
size_t supported = 0;
core_info_list_t *core_info = (core_info_list_t*)data;
#ifdef HAVE_MENU
uint32_t menu_label_hash = msg_hash_calculate(menu_label);
#endif
fill_pathname_join(s, dir, path, len);
#ifdef HAVE_COMPRESSION
if (path_is_compressed_file(dir))
{
/* In case of a compressed archive, we have to join with a hash */
/* We are going to write at the position of dir: */
retro_assert(strlen(dir) < strlen(s));
s[strlen(dir)] = '#';
}
#endif
if (core_info)
core_info_list_get_supported_cores(core_info, s, &info,
&supported);
#ifdef HAVE_MENU
/* We started the menu with 'Load Content', we are
* going to use the current core to load this. */
if (menu_label_hash == MENU_LABEL_LOAD_CONTENT)
{
runloop_ctl(RUNLOOP_CTL_CURRENT_CORE_GET, (void*)&info);
if (info)
{
RARCH_LOG("Use the current core (%s) to load this content...\n", info->path);
supported = 1;
}
}
#endif
/* There are multiple deferred cores and a
* selection needs to be made from a list, return 0. */
if (supported != 1)
return 0;
if (info)
strlcpy(new_core_path, info->path, sizeof(new_core_path));
runloop_ctl(RUNLOOP_CTL_SET_CONTENT_PATH, s);
if (path_file_exists(new_core_path))
runloop_ctl(RUNLOOP_CTL_SET_LIBRETRO_PATH, new_core_path);
return -1;
}
int rarch_info_get_capabilities(enum rarch_capabilities type, char *s, size_t len)
{
switch (type)

View File

@ -208,27 +208,6 @@ void rarch_main_deinit(void);
**/
void rarch_playlist_load_content(void *data, unsigned index);
/**
* rarch_defer_core:
* @core_info : Core info list handle.
* @dir : Directory. Gets joined with @path.
* @path : Path. Gets joined with @dir.
* @menu_label : Label identifier of menu setting.
* @s : Deferred core path. Will be filled in
* by function.
* @len : Size of @s.
*
* Gets deferred core.
*
* Returns: 0 if there are multiple deferred cores and a
* selection needs to be made from a list, otherwise
* returns -1 and fills in @s with path to core.
**/
int rarch_defer_core(void *data,
const char *dir, const char *path,
const char *menu_label,
char *s, size_t len);
void rarch_set_paths(const char *path);
int rarch_info_get_capabilities(enum rarch_capabilities type, char *s, size_t len);