mirror of
https://github.com/libretro/RetroArch
synced 2025-03-01 07:13:35 +00:00
Refactor overlay init/free
This commit is contained in:
parent
53ae4cd72c
commit
7d4b6b23c5
21
driver.c
21
driver.c
@ -1197,18 +1197,8 @@ void init_video_input(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_OVERLAY
|
#ifdef HAVE_OVERLAY
|
||||||
if (driver.overlay)
|
rarch_main_command(RARCH_CMD_OVERLAY_FREE);
|
||||||
{
|
rarch_main_command(RARCH_CMD_OVERLAY_INIT);
|
||||||
input_overlay_free(driver.overlay);
|
|
||||||
driver.overlay = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*g_settings.input.overlay)
|
|
||||||
{
|
|
||||||
driver.overlay = input_overlay_new(g_settings.input.overlay);
|
|
||||||
if (!driver.overlay)
|
|
||||||
RARCH_ERR("Failed to load overlay.\n");
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
g_extern.measure_data.frame_time_samples_count = 0;
|
g_extern.measure_data.frame_time_samples_count = 0;
|
||||||
@ -1217,12 +1207,7 @@ void init_video_input(void)
|
|||||||
void uninit_video_input(void)
|
void uninit_video_input(void)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_OVERLAY
|
#ifdef HAVE_OVERLAY
|
||||||
if (driver.overlay)
|
rarch_main_command(RARCH_CMD_OVERLAY_FREE);
|
||||||
{
|
|
||||||
input_overlay_free(driver.overlay);
|
|
||||||
driver.overlay = NULL;
|
|
||||||
memset(&driver.overlay_state, 0, sizeof(driver.overlay_state));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!driver.input_data_own && driver.input_data != driver.video_data && driver.input && driver.input->free)
|
if (!driver.input_data_own && driver.input_data != driver.video_data && driver.input && driver.input->free)
|
||||||
|
@ -3704,9 +3704,7 @@ static int menu_common_setting_set(unsigned setting, unsigned action)
|
|||||||
menu_common_setting_push_current_menu(driver.menu->menu_stack, g_extern.overlay_dir, setting, driver.menu->selection_ptr, action);
|
menu_common_setting_push_current_menu(driver.menu->menu_stack, g_extern.overlay_dir, setting, driver.menu->selection_ptr, action);
|
||||||
break;
|
break;
|
||||||
case MENU_ACTION_START:
|
case MENU_ACTION_START:
|
||||||
if (driver.overlay)
|
rarch_main_command(RARCH_CMD_OVERLAY_FREE);
|
||||||
input_overlay_free(driver.overlay);
|
|
||||||
driver.overlay = NULL;
|
|
||||||
*g_settings.input.overlay = '\0';
|
*g_settings.input.overlay = '\0';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -104,6 +104,8 @@ enum basic_event
|
|||||||
RARCH_CMD_AUTOSAVE,
|
RARCH_CMD_AUTOSAVE,
|
||||||
RARCH_CMD_AUDIO_STOP,
|
RARCH_CMD_AUDIO_STOP,
|
||||||
RARCH_CMD_AUDIO_START,
|
RARCH_CMD_AUDIO_START,
|
||||||
|
RARCH_CMD_OVERLAY_INIT,
|
||||||
|
RARCH_CMD_OVERLAY_FREE,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum menu_enums
|
enum menu_enums
|
||||||
|
18
retroarch.c
18
retroarch.c
@ -3211,6 +3211,24 @@ void rarch_main_command(unsigned action)
|
|||||||
g_extern.audio_active = false;
|
g_extern.audio_active = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case RARCH_CMD_OVERLAY_INIT:
|
||||||
|
#ifdef HAVE_OVERLAY
|
||||||
|
if (*g_settings.input.overlay && g_settings.input.overlay[0] != '\0')
|
||||||
|
{
|
||||||
|
driver.overlay = input_overlay_new(g_settings.input.overlay);
|
||||||
|
if (!driver.overlay)
|
||||||
|
RARCH_ERR("Failed to load overlay.\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
case RARCH_CMD_OVERLAY_FREE:
|
||||||
|
#ifdef HAVE_OVERLAY
|
||||||
|
if (driver.overlay)
|
||||||
|
input_overlay_free(driver.overlay);
|
||||||
|
driver.overlay = NULL;
|
||||||
|
memset(&driver.overlay_state, 0, sizeof(driver.overlay_state));
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -977,9 +977,11 @@ static void general_read_handler(const void *data)
|
|||||||
|
|
||||||
static void general_write_handler(const void *data)
|
static void general_write_handler(const void *data)
|
||||||
{
|
{
|
||||||
bool has_set_reinit = false;
|
bool has_set_reinit = false;
|
||||||
bool has_set_rewind = false;
|
bool has_set_rewind = false;
|
||||||
bool has_set_autosave = false;
|
bool has_set_autosave = false;
|
||||||
|
bool has_set_overlay_init = false;
|
||||||
|
bool has_set_overlay_free = false;
|
||||||
const rarch_setting_t *setting = (const rarch_setting_t*)data;
|
const rarch_setting_t *setting = (const rarch_setting_t*)data;
|
||||||
|
|
||||||
if (!setting)
|
if (!setting)
|
||||||
@ -1144,11 +1146,8 @@ static void general_write_handler(const void *data)
|
|||||||
{
|
{
|
||||||
strlcpy(g_settings.input.overlay, setting->value.string, sizeof(g_settings.input.overlay));
|
strlcpy(g_settings.input.overlay, setting->value.string, sizeof(g_settings.input.overlay));
|
||||||
|
|
||||||
if (driver.overlay)
|
has_set_overlay_free = false;
|
||||||
input_overlay_free(driver.overlay);
|
has_set_overlay_init = true;
|
||||||
|
|
||||||
if (g_settings.input.overlay && g_settings.input.overlay[0] != '\0')
|
|
||||||
driver.overlay = input_overlay_new(g_settings.input.overlay);
|
|
||||||
}
|
}
|
||||||
else if (!strcmp(setting->name, "input_overlay_scale"))
|
else if (!strcmp(setting->name, "input_overlay_scale"))
|
||||||
{
|
{
|
||||||
@ -1338,6 +1337,10 @@ static void general_write_handler(const void *data)
|
|||||||
rarch_main_command(RARCH_CMD_REWIND);
|
rarch_main_command(RARCH_CMD_REWIND);
|
||||||
if (has_set_autosave)
|
if (has_set_autosave)
|
||||||
rarch_main_command(RARCH_CMD_AUTOSAVE);
|
rarch_main_command(RARCH_CMD_AUTOSAVE);
|
||||||
|
if (has_set_overlay_free)
|
||||||
|
rarch_main_command(RARCH_CMD_OVERLAY_FREE);
|
||||||
|
if (has_set_overlay_init)
|
||||||
|
rarch_main_command(RARCH_CMD_OVERLAY_INIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define NEXT (list[index++])
|
#define NEXT (list[index++])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user