mirror of
https://github.com/libretro/RetroArch.git
synced 2024-11-24 00:20:01 +00:00
Create RARCH_CTL_IS_INITED, RARCH_CTL_SET_INITED, RARCH_CTL_UNSET_INITED
This commit is contained in:
parent
5643b7d3d8
commit
01d58f8681
@ -200,7 +200,6 @@ bool main_load_content(int argc, char **argv, void *args,
|
|||||||
char *argv_copy [MAX_ARGS] = {NULL};
|
char *argv_copy [MAX_ARGS] = {NULL};
|
||||||
char **rarch_argv_ptr = (char**)argv;
|
char **rarch_argv_ptr = (char**)argv;
|
||||||
int *rarch_argc_ptr = (int*)&argc;
|
int *rarch_argc_ptr = (int*)&argc;
|
||||||
global_t *global = global_get_ptr();
|
|
||||||
struct rarch_main_wrap *wrap_args = (struct rarch_main_wrap*)
|
struct rarch_main_wrap *wrap_args = (struct rarch_main_wrap*)
|
||||||
calloc(1, sizeof(*wrap_args));
|
calloc(1, sizeof(*wrap_args));
|
||||||
|
|
||||||
@ -224,7 +223,7 @@ bool main_load_content(int argc, char **argv, void *args,
|
|||||||
rarch_argc_ptr = (int*)&rarch_argc;
|
rarch_argc_ptr = (int*)&rarch_argc;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (global->inited.main)
|
if (rarch_ctl(RARCH_CTL_IS_INITED, NULL))
|
||||||
rarch_main_deinit();
|
rarch_main_deinit();
|
||||||
|
|
||||||
if ((ret = rarch_main_init(*rarch_argc_ptr, rarch_argv_ptr)))
|
if ((ret = rarch_main_init(*rarch_argc_ptr, rarch_argv_ptr)))
|
||||||
|
@ -1325,7 +1325,7 @@ static int mui_list_push(void *data, void *userdata,
|
|||||||
case DISPLAYLIST_MAIN_MENU:
|
case DISPLAYLIST_MAIN_MENU:
|
||||||
menu_entries_clear(info->list);
|
menu_entries_clear(info->list);
|
||||||
|
|
||||||
if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY))
|
if (rarch_ctl(RARCH_CTL_IS_INITED, NULL) && (global->inited.core.type != CORE_TYPE_DUMMY))
|
||||||
menu_displaylist_parse_settings(menu, info,
|
menu_displaylist_parse_settings(menu, info,
|
||||||
menu_hash_to_str(MENU_LABEL_CONTENT_SETTINGS), PARSE_ACTION, false);
|
menu_hash_to_str(MENU_LABEL_CONTENT_SETTINGS), PARSE_ACTION, false);
|
||||||
|
|
||||||
|
@ -2568,7 +2568,7 @@ static int xmb_list_push(void *data, void *userdata, menu_displaylist_info_t *in
|
|||||||
case DISPLAYLIST_MAIN_MENU:
|
case DISPLAYLIST_MAIN_MENU:
|
||||||
menu_entries_clear(info->list);
|
menu_entries_clear(info->list);
|
||||||
|
|
||||||
if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY))
|
if (rarch_ctl(RARCH_CTL_IS_INITED, NULL) && (global->inited.core.type != CORE_TYPE_DUMMY))
|
||||||
menu_displaylist_parse_settings(menu, info,
|
menu_displaylist_parse_settings(menu, info,
|
||||||
menu_hash_to_str(MENU_LABEL_CONTENT_SETTINGS), PARSE_ACTION, false);
|
menu_hash_to_str(MENU_LABEL_CONTENT_SETTINGS), PARSE_ACTION, false);
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#include <gfx/math/matrix_4x4.h>
|
#include <gfx/math/matrix_4x4.h>
|
||||||
|
|
||||||
#include "../../config.def.h"
|
#include "../../config.def.h"
|
||||||
|
#include "../../content.h"
|
||||||
#include "../../gfx/font_driver.h"
|
#include "../../gfx/font_driver.h"
|
||||||
#include "../../gfx/video_context_driver.h"
|
#include "../../gfx/video_context_driver.h"
|
||||||
#include "../../gfx/d3d/d3d.h"
|
#include "../../gfx/d3d/d3d.h"
|
||||||
@ -199,7 +200,7 @@ static void menu_display_d3d_draw_bg(
|
|||||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_VIEWPORT, NULL);
|
menu_display_ctl(MENU_DISPLAY_CTL_SET_VIEWPORT, NULL);
|
||||||
|
|
||||||
if ((settings->menu.pause_libretro
|
if ((settings->menu.pause_libretro
|
||||||
|| !global->inited.main || (global->inited.core.type == CORE_TYPE_DUMMY))
|
|| !rarch_ctl(RARCH_CTL_IS_INITED, NULL) || (global->inited.core.type == CORE_TYPE_DUMMY))
|
||||||
&& !force_transparency
|
&& !force_transparency
|
||||||
&& texture)
|
&& texture)
|
||||||
coords.color = (const float*)coord_color2;
|
coords.color = (const float*)coord_color2;
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include <retro_miscellaneous.h>
|
#include <retro_miscellaneous.h>
|
||||||
|
|
||||||
#include "../../config.def.h"
|
#include "../../config.def.h"
|
||||||
|
#include "../../retroarch.h"
|
||||||
#include "../../gfx/font_driver.h"
|
#include "../../gfx/font_driver.h"
|
||||||
#include "../../gfx/video_context_driver.h"
|
#include "../../gfx/video_context_driver.h"
|
||||||
#include "../../gfx/video_shader_driver.h"
|
#include "../../gfx/video_shader_driver.h"
|
||||||
@ -165,7 +166,7 @@ static void menu_display_gl_draw_bg(
|
|||||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_VIEWPORT, NULL);
|
menu_display_ctl(MENU_DISPLAY_CTL_SET_VIEWPORT, NULL);
|
||||||
|
|
||||||
if ((settings->menu.pause_libretro
|
if ((settings->menu.pause_libretro
|
||||||
|| !global->inited.main || (global->inited.core.type == CORE_TYPE_DUMMY))
|
|| !rarch_ctl(RARCH_CTL_IS_INITED, NULL) || (global->inited.core.type == CORE_TYPE_DUMMY))
|
||||||
&& !force_transparency
|
&& !force_transparency
|
||||||
&& texture)
|
&& texture)
|
||||||
coords.color = (const float*)coord_color2;
|
coords.color = (const float*)coord_color2;
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include <formats/image.h>
|
#include <formats/image.h>
|
||||||
|
|
||||||
#include "../config.def.h"
|
#include "../config.def.h"
|
||||||
|
#include "../retroarch.h"
|
||||||
#include "../configuration.h"
|
#include "../configuration.h"
|
||||||
#include "../runloop.h"
|
#include "../runloop.h"
|
||||||
#include "../gfx/video_thread_wrapper.h"
|
#include "../gfx/video_thread_wrapper.h"
|
||||||
@ -308,7 +309,7 @@ bool menu_display_ctl(enum menu_display_ctl_state state, void *data)
|
|||||||
{
|
{
|
||||||
global_t *global = global_get_ptr();
|
global_t *global = global_get_ptr();
|
||||||
if (!settings->menu.pause_libretro)
|
if (!settings->menu.pause_libretro)
|
||||||
if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY))
|
if (rarch_ctl(RARCH_CTL_IS_INITED, NULL) && (global->inited.core.type != CORE_TYPE_DUMMY))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1721,7 +1721,7 @@ static int menu_displaylist_parse_load_content_settings(menu_displaylist_info_t
|
|||||||
if (!menu)
|
if (!menu)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY))
|
if (rarch_ctl(RARCH_CTL_IS_INITED, NULL) && (global->inited.core.type != CORE_TYPE_DUMMY))
|
||||||
{
|
{
|
||||||
rarch_system_info_t *system = NULL;
|
rarch_system_info_t *system = NULL;
|
||||||
|
|
||||||
@ -1819,7 +1819,7 @@ static int menu_displaylist_parse_horizontal_content_actions(menu_displaylist_in
|
|||||||
|
|
||||||
runloop_ctl(RUNLOOP_CTL_GET_CONTENT_PATH, &fullpath);
|
runloop_ctl(RUNLOOP_CTL_GET_CONTENT_PATH, &fullpath);
|
||||||
|
|
||||||
if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY)
|
if (rarch_ctl(RARCH_CTL_IS_INITED, NULL) && (global->inited.core.type != CORE_TYPE_DUMMY)
|
||||||
&& !strcmp(menu->deferred_path, fullpath))
|
&& !strcmp(menu->deferred_path, fullpath))
|
||||||
menu_displaylist_parse_load_content_settings(info);
|
menu_displaylist_parse_load_content_settings(info);
|
||||||
else
|
else
|
||||||
@ -2599,7 +2599,7 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type)
|
|||||||
info->need_push = true;
|
info->need_push = true;
|
||||||
break;
|
break;
|
||||||
case DISPLAYLIST_MAIN_MENU:
|
case DISPLAYLIST_MAIN_MENU:
|
||||||
if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY))
|
if (rarch_ctl(RARCH_CTL_IS_INITED, NULL) && (global->inited.core.type != CORE_TYPE_DUMMY))
|
||||||
menu_displaylist_parse_settings(menu, info,
|
menu_displaylist_parse_settings(menu, info,
|
||||||
menu_hash_to_str(MENU_LABEL_CONTENT_SETTINGS), PARSE_ACTION, false);
|
menu_hash_to_str(MENU_LABEL_CONTENT_SETTINGS), PARSE_ACTION, false);
|
||||||
|
|
||||||
|
19
retroarch.c
19
retroarch.c
@ -1198,13 +1198,12 @@ int rarch_main_init(int argc, char *argv[])
|
|||||||
event_command(EVENT_CMD_SET_PER_GAME_RESOLUTION);
|
event_command(EVENT_CMD_SET_PER_GAME_RESOLUTION);
|
||||||
|
|
||||||
rarch_ctl(RARCH_CTL_UNSET_ERROR_ON_INIT, NULL);
|
rarch_ctl(RARCH_CTL_UNSET_ERROR_ON_INIT, NULL);
|
||||||
global->inited.main = true;
|
rarch_ctl(RARCH_CTL_SET_INITED, NULL);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
event_command(EVENT_CMD_CORE_DEINIT);
|
event_command(EVENT_CMD_CORE_DEINIT);
|
||||||
|
rarch_ctl(RARCH_CTL_UNSET_INITED, NULL);
|
||||||
global->inited.main = false;
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1285,6 +1284,7 @@ void rarch_main_init_wrap(const struct rarch_main_wrap *args,
|
|||||||
|
|
||||||
bool rarch_ctl(enum rarch_ctl_state state, void *data)
|
bool rarch_ctl(enum rarch_ctl_state state, void *data)
|
||||||
{
|
{
|
||||||
|
static bool rarch_is_inited = false;
|
||||||
static bool rarch_error_on_init = false;
|
static bool rarch_error_on_init = false;
|
||||||
static bool rarch_block_config_read = false;
|
static bool rarch_block_config_read = false;
|
||||||
static bool rarch_force_fullscreen = false;
|
static bool rarch_force_fullscreen = false;
|
||||||
@ -1293,7 +1293,16 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data)
|
|||||||
|
|
||||||
switch(state)
|
switch(state)
|
||||||
{
|
{
|
||||||
|
case RARCH_CTL_IS_INITED:
|
||||||
|
return rarch_is_inited;
|
||||||
|
case RARCH_CTL_UNSET_INITED:
|
||||||
|
rarch_is_inited = false;
|
||||||
|
break;
|
||||||
|
case RARCH_CTL_SET_INITED:
|
||||||
|
rarch_is_inited = true;
|
||||||
|
break;
|
||||||
case RARCH_CTL_DESTROY:
|
case RARCH_CTL_DESTROY:
|
||||||
|
rarch_is_inited = false;
|
||||||
rarch_error_on_init = false;
|
rarch_error_on_init = false;
|
||||||
rarch_block_config_read = false;
|
rarch_block_config_read = false;
|
||||||
rarch_force_fullscreen = false;
|
rarch_force_fullscreen = false;
|
||||||
@ -1312,7 +1321,7 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data)
|
|||||||
bool inited = false;
|
bool inited = false;
|
||||||
if (!global)
|
if (!global)
|
||||||
return false;
|
return false;
|
||||||
inited = global->inited.main;
|
inited = rarch_ctl(RARCH_CTL_IS_INITED, NULL);
|
||||||
if (!inited)
|
if (!inited)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -1522,7 +1531,7 @@ void rarch_main_deinit(void)
|
|||||||
event_command(EVENT_CMD_SUBSYSTEM_FULLPATHS_DEINIT);
|
event_command(EVENT_CMD_SUBSYSTEM_FULLPATHS_DEINIT);
|
||||||
event_command(EVENT_CMD_SAVEFILES_DEINIT);
|
event_command(EVENT_CMD_SAVEFILES_DEINIT);
|
||||||
|
|
||||||
global->inited.main = false;
|
rarch_ctl(RARCH_CTL_UNSET_INITED, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -61,6 +61,12 @@ enum rarch_ctl_state
|
|||||||
/* Initialize all drivers. */
|
/* Initialize all drivers. */
|
||||||
RARCH_CTL_INIT,
|
RARCH_CTL_INIT,
|
||||||
|
|
||||||
|
RARCH_CTL_UNSET_INITED,
|
||||||
|
|
||||||
|
RARCH_CTL_SET_INITED,
|
||||||
|
|
||||||
|
RARCH_CTL_IS_INITED,
|
||||||
|
|
||||||
RARCH_CTL_PREINIT,
|
RARCH_CTL_PREINIT,
|
||||||
|
|
||||||
RARCH_CTL_DESTROY,
|
RARCH_CTL_DESTROY,
|
||||||
|
@ -1331,7 +1331,7 @@ int runloop_iterate(unsigned *sleep_ms)
|
|||||||
{
|
{
|
||||||
if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
|
if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
|
||||||
{
|
{
|
||||||
if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY))
|
if (rarch_ctl(RARCH_CTL_IS_INITED, NULL) && (global->inited.core.type != CORE_TYPE_DUMMY))
|
||||||
rarch_ctl(RARCH_CTL_MENU_RUNNING_FINISHED, NULL);
|
rarch_ctl(RARCH_CTL_MENU_RUNNING_FINISHED, NULL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -284,7 +284,6 @@ typedef struct global
|
|||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
bool main;
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
enum rarch_core_type type;
|
enum rarch_core_type type;
|
||||||
|
@ -246,9 +246,8 @@ static void poll_iteration(void)
|
|||||||
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
|
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
|
||||||
{
|
{
|
||||||
NSApplicationTerminateReply reply = NSTerminateNow;
|
NSApplicationTerminateReply reply = NSTerminateNow;
|
||||||
global_t *global = global_get_ptr();
|
|
||||||
|
|
||||||
if (global && global->inited.main)
|
if (rarch_ctl(RARCH_CTL_IS_INITED, NULL))
|
||||||
reply = NSTerminateCancel;
|
reply = NSTerminateCancel;
|
||||||
|
|
||||||
ui_companion_event_command(EVENT_CMD_QUIT);
|
ui_companion_event_command(EVENT_CMD_QUIT);
|
||||||
|
Loading…
Reference in New Issue
Block a user