- Add RARCH_CMD_CORE_INIT
- Change returntype of rarch_main_command to bool to indicate success or failure at performing action - used by RARCH_CMD_CORE_INIT
This commit is contained in:
parent
2ba246bbb4
commit
dda84be1ac
|
@ -123,6 +123,7 @@ enum basic_event
|
||||||
RARCH_CMD_CORE_INFO_DEINIT,
|
RARCH_CMD_CORE_INFO_DEINIT,
|
||||||
RARCH_CMD_CORE_INFO_INIT,
|
RARCH_CMD_CORE_INFO_INIT,
|
||||||
RARCH_CMD_CORE_DEINIT,
|
RARCH_CMD_CORE_DEINIT,
|
||||||
|
RARCH_CMD_CORE_INIT,
|
||||||
RARCH_CMD_AUDIO_SET_BLOCKING_STATE,
|
RARCH_CMD_AUDIO_SET_BLOCKING_STATE,
|
||||||
RARCH_CMD_AUDIO_SET_NONBLOCKING_STATE,
|
RARCH_CMD_AUDIO_SET_NONBLOCKING_STATE,
|
||||||
RARCH_CMD_VIDEO_APPLY_STATE_CHANGES,
|
RARCH_CMD_VIDEO_APPLY_STATE_CHANGES,
|
||||||
|
@ -812,7 +813,7 @@ void rarch_main_init_wrap(const struct rarch_main_wrap *args,
|
||||||
int *argc, char **argv);
|
int *argc, char **argv);
|
||||||
int rarch_main_init(int argc, char *argv[]);
|
int rarch_main_init(int argc, char *argv[]);
|
||||||
void rarch_main_set_state(unsigned action);
|
void rarch_main_set_state(unsigned action);
|
||||||
void rarch_main_command(unsigned action);
|
bool rarch_main_command(unsigned action);
|
||||||
int rarch_main_iterate(void);
|
int rarch_main_iterate(void);
|
||||||
void rarch_main_deinit(void);
|
void rarch_main_deinit(void);
|
||||||
void rarch_render_cached_frame(void);
|
void rarch_render_cached_frame(void);
|
||||||
|
|
114
retroarch.c
114
retroarch.c
|
@ -1832,12 +1832,6 @@ static void init_system_info(void)
|
||||||
g_extern.system.block_extract = info->block_extract;
|
g_extern.system.block_extract = info->block_extract;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void init_system_av_info(void)
|
|
||||||
{
|
|
||||||
pretro_get_system_av_info(&g_extern.system.av_info);
|
|
||||||
g_extern.frame_limit.last_frame_time = rarch_get_time_usec();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void verify_api_version(void)
|
static void verify_api_version(void)
|
||||||
{
|
{
|
||||||
/* TODO - when libretro v2 gets added, allow for switching
|
/* TODO - when libretro v2 gets added, allow for switching
|
||||||
|
@ -1876,6 +1870,12 @@ static void validate_cpu_features(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void init_system_av_info(void)
|
||||||
|
{
|
||||||
|
pretro_get_system_av_info(&g_extern.system.av_info);
|
||||||
|
g_extern.frame_limit.last_frame_time = rarch_get_time_usec();
|
||||||
|
}
|
||||||
|
|
||||||
static void deinit_core(void)
|
static void deinit_core(void)
|
||||||
{
|
{
|
||||||
pretro_unload_game();
|
pretro_unload_game();
|
||||||
|
@ -1886,6 +1886,48 @@ static void deinit_core(void)
|
||||||
uninit_libretro_sym();
|
uninit_libretro_sym();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns:
|
||||||
|
* 0 - success
|
||||||
|
* 1 - error
|
||||||
|
*/
|
||||||
|
static bool init_core(void)
|
||||||
|
{
|
||||||
|
verify_api_version();
|
||||||
|
pretro_init();
|
||||||
|
|
||||||
|
g_extern.use_sram = !g_extern.libretro_dummy &&
|
||||||
|
!g_extern.libretro_no_content;
|
||||||
|
|
||||||
|
if (g_extern.libretro_no_content && !g_extern.libretro_dummy)
|
||||||
|
{
|
||||||
|
if (!init_content_file())
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (!g_extern.libretro_dummy)
|
||||||
|
{
|
||||||
|
rarch_main_command(RARCH_CMD_SAVEFILES_INIT);
|
||||||
|
|
||||||
|
if (!init_content_file())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
set_savestate_auto_index();
|
||||||
|
|
||||||
|
if (load_save_files())
|
||||||
|
RARCH_LOG("Skipping SRAM load.\n");
|
||||||
|
|
||||||
|
load_auto_state();
|
||||||
|
|
||||||
|
rarch_main_command(RARCH_CMD_BSV_MOVIE_INIT);
|
||||||
|
rarch_main_command(RARCH_CMD_NETPLAY_INIT);
|
||||||
|
}
|
||||||
|
|
||||||
|
retro_init_libretro_cbs(&driver.retro_ctx);
|
||||||
|
init_system_av_info();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
int rarch_main_init(int argc, char *argv[])
|
int rarch_main_init(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int sjlj_ret;
|
int sjlj_ret;
|
||||||
|
@ -1919,37 +1961,8 @@ int rarch_main_init(int argc, char *argv[])
|
||||||
|
|
||||||
init_drivers_pre();
|
init_drivers_pre();
|
||||||
|
|
||||||
verify_api_version();
|
if (!rarch_main_command(RARCH_CMD_CORE_INIT))
|
||||||
pretro_init();
|
|
||||||
|
|
||||||
g_extern.use_sram = !g_extern.libretro_dummy &&
|
|
||||||
!g_extern.libretro_no_content;
|
|
||||||
|
|
||||||
if (g_extern.libretro_no_content && !g_extern.libretro_dummy)
|
|
||||||
{
|
|
||||||
if (!init_content_file())
|
|
||||||
goto error;
|
goto error;
|
||||||
}
|
|
||||||
else if (!g_extern.libretro_dummy)
|
|
||||||
{
|
|
||||||
rarch_main_command(RARCH_CMD_SAVEFILES_INIT);
|
|
||||||
|
|
||||||
if (!init_content_file())
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
set_savestate_auto_index();
|
|
||||||
|
|
||||||
if (load_save_files())
|
|
||||||
RARCH_LOG("Skipping SRAM load.\n");
|
|
||||||
|
|
||||||
load_auto_state();
|
|
||||||
|
|
||||||
rarch_main_command(RARCH_CMD_BSV_MOVIE_INIT);
|
|
||||||
rarch_main_command(RARCH_CMD_NETPLAY_INIT);
|
|
||||||
}
|
|
||||||
|
|
||||||
retro_init_libretro_cbs(&driver.retro_ctx);
|
|
||||||
init_system_av_info();
|
|
||||||
|
|
||||||
rarch_main_command(RARCH_CMD_DRIVERS_INIT);
|
rarch_main_command(RARCH_CMD_DRIVERS_INIT);
|
||||||
rarch_main_command(RARCH_CMD_COMMAND_INIT);
|
rarch_main_command(RARCH_CMD_COMMAND_INIT);
|
||||||
|
@ -2134,7 +2147,7 @@ static void history_playlist_new(void)
|
||||||
g_settings.content_history_size);
|
g_settings.content_history_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rarch_main_command(unsigned cmd)
|
bool rarch_main_command(unsigned cmd)
|
||||||
{
|
{
|
||||||
bool boolean = false;
|
bool boolean = false;
|
||||||
|
|
||||||
|
@ -2163,11 +2176,11 @@ void rarch_main_command(unsigned cmd)
|
||||||
/* Immutable - disallow savestate load when
|
/* Immutable - disallow savestate load when
|
||||||
* we absolutely cannot change game state. */
|
* we absolutely cannot change game state. */
|
||||||
if (g_extern.bsv.movie)
|
if (g_extern.bsv.movie)
|
||||||
return;
|
return false;
|
||||||
|
|
||||||
#ifdef HAVE_NETPLAY
|
#ifdef HAVE_NETPLAY
|
||||||
if (driver.netplay_data)
|
if (driver.netplay_data)
|
||||||
return;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
main_state(cmd);
|
main_state(cmd);
|
||||||
break;
|
break;
|
||||||
|
@ -2229,7 +2242,7 @@ void rarch_main_command(unsigned cmd)
|
||||||
case RARCH_CMD_REWIND_DEINIT:
|
case RARCH_CMD_REWIND_DEINIT:
|
||||||
#ifdef HAVE_NETPLAY
|
#ifdef HAVE_NETPLAY
|
||||||
if (driver.netplay_data)
|
if (driver.netplay_data)
|
||||||
return;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
if (g_extern.state_manager)
|
if (g_extern.state_manager)
|
||||||
state_manager_free(g_extern.state_manager);
|
state_manager_free(g_extern.state_manager);
|
||||||
|
@ -2260,18 +2273,17 @@ void rarch_main_command(unsigned cmd)
|
||||||
break;
|
break;
|
||||||
case RARCH_CMD_AUDIO_STOP:
|
case RARCH_CMD_AUDIO_STOP:
|
||||||
if (!driver.audio_data)
|
if (!driver.audio_data)
|
||||||
return;
|
return false;
|
||||||
if (!driver.audio->alive(driver.audio_data))
|
if (!driver.audio->alive(driver.audio_data))
|
||||||
return;
|
return false;
|
||||||
|
|
||||||
driver.audio->stop(driver.audio_data);
|
driver.audio->stop(driver.audio_data);
|
||||||
break;
|
break;
|
||||||
case RARCH_CMD_AUDIO_START:
|
case RARCH_CMD_AUDIO_START:
|
||||||
if (!driver.audio_data)
|
if (!driver.audio_data)
|
||||||
return;
|
return false;
|
||||||
|
|
||||||
if (driver.audio->alive(driver.audio_data))
|
if (driver.audio->alive(driver.audio_data))
|
||||||
return;
|
return false;
|
||||||
|
|
||||||
if (!g_extern.audio_data.mute
|
if (!g_extern.audio_data.mute
|
||||||
&& !driver.audio->start(driver.audio_data))
|
&& !driver.audio->start(driver.audio_data))
|
||||||
|
@ -2325,7 +2337,7 @@ void rarch_main_command(unsigned cmd)
|
||||||
break;
|
break;
|
||||||
case RARCH_CMD_RECORD_DEINIT:
|
case RARCH_CMD_RECORD_DEINIT:
|
||||||
if (!driver.recording_data || !driver.recording)
|
if (!driver.recording_data || !driver.recording)
|
||||||
return;
|
return false;
|
||||||
|
|
||||||
if (driver.recording->finalize)
|
if (driver.recording->finalize)
|
||||||
driver.recording->finalize(driver.recording_data);
|
driver.recording->finalize(driver.recording_data);
|
||||||
|
@ -2372,6 +2384,10 @@ void rarch_main_command(unsigned cmd)
|
||||||
case RARCH_CMD_CORE_DEINIT:
|
case RARCH_CMD_CORE_DEINIT:
|
||||||
deinit_core();
|
deinit_core();
|
||||||
break;
|
break;
|
||||||
|
case RARCH_CMD_CORE_INIT:
|
||||||
|
if (!init_core())
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
case RARCH_CMD_VIDEO_APPLY_STATE_CHANGES:
|
case RARCH_CMD_VIDEO_APPLY_STATE_CHANGES:
|
||||||
if (driver.video_data && driver.video_poke
|
if (driver.video_data && driver.video_poke
|
||||||
&& driver.video_poke->apply_state_changes)
|
&& driver.video_poke->apply_state_changes)
|
||||||
|
@ -2464,7 +2480,7 @@ void rarch_main_command(unsigned cmd)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
if (!*g_settings.video.shader_dir)
|
if (!*g_settings.video.shader_dir)
|
||||||
return;
|
return false;
|
||||||
|
|
||||||
g_extern.shader_dir.list = dir_list_new(g_settings.video.shader_dir,
|
g_extern.shader_dir.list = dir_list_new(g_settings.video.shader_dir,
|
||||||
"cg|cgp|glsl|glslp", false);
|
"cg|cgp|glsl|glslp", false);
|
||||||
|
@ -2472,7 +2488,7 @@ void rarch_main_command(unsigned cmd)
|
||||||
if (!g_extern.shader_dir.list || g_extern.shader_dir.list->size == 0)
|
if (!g_extern.shader_dir.list || g_extern.shader_dir.list->size == 0)
|
||||||
{
|
{
|
||||||
rarch_main_command(RARCH_CMD_SHADER_DIR_DEINIT);
|
rarch_main_command(RARCH_CMD_SHADER_DIR_DEINIT);
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_extern.shader_dir.ptr = 0;
|
g_extern.shader_dir.ptr = 0;
|
||||||
|
@ -2602,6 +2618,8 @@ void rarch_main_command(unsigned cmd)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void rarch_main_deinit(void)
|
void rarch_main_deinit(void)
|
||||||
|
|
Loading…
Reference in New Issue