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

View File

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

View File

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

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

View File

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