Start unifying global init/deinit code for console

This commit is contained in:
twinaphex 2013-04-22 22:14:25 +02:00
parent 0e61461c07
commit 7a2c78ae68
5 changed files with 22 additions and 24 deletions

View File

@ -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));

View File

@ -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)

View File

@ -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,

View File

@ -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);

View File

@ -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))