mirror of
https://github.com/libretro/RetroArch
synced 2025-02-04 03:40:03 +00:00
Start unifying global init/deinit code for console
This commit is contained in:
parent
0e61461c07
commit
7a2c78ae68
@ -41,6 +41,8 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static bool lib_dummy;
|
||||
|
||||
#ifdef HAVE_DYNAMIC
|
||||
#define SYM(x) do { \
|
||||
function_t func = dylib_proc(lib_handle, #x); \
|
||||
@ -49,7 +51,6 @@
|
||||
} while (0)
|
||||
|
||||
static dylib_t lib_handle;
|
||||
static bool lib_dummy;
|
||||
#else
|
||||
#define SYM(x) p##x = x
|
||||
#endif
|
||||
@ -326,18 +327,14 @@ void libretro_get_current_core_pathname(char *name, size_t size)
|
||||
|
||||
void init_libretro_sym(bool dummy)
|
||||
{
|
||||
#ifndef RARCH_CONSOLE
|
||||
lib_dummy = dummy;
|
||||
#endif
|
||||
// Guarantee that we can do "dirty" casting.
|
||||
// Every OS that this program supports should pass this ...
|
||||
rarch_assert(sizeof(void*) == sizeof(void (*)(void)));
|
||||
|
||||
#ifndef RARCH_CONSOLE
|
||||
if (lib_dummy)
|
||||
load_symbols_dummy();
|
||||
else
|
||||
#endif
|
||||
{
|
||||
#ifdef HAVE_DYNAMIC
|
||||
// Try to verify that -lretro was not linked in from other modules
|
||||
@ -371,9 +368,7 @@ void uninit_libretro_sym(void)
|
||||
dylib_close(lib_handle);
|
||||
lib_handle = NULL;
|
||||
#endif
|
||||
#ifndef RARCH_CONSOLE
|
||||
lib_dummy = false;
|
||||
#endif
|
||||
|
||||
// No longer valid.
|
||||
memset(&g_extern.system.info, 0, sizeof(g_extern.system.info));
|
||||
|
@ -146,6 +146,9 @@ int rarch_main(int argc, char *argv[])
|
||||
|
||||
system_process_args(argc, argv);
|
||||
|
||||
g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU);
|
||||
g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT);
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if (g_extern.system.shutdown)
|
||||
|
@ -378,6 +378,20 @@ void menu_init(void)
|
||||
rgui->do_held = false;
|
||||
rgui->frame_buf_show = true;
|
||||
|
||||
#ifdef HAVE_DYNAMIC
|
||||
if (path_is_directory(g_settings.libretro))
|
||||
strlcpy(rgui->libretro_dir, g_settings.libretro, sizeof(rgui->libretro_dir));
|
||||
else if (*g_settings.libretro)
|
||||
{
|
||||
fill_pathname_basedir(rgui->libretro_dir, g_settings.libretro, sizeof(rgui->libretro_dir));
|
||||
libretro_get_system_info(g_settings.libretro, &rgui->info);
|
||||
}
|
||||
#else
|
||||
// Don't use pretro_*, it can be dummy core. If we're statically linked,
|
||||
// retro_* will always go to the "real" core.
|
||||
retro_get_system_info(&rgui->info);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_FILEBROWSER
|
||||
if (!(strlen(g_settings.rgui_browser_directory) > 0))
|
||||
strlcpy(g_settings.rgui_browser_directory, default_paths.filebrowser_startup_dir,
|
||||
|
@ -209,20 +209,6 @@ rgui_handle_t *rgui_init(void)
|
||||
|
||||
strlcpy(rgui->base_path, g_settings.rgui_browser_directory, sizeof(rgui->base_path));
|
||||
|
||||
#ifdef HAVE_DYNAMIC
|
||||
if (path_is_directory(g_settings.libretro))
|
||||
strlcpy(rgui->libretro_dir, g_settings.libretro, sizeof(rgui->libretro_dir));
|
||||
else if (*g_settings.libretro)
|
||||
{
|
||||
fill_pathname_basedir(rgui->libretro_dir, g_settings.libretro, sizeof(rgui->libretro_dir));
|
||||
libretro_get_system_info(g_settings.libretro, &rgui->info);
|
||||
}
|
||||
#else
|
||||
// Don't use pretro_*, it can be dummy core. If we're statically linked,
|
||||
// retro_* will always go to the "real" core.
|
||||
retro_get_system_info(&rgui->info);
|
||||
#endif
|
||||
|
||||
rgui->menu_stack = (rgui_list_t*)calloc(1, sizeof(rgui_list_t));
|
||||
rgui->selection_buf = (rgui_list_t*)calloc(1, sizeof(rgui_list_t));
|
||||
rgui_list_push(rgui->menu_stack, "", RGUI_SETTINGS, 0);
|
||||
|
@ -2514,7 +2514,7 @@ static int select_rom(void *data, uint64_t input)
|
||||
if (driver.input->set_keybinds)
|
||||
driver.input->set_keybinds(&key_label_b, 0, 0, 0, (1ULL << KEYBINDS_ACTION_GET_BIND_LABEL));
|
||||
|
||||
filebrowser_update(rgui->browser, input, g_extern.system.valid_extensions);
|
||||
filebrowser_update(rgui->browser, input, rgui->info.valid_extensions);
|
||||
|
||||
if (input & (1ULL << DEVICE_NAV_SELECT))
|
||||
menu_stack_push(GENERAL_VIDEO_MENU, false);
|
||||
@ -2538,13 +2538,13 @@ static int select_rom(void *data, uint64_t input)
|
||||
{
|
||||
const char * drive_map = menu_drive_mapping_previous();
|
||||
if (drive_map != NULL)
|
||||
filebrowser_set_root_and_ext(rgui->browser, g_extern.system.valid_extensions, drive_map);
|
||||
filebrowser_set_root_and_ext(rgui->browser, rgui->info.valid_extensions, drive_map);
|
||||
}
|
||||
else if (input & (1ULL << DEVICE_NAV_R1))
|
||||
{
|
||||
const char * drive_map = menu_drive_mapping_next();
|
||||
if (drive_map != NULL)
|
||||
filebrowser_set_root_and_ext(rgui->browser, g_extern.system.valid_extensions, drive_map);
|
||||
filebrowser_set_root_and_ext(rgui->browser, rgui->info.valid_extensions, drive_map);
|
||||
}
|
||||
|
||||
if (filebrowser_iterate(rgui->browser, FILEBROWSER_ACTION_PATH_ISDIR))
|
||||
|
Loading…
x
Reference in New Issue
Block a user