Start unifying global init/deinit code for console
This commit is contained in:
parent
0e61461c07
commit
7a2c78ae68
|
@ -41,6 +41,8 @@
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static bool lib_dummy;
|
||||||
|
|
||||||
#ifdef HAVE_DYNAMIC
|
#ifdef HAVE_DYNAMIC
|
||||||
#define SYM(x) do { \
|
#define SYM(x) do { \
|
||||||
function_t func = dylib_proc(lib_handle, #x); \
|
function_t func = dylib_proc(lib_handle, #x); \
|
||||||
|
@ -49,7 +51,6 @@
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
static dylib_t lib_handle;
|
static dylib_t lib_handle;
|
||||||
static bool lib_dummy;
|
|
||||||
#else
|
#else
|
||||||
#define SYM(x) p##x = x
|
#define SYM(x) p##x = x
|
||||||
#endif
|
#endif
|
||||||
|
@ -326,18 +327,14 @@ void libretro_get_current_core_pathname(char *name, size_t size)
|
||||||
|
|
||||||
void init_libretro_sym(bool dummy)
|
void init_libretro_sym(bool dummy)
|
||||||
{
|
{
|
||||||
#ifndef RARCH_CONSOLE
|
|
||||||
lib_dummy = dummy;
|
lib_dummy = dummy;
|
||||||
#endif
|
|
||||||
// Guarantee that we can do "dirty" casting.
|
// Guarantee that we can do "dirty" casting.
|
||||||
// Every OS that this program supports should pass this ...
|
// Every OS that this program supports should pass this ...
|
||||||
rarch_assert(sizeof(void*) == sizeof(void (*)(void)));
|
rarch_assert(sizeof(void*) == sizeof(void (*)(void)));
|
||||||
|
|
||||||
#ifndef RARCH_CONSOLE
|
|
||||||
if (lib_dummy)
|
if (lib_dummy)
|
||||||
load_symbols_dummy();
|
load_symbols_dummy();
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
#ifdef HAVE_DYNAMIC
|
#ifdef HAVE_DYNAMIC
|
||||||
// Try to verify that -lretro was not linked in from other modules
|
// 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);
|
dylib_close(lib_handle);
|
||||||
lib_handle = NULL;
|
lib_handle = NULL;
|
||||||
#endif
|
#endif
|
||||||
#ifndef RARCH_CONSOLE
|
|
||||||
lib_dummy = false;
|
lib_dummy = false;
|
||||||
#endif
|
|
||||||
|
|
||||||
// No longer valid.
|
// No longer valid.
|
||||||
memset(&g_extern.system.info, 0, sizeof(g_extern.system.info));
|
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);
|
system_process_args(argc, argv);
|
||||||
|
|
||||||
|
g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU);
|
||||||
|
g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT);
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
if (g_extern.system.shutdown)
|
if (g_extern.system.shutdown)
|
||||||
|
|
|
@ -378,6 +378,20 @@ void menu_init(void)
|
||||||
rgui->do_held = false;
|
rgui->do_held = false;
|
||||||
rgui->frame_buf_show = true;
|
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
|
#ifdef HAVE_FILEBROWSER
|
||||||
if (!(strlen(g_settings.rgui_browser_directory) > 0))
|
if (!(strlen(g_settings.rgui_browser_directory) > 0))
|
||||||
strlcpy(g_settings.rgui_browser_directory, default_paths.filebrowser_startup_dir,
|
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));
|
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->menu_stack = (rgui_list_t*)calloc(1, sizeof(rgui_list_t));
|
||||||
rgui->selection_buf = (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);
|
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)
|
if (driver.input->set_keybinds)
|
||||||
driver.input->set_keybinds(&key_label_b, 0, 0, 0, (1ULL << KEYBINDS_ACTION_GET_BIND_LABEL));
|
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))
|
if (input & (1ULL << DEVICE_NAV_SELECT))
|
||||||
menu_stack_push(GENERAL_VIDEO_MENU, false);
|
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();
|
const char * drive_map = menu_drive_mapping_previous();
|
||||||
if (drive_map != NULL)
|
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))
|
else if (input & (1ULL << DEVICE_NAV_R1))
|
||||||
{
|
{
|
||||||
const char * drive_map = menu_drive_mapping_next();
|
const char * drive_map = menu_drive_mapping_next();
|
||||||
if (drive_map != NULL)
|
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))
|
if (filebrowser_iterate(rgui->browser, FILEBROWSER_ACTION_PATH_ISDIR))
|
||||||
|
|
Loading…
Reference in New Issue