(RGUI Android)Filebrowser ROM loading works after initial ROM
(one time - after that, can't return to RGUI anymore - not sure why right now)
This commit is contained in:
parent
a6a023b03c
commit
e983684359
|
@ -107,12 +107,10 @@ static void jni_get (void *data_in, void *data_out)
|
||||||
|
|
||||||
static bool android_app_start_main(struct android_app *android_app, int *init_ret)
|
static bool android_app_start_main(struct android_app *android_app, int *init_ret)
|
||||||
{
|
{
|
||||||
char rom_path[PATH_MAX];
|
|
||||||
char libretro_path[PATH_MAX];
|
|
||||||
char config_file[PATH_MAX];
|
|
||||||
|
|
||||||
struct jni_params in_params;
|
struct jni_params in_params;
|
||||||
struct jni_out_params_char out_args;
|
struct jni_out_params_char out_args;
|
||||||
|
struct rarch_main_wrap args = {0};
|
||||||
|
bool ret = false;
|
||||||
|
|
||||||
in_params.java_vm = android_app->activity->vm;
|
in_params.java_vm = android_app->activity->vm;
|
||||||
in_params.class_obj = android_app->activity->clazz;
|
in_params.class_obj = android_app->activity->clazz;
|
||||||
|
@ -123,20 +121,20 @@ static bool android_app_start_main(struct android_app *android_app, int *init_re
|
||||||
(*in_params.java_vm)->AttachCurrentThread(in_params.java_vm, &in_params.env, 0);
|
(*in_params.java_vm)->AttachCurrentThread(in_params.java_vm, &in_params.env, 0);
|
||||||
|
|
||||||
// ROM
|
// ROM
|
||||||
out_args.out = rom_path;
|
out_args.out = g_extern.fullpath;
|
||||||
out_args.out_sizeof = sizeof(rom_path);
|
out_args.out_sizeof = sizeof(g_extern.fullpath);
|
||||||
strlcpy(out_args.in, "ROM", sizeof(out_args.in));
|
strlcpy(out_args.in, "ROM", sizeof(out_args.in));
|
||||||
jni_get(&in_params, &out_args);
|
jni_get(&in_params, &out_args);
|
||||||
|
|
||||||
// libretro
|
// libretro
|
||||||
out_args.out = libretro_path;
|
out_args.out = g_settings.libretro;
|
||||||
out_args.out_sizeof = sizeof(libretro_path);
|
out_args.out_sizeof = sizeof(g_settings.libretro);
|
||||||
strlcpy(out_args.in, "LIBRETRO", sizeof(out_args.in));
|
strlcpy(out_args.in, "LIBRETRO", sizeof(out_args.in));
|
||||||
jni_get(&in_params, &out_args);
|
jni_get(&in_params, &out_args);
|
||||||
|
|
||||||
// Config file
|
// Config file
|
||||||
out_args.out = config_file;
|
out_args.out = g_extern.config_path;
|
||||||
out_args.out_sizeof = sizeof(config_file);
|
out_args.out_sizeof = sizeof(g_extern.config_path);
|
||||||
strlcpy(out_args.in, "CONFIGFILE", sizeof(out_args.in));
|
strlcpy(out_args.in, "CONFIGFILE", sizeof(out_args.in));
|
||||||
jni_get(&in_params, &out_args);
|
jni_get(&in_params, &out_args);
|
||||||
|
|
||||||
|
@ -149,32 +147,36 @@ static bool android_app_start_main(struct android_app *android_app, int *init_re
|
||||||
(*in_params.java_vm)->DetachCurrentThread(in_params.java_vm);
|
(*in_params.java_vm)->DetachCurrentThread(in_params.java_vm);
|
||||||
|
|
||||||
RARCH_LOG("Checking arguments passed ...\n");
|
RARCH_LOG("Checking arguments passed ...\n");
|
||||||
RARCH_LOG("ROM Filename: [%s].\n", rom_path);
|
RARCH_LOG("ROM Filename: [%s].\n", g_extern.fullpath);
|
||||||
RARCH_LOG("Libretro path: [%s].\n", libretro_path);
|
RARCH_LOG("Libretro path: [%s].\n", g_settings.libretro);
|
||||||
RARCH_LOG("Config file: [%s].\n", config_file);
|
RARCH_LOG("Config file: [%s].\n", g_extern.config_path);
|
||||||
RARCH_LOG("Current IME: [%s].\n", android_app->current_ime);
|
RARCH_LOG("Current IME: [%s].\n", android_app->current_ime);
|
||||||
|
|
||||||
struct rarch_main_wrap args = {0};
|
g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT);
|
||||||
|
|
||||||
args.verbose = true;
|
args.verbose = true;
|
||||||
args.config_path = config_file;
|
args.config_path = g_extern.config_path;
|
||||||
args.sram_path = NULL;
|
args.sram_path = NULL;
|
||||||
args.state_path = NULL;
|
args.state_path = NULL;
|
||||||
args.rom_path = rom_path;
|
args.rom_path = g_extern.fullpath;
|
||||||
args.libretro_path = libretro_path;
|
args.libretro_path = g_settings.libretro;
|
||||||
|
|
||||||
*init_ret = rarch_main_init_wrap(&args);
|
ret = rarch_main_init_wrap(&args);
|
||||||
|
|
||||||
if (*init_ret == 0)
|
if (ret == 0)
|
||||||
{
|
{
|
||||||
RARCH_LOG("rarch_main_init succeeded.\n");
|
RARCH_LOG("rarch_main_init succeeded.\n");
|
||||||
return true;
|
g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
RARCH_ERR("rarch_main_init failed.\n");
|
RARCH_ERR("rarch_main_init failed.\n");
|
||||||
|
|
||||||
|
g_extern.lifecycle_mode_state &= ~(1ULL << MODE_INIT);
|
||||||
|
|
||||||
|
if (ret == 0)
|
||||||
|
return true;
|
||||||
|
else
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *android_app_entry(void *data)
|
static void *android_app_entry(void *data)
|
||||||
|
@ -215,7 +217,6 @@ static void *android_app_entry(void *data)
|
||||||
|
|
||||||
menu_init();
|
menu_init();
|
||||||
|
|
||||||
g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME);
|
|
||||||
begin_loop:
|
begin_loop:
|
||||||
if(g_extern.lifecycle_mode_state & (1ULL << MODE_GAME))
|
if(g_extern.lifecycle_mode_state & (1ULL << MODE_GAME))
|
||||||
{
|
{
|
||||||
|
@ -235,11 +236,41 @@ begin_loop:
|
||||||
audio_stop_func();
|
audio_stop_func();
|
||||||
g_extern.lifecycle_mode_state &= ~(1ULL << MODE_GAME);
|
g_extern.lifecycle_mode_state &= ~(1ULL << MODE_GAME);
|
||||||
}
|
}
|
||||||
|
else if (g_extern.lifecycle_mode_state & (1ULL << MODE_INIT))
|
||||||
|
{
|
||||||
|
if (g_extern.main_is_init)
|
||||||
|
rarch_main_deinit();
|
||||||
|
|
||||||
|
struct rarch_main_wrap args = {0};
|
||||||
|
|
||||||
|
args.verbose = true;
|
||||||
|
args.config_path = g_extern.config_path;
|
||||||
|
args.sram_path = NULL;
|
||||||
|
args.state_path = NULL;
|
||||||
|
args.rom_path = g_extern.fullpath;
|
||||||
|
args.libretro_path = g_settings.libretro;
|
||||||
|
|
||||||
|
init_ret = rarch_main_init_wrap(&args);
|
||||||
|
|
||||||
|
if (init_ret == 0)
|
||||||
|
{
|
||||||
|
RARCH_LOG("rarch_main_init succeeded.\n");
|
||||||
|
g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
RARCH_ERR("rarch_main_init failed.\n");
|
||||||
|
g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_extern.lifecycle_mode_state &= ~(1ULL << MODE_INIT);
|
||||||
|
}
|
||||||
else if(g_extern.lifecycle_mode_state & (1ULL << MODE_MENU))
|
else if(g_extern.lifecycle_mode_state & (1ULL << MODE_MENU))
|
||||||
{
|
{
|
||||||
g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_PREINIT);
|
g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_PREINIT);
|
||||||
while((input_key_pressed_func(RARCH_PAUSE_TOGGLE)) ?
|
while((input_key_pressed_func(RARCH_PAUSE_TOGGLE)) ?
|
||||||
android_run_events(android_app) : menu_iterate());
|
android_run_events(android_app) : menu_iterate());
|
||||||
|
|
||||||
g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU);
|
g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -245,11 +245,7 @@ rgui_handle_t *rgui_init(const char *base_path,
|
||||||
|
|
||||||
rgui->path_stack = rgui_list_new();
|
rgui->path_stack = rgui_list_new();
|
||||||
rgui->folder_buf = rgui_list_new();
|
rgui->folder_buf = rgui_list_new();
|
||||||
#ifdef RARCH_CONSOLE
|
|
||||||
rgui_list_push(rgui->path_stack, base_path, RGUI_FILE_DIRECTORY, 0);
|
rgui_list_push(rgui->path_stack, base_path, RGUI_FILE_DIRECTORY, 0);
|
||||||
#else
|
|
||||||
rgui_list_push(rgui->path_stack, base_path, RGUI_SETTINGS, 0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (font_bmp_buf)
|
if (font_bmp_buf)
|
||||||
init_font(rgui, font_bmp_buf);
|
init_font(rgui, font_bmp_buf);
|
||||||
|
|
Loading…
Reference in New Issue